net/sched: fix pedit partial COW leading to page cache corruption
- 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.260, 5.15.211, 4.20, 5.5, 5.18, and 5 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
- Exploitation: poc
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: net/sched: fix pedit partial COW leading to page cache corruption tcf_pedit_act() computes the COW range for skb_ensure_writable() once before the key loop using tcfp_off_max_hint, but the hint does not account for the runtime header offset added by typed keys. This can leave part of the write region un-COW'd. Fix by moving skb_ensure_writable() inside the per-key loop where the actual write offset is known, and add overflow checking on the offset arithmetic. For negative offsets (e.g. Ethernet header edits at ingress), use skb_cow() to COW the headroom instead. Guard offset_valid() against INT_MIN, where negation is undefined.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: poc · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From abe35bf3be51482593076d516a680d79e5fbc8e1 · fixed in 544d857b42a1734b923040e13aa61a6fd4746cf2; From b773640d5bb9e2acfd91e2695717af04d47aa116 · fixed in d5d01d35a5a7d36f7cb679b67d9cbdd5205672dc; From 8b796475fd7882663a870456466a4fb315cc1bd6 · fixed in a071e057518decc5e3bec89855758f5f8786f2c5; From 8b796475fd7882663a870456466a4fb315cc1bd6 · fixed in b685d6ef6f07a3b5ce814565a25f39f2157538a5; From 8b796475fd7882663a870456466a4fb315cc1bd6 · fixed in 2bec122b9fb91507a758ab5e3e5c4fbe7cb3f61b; From 8b796475fd7882663a870456466a4fb315cc1bd6 · fixed in b198ed4e52580a7238c7c7082f03906f8b310313; From 8b796475fd7882663a870456466a4fb315cc1bd6 · fixed in 3dee9d0c198faeb95d052c1b94c2958751a28512; From 8b796475fd7882663a870456466a4fb315cc1bd6 · fixed in 899ee91156e57784090c5565e4f31bd7dbffbc5a; From 5.10.117 · fixed in 5.10.260; From 5.15.41 · fixed in 5.15.211; From 4.19.244 · fixed in 4.20; From 5.4.195 · fixed in 5.5; From 5.17.9 · fixed in 5.18
- Linux Linux
5.18
- KernelLinux
fixed in 5.10.260; From 5.11.0 · fixed in 5.15.211; From 5.16.0 · fixed in 6.1.177; From 5.18.0 · fixed in 6.6.144; From 6.2.0 · fixed in 6.12.94; From 6.7.0 · fixed in 6.18.36; From 6.13.0 · fixed in 7.0.13
References 8
git.kernel.org
- stable/c/544d857b42a1734b923040e13aa61a6fd4746cf2
- stable/c/d5d01d35a5a7d36f7cb679b67d9cbdd5205672dc
- stable/c/a071e057518decc5e3bec89855758f5f8786f2c5
- stable/c/b685d6ef6f07a3b5ce814565a25f39f2157538a5
- stable/c/2bec122b9fb91507a758ab5e3e5c4fbe7cb3f61b
- stable/c/b198ed4e52580a7238c7c7082f03906f8b310313
- stable/c/3dee9d0c198faeb95d052c1b94c2958751a28512
- stable/c/899ee91156e57784090c5565e4f31bd7dbffbc5a