xfrm: drop ESP-in-TCP packets with no ingress device
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.269, 5.15.220, 6.1.187, 6.6.156, 6.12.108, and 3 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: xfrm: drop ESP-in-TCP packets with no ingress device ESP-in-TCP receives records through the TCP strparser. handle_esp() restores skb->dev from the saved skb_iif before passing the packet into the XFRM input path. Queued TCP data can be processed after the original ingress device has been removed, for example during veth or net namespace teardown. In that case dev_get_by_index_rcu() returns NULL. The XFRM IPv4 and IPv6 input paths both expect skb->dev to be valid while building the route lookup, so queued ESP-in-TCP data can dereference a NULL device. Drop the packet if the saved ingress device can no longer be resolved. Such a packet can no longer be routed through the normal XFRM receive path, and this preserves the existing behaviour for packets whose ingress device still exists.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From e27cca96cd68fa2c6814c90f9a1cfd36bb68c593 · fixed in 239d0f71af09dc2029fd4d730cb24b8c83aaa43a; From e27cca96cd68fa2c6814c90f9a1cfd36bb68c593 · fixed in f00235f9d12301183d61f75fbe4105506f3e5140; From e27cca96cd68fa2c6814c90f9a1cfd36bb68c593 · fixed in 6af5cdb03819a5ce6e945992635c6c5e91045367; From e27cca96cd68fa2c6814c90f9a1cfd36bb68c593 · fixed in 2dd1609cadff46c4b20ce53b91ab9cce1380456a; From e27cca96cd68fa2c6814c90f9a1cfd36bb68c593 · fixed in c296d25efbc840be24de83f56d43bc47e714ace9; From e27cca96cd68fa2c6814c90f9a1cfd36bb68c593 · fixed in 328e40aa774b446969c69b654c52a051a95af8a1; From e27cca96cd68fa2c6814c90f9a1cfd36bb68c593 · fixed in 7911e0236616487b89db6bd3ba3f408abd10eb23; From e27cca96cd68fa2c6814c90f9a1cfd36bb68c593 · fixed in 943d95233b8b4a88994e244fcf466f8c403d63f1; From e27cca96cd68fa2c6814c90f9a1cfd36bb68c593 · fixed in e1d7c5ac1c246ce5775f604515de0a59fbf2116e
- Linux Linux
5.6
- KernelLinux
From 5.6.0 · fixed in 5.10.269; From 5.11.0 · fixed in 5.15.220; From 5.16.0 · fixed in 6.1.187; From 6.2.0 · fixed in 6.6.156; From 6.7.0 · fixed in 6.12.108; From 6.13.0 · fixed in 6.18.49; From 6.19.0 · fixed in 7.1.13; From 7.2.0 · fixed in 7.2.3
References 9
git.kernel.org
- stable/c/239d0f71af09dc2029fd4d730cb24b8c83aaa43a
- stable/c/f00235f9d12301183d61f75fbe4105506f3e5140
- stable/c/6af5cdb03819a5ce6e945992635c6c5e91045367
- stable/c/2dd1609cadff46c4b20ce53b91ab9cce1380456a
- stable/c/c296d25efbc840be24de83f56d43bc47e714ace9
- stable/c/328e40aa774b446969c69b654c52a051a95af8a1
- stable/c/7911e0236616487b89db6bd3ba3f408abd10eb23
- stable/c/943d95233b8b4a88994e244fcf466f8c403d63f1
- stable/c/e1d7c5ac1c246ce5775f604515de0a59fbf2116e