VYPR
Low severityNVD Advisory· Published Jul 17, 2012· Updated Apr 29, 2026

CVE-2012-3371

CVE-2012-3371

Description

The Nova scheduler in OpenStack Compute (Nova) Folsom (2012.2) and Essex (2012.1), when DifferentHostFilter or SameHostFilter is enabled, allows remote authenticated users to cause a denial of service (excessive database lookup calls and server hang) via a request with many repeated IDs in the os:scheduler_hints section.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
NovaPyPI
< 12.0.0a012.0.0a0

Affected products

3

Patches

1
034762e8060d

Use compute_api.get_all in affinity filters.

https://github.com/openstack/novaDan PrinceJun 26, 2012via ghsa
1 file changed · +9 4
  • nova/scheduler/filters/affinity_filter.py+9 4 modified
    @@ -25,8 +25,11 @@ class AffinityFilter(filters.BaseHostFilter):
         def __init__(self):
             self.compute_api = compute.API()
     
    -    def _affinity_host(self, context, instance_id):
    -        return self.compute_api.get(context, instance_id)['host']
    +    def _all_hosts(self, context):
    +        all_hosts = {}
    +        for instance in self.compute_api.get_all(context):
    +            all_hosts[instance['uuid']] = instance['host']
    +        return all_hosts
     
     
     class DifferentHostFilter(AffinityFilter):
    @@ -41,8 +44,9 @@ def host_passes(self, host_state, filter_properties):
             if isinstance(affinity_uuids, basestring):
                 affinity_uuids = [affinity_uuids]
             if affinity_uuids:
    +            all_hosts = self._all_hosts(context)
                 return not any([i for i in affinity_uuids
    -                              if self._affinity_host(context, i) == me])
    +                              if all_hosts.get(i) == me])
             # With no different_host key
             return True
     
    @@ -61,9 +65,10 @@ def host_passes(self, host_state, filter_properties):
             if isinstance(affinity_uuids, basestring):
                 affinity_uuids = [affinity_uuids]
             if affinity_uuids:
    +            all_hosts = self._all_hosts(context)
                 return any([i for i
                               in affinity_uuids
    -                          if self._affinity_host(context, i) == me])
    +                          if all_hosts.get(i) == me])
             # With no same_host key
             return True
     
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

9

News mentions

0

No linked articles in our index yet.