Fetching metadata via LB may result with wrong instance data
Bug #1841933 reported by
Kobi Samoray
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
Undecided
|
Kobi Samoray | ||
OpenStack Security Advisory |
Won't Fix
|
Undecided
|
Unassigned |
Bug Description
While querying metadata from an instance via a loadbalancer, metadata service relies on X-Metadata-Provider to identify the correct instance by querying Neutron for subnets which are attached to the loadbalancer.
Then the subnet result is used to identify the instance by querying for ports which are attached to the subnets above.
Yet, when the first query result is empty due to deletion, bug or any other reason within the Neutron side, this may cause a security vulnerability, as Neutron will retrieve ports of _any_ instance which has the same IP address as the instance which is queried.
That could compromise key pairs and other sensitive data.
Changed in nova: | |
assignee: | nobody → Kobi Samoray (ksamoray) |
Changed in nova: | |
status: | New → In Progress |
description: | updated |
Changed in nova: | |
assignee: | Kobi Samoray (ksamoray) → Adit Sarfaty (asarfaty) |
Changed in nova: | |
assignee: | Adit Sarfaty (asarfaty) → Kobi Samoray (ksamoray) |
Changed in nova: | |
assignee: | Kobi Samoray (ksamoray) → Adit Sarfaty (asarfaty) |
Changed in nova: | |
assignee: | Adit Sarfaty (asarfaty) → Kobi Samoray (ksamoray) |
To post a comment you must log in.
Since this report concerns a possible security risk, an incomplete security advisory task has been added while the core security reviewers for the affected project or projects confirm the bug and discuss the scope of any vulnerability along with potential solutions.
I'm curious, how would an attacker go about obtaining an instance with an IP address which had no record in the metadata server? You mention deletion specifically as a way to trigger this, but what does the exploit scenario look like in detail (steps to reproduce)?
I guess this is specifically an issue with RFC 1918 private and/or IPv6 linklocal type addresses, which could exist in on multiple networks in different tenants? Less so with global addressing where the environment will attempt to prevent more than one instance/interface having the same address.