Description
In the Linux kernel, the following vulnerability has been resolved: gtp: serialize PDP context updates PDP contexts can be deleted through GTP_CMD_DELPDP or while the GTP network device is being unregistered. The latter is serialized by RTNL, but the generic-netlink delete path only holds RCU. Running both paths concurrently can therefore make both paths delete the same PDP context. The issue was found through static analysis and reproduced on a KASAN-enabled kernel by a simple two-thread program racing GTP_CMD_DELPDP against RTM_DELLINK: Oops: general protection fault, probably for non-canonical address KASAN: maybe wild-memory-access in range [0xdead000000000120-0xdead000000000127] RIP: gtp_genl_del_pdp+0x1c1/0x420 [gtp] RBP: dead000000000122 The second deletion dereferenced the poisoned hlist pprev pointer. Serialize gtp_pdp_add(), gtp_genl_del_pdp(), and gtp_dellink() with a shared mutex. Keep the mutex held until the final use of a PDP context in the NEWPDP path, and keep the RCU read-side section around the complete PDP context use in the DELPDP path.
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
459aa660eb1d8ce67080da1983bb81d716aa5a69 to < d8ebf8875fb97b3e39aa226af78f9c619e96ee31affected459aa660eb1d8ce67080da1983bb81d716aa5a69 to < 6e5472c1c1619793cbadb02bccf7d2d9f826052faffected459aa660eb1d8ce67080da1983bb81d716aa5a69 to < d9a83492ffc99f228d91873473e3820300525f00affected459aa660eb1d8ce67080da1983bb81d716aa5a69 to < b4ac2a5ce5a96ec21ed48f60d30b52b1fb22c62aaffected459aa660eb1d8ce67080da1983bb81d716aa5a69 to < 5f77ddb2756340c1b05381674ca025d52998005eaffected459aa660eb1d8ce67080da1983bb81d716aa5a69 to < 3d950e98f74af9611925a5226edced02155f6ed1affected459aa660eb1d8ce67080da1983bb81d716aa5a69 to < 6df4f05bc2991467939d7d80b6f7e121559cc3dfaffected459aa660eb1d8ce67080da1983bb81d716aa5a69 to < 1e995498d29784a06a2b2899370a1926cfc8410daffected459aa660eb1d8ce67080da1983bb81d716aa5a69 to < 498386b6d402737db1e2eeed4c385acbf0ef9e34affected
Linux Linux
Default version status: affected
4.7affected0 to < 4.7unaffected5.10.273 to ≤ 5.10.*unaffected5.15.224 to ≤ 5.15.*unaffected6.1.191 to ≤ 6.1.*unaffected6.6.158 to ≤ 6.6.*unaffected6.12.108 to ≤ 6.12.*unaffected6.18.49 to ≤ 6.18.*unaffected7.1.13 to ≤ 7.1.*unaffected7.2.3 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/d8ebf8875fb97b3e39aa226af78f9c619e96ee31 ↗
- https://git.kernel.org/stable/c/6e5472c1c1619793cbadb02bccf7d2d9f826052f ↗
- https://git.kernel.org/stable/c/d9a83492ffc99f228d91873473e3820300525f00 ↗
- https://git.kernel.org/stable/c/b4ac2a5ce5a96ec21ed48f60d30b52b1fb22c62a ↗
- https://git.kernel.org/stable/c/5f77ddb2756340c1b05381674ca025d52998005e ↗
- https://git.kernel.org/stable/c/3d950e98f74af9611925a5226edced02155f6ed1 ↗
- https://git.kernel.org/stable/c/6df4f05bc2991467939d7d80b6f7e121559cc3df ↗
- https://git.kernel.org/stable/c/1e995498d29784a06a2b2899370a1926cfc8410d ↗
- https://git.kernel.org/stable/c/498386b6d402737db1e2eeed4c385acbf0ef9e34 ↗