Description
In the Linux kernel, the following vulnerability has been resolved: net: bridge: fix use-after-free due to MST port state bypass syzbot reported[1] a use-after-free when deleting an expired fdb. It is due to a race condition between learning still happening and a port being deleted, after all its fdbs have been flushed. The port's state has been toggled to disabled so no learning should happen at that time, but if we have MST enabled, it will bypass the port's state, that together with VLAN filtering disabled can lead to fdb learning at a time when it shouldn't happen while the port is being deleted. VLAN filtering must be disabled because we flush the port VLANs when it's being deleted which will stop learning. This fix adds a check for the port's vlan group which is initialized to NULL when the port is getting deleted, that avoids the port state bypass. When MST is enabled there would be a minimal new overhead in the fast-path because the port's vlan group pointer is cache-hot. [1] https://syzkaller.appspot.com/bug?extid=dd280197f0f7ab3917be
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
ec7328b59176227216c461601c6bd0e922232a9b to < e19085b2a86addccff33ab8536fc67ebd9d52198affectedec7328b59176227216c461601c6bd0e922232a9b to < 3b60ce334c1ce8b3fad7e02dcd5ed9f6646477c8affectedec7328b59176227216c461601c6bd0e922232a9b to < bf3843183bc3158e5821b46f330c438ae9bd6ddbaffectedec7328b59176227216c461601c6bd0e922232a9b to < 991fbe1680cd41a5f97c92cd3a3496315df36e4baffectedec7328b59176227216c461601c6bd0e922232a9b to < 8dca36978aa80bab9d4da130c211db75c9e00048affected
Linux Linux
Default version status: affected
5.18affected0 to < 5.18unaffected6.1.159 to ≤ 6.1.*unaffected6.6.117 to ≤ 6.6.*unaffected6.12.58 to ≤ 6.12.*unaffected6.17.8 to ≤ 6.17.*unaffected6.18 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/e19085b2a86addccff33ab8536fc67ebd9d52198 ↗
- https://git.kernel.org/stable/c/3b60ce334c1ce8b3fad7e02dcd5ed9f6646477c8 ↗
- https://git.kernel.org/stable/c/bf3843183bc3158e5821b46f330c438ae9bd6ddb ↗
- https://git.kernel.org/stable/c/991fbe1680cd41a5f97c92cd3a3496315df36e4b ↗
- https://git.kernel.org/stable/c/8dca36978aa80bab9d4da130c211db75c9e00048 ↗