Firewall groups are not ordered on port associations
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Security Advisory |
Won't Fix
|
Undecided
|
Unassigned | ||
neutron |
New
|
Undecided
|
Unassigned |
Bug Description
Neutron allows multiple firewall groups to be attached to ports:
MariaDB [neutron]> describe firewall_
+------
| Field | Type | Null | Key | Default | Extra |
+------
| firewall_group_id | varchar(36) | YES | MUL | NULL | |
| port_id | varchar(36) | YES | UNI | NULL | |
+------
2 rows in set (0.001 sec)
However, these associations are not ordered.
We have a use-case where we'd like to define a shared firewall group that tenants can apply in their environments, then add their own, private firewall group above the shared group.
For example, suppose we have an admin owned shared group that allows some RFC1918 space, denies all other RFC1918 networks, then passes all other traffic. A tenant should be able to apply this group, then put their own group above it to allow additional RFC1918 space.
Currently, the group associations will shift on association, so the private group can get popped to below the shared group, effectively blocking traffic that should be allowed.
This can also be a security vulnerability, as the shifting of firewall groups and reordering of rules could easily allow traffic that was previously denied.
Firewall group port associations should be ordered so that the combined ruleset on a port is evaluated in the desired order.
Changed in ossa: | |
status: | New → Incomplete |
description: | updated |
information type: | Private Security → Public Security |
Just to be clear, this is talking about the neutron-fwaas component, correct?
When the v2 of the API was created, it actually talks about this specific issue in the "Multiple Firewall Policies" section:
https:/ /specs. openstack. org/openstack/ neutron- specs/specs/ newton/ fwaas-api- 2.0.html
That said, I can see how there's the possibility that something could get dropped based on how things are created.
But how can something be allowed and create a security vulnerability? If you have created a group/rule that allows a packet to pass but the ordering disallows it (by accident), but a restart somehow shifts the order to then allow it, that doesn't seem like a bug. In this case you did want to let the packet through and it just wasn't happening in some circumstances. Can you outline a case where rules were mis-applied? Maybe I'm mis-understanding.