pppoe: reload header pointer after dev_hard_header()
- 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.265, 5.15.216, 6.1.183, 6.6.148, 6.12.101, and 2 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: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: pppoe: reload header pointer after dev_hard_header() pppoe_sendmsg() saves a pointer to the PPPoE header before calling dev_hard_header(). Device header callbacks are allowed to reallocate the skb head, invalidating pointers into it. This can happen when a send is blocked in copy_from_user() while the first non-Ethernet port is added to an empty team device. The team's delegated GRE header callback then expands the skb head. PPPoE subsequently writes six bytes through the stale pointer into the freed head. Reload the PPPoE header through the skb's network-header offset after device header creation. pskb_expand_head() updates that offset when it relocates the head.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 7a56e7c9b08e08fd55a1bcada24cf4fe3782b722; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 6eed5ae7887a93160803d2b81ff88e75eefd4a4c; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in ba3409369c5413cdf0dcbf3a928f76b48e8c3e6a; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in e6493a4d1ee17595766165fa446d45b7e0c318d0; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 7e9fbd7f96bcde63a7c798fe16b38cedee7a1501; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 6866abf59976d273164a6624234d96a967280223; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in bed4caecd723693f750e13adbb2c42ca1249a3fd; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in e9c238f6fe42fb1b4dba3a578277de32cb487937
- Linux Linux
2.6.12
- KernelLinux
From 2.6.12 · fixed in 5.10.265; From 5.11.0 · fixed in 5.15.216; From 5.16.0 · fixed in 6.1.183; From 6.2.0 · fixed in 6.6.148; From 6.7.0 · fixed in 6.12.101; From 6.13.0 · fixed in 6.18.42; From 6.19.0 · fixed in 7.1.6
References 8
git.kernel.org
- stable/c/7a56e7c9b08e08fd55a1bcada24cf4fe3782b722
- stable/c/6eed5ae7887a93160803d2b81ff88e75eefd4a4c
- stable/c/ba3409369c5413cdf0dcbf3a928f76b48e8c3e6a
- stable/c/e6493a4d1ee17595766165fa446d45b7e0c318d0
- stable/c/7e9fbd7f96bcde63a7c798fe16b38cedee7a1501
- stable/c/6866abf59976d273164a6624234d96a967280223
- stable/c/bed4caecd723693f750e13adbb2c42ca1249a3fd
- stable/c/e9c238f6fe42fb1b4dba3a578277de32cb487937