xfrm: ah6: validate routing header segments_left
- 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: ah6: validate routing header segments_left AH6 rearranges routing-header addresses before computing or verifying the ICV. ipv6_rearrange_rthdr() assumes that segments_left is not larger than the number of addresses described by the routing header's hdrlen field. That assumption does not hold for raw IPv6 HDRINCL packets. A packet with hdrlen equal to 2 describes one address, but can carry an arbitrary segments_left value. With segments_left equal to 255, the function moves its address pointer 4,064 bytes backwards and passes a 4,064-byte length to memmove(), resulting in an out-of-bounds access. Validate the invariant locally before modifying the routing header or performing any address-pointer arithmetic, and propagate malformed-header errors to the existing AH6 input and output error paths.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 2dc650956e4e163b879b3fb1027f9557abc5c985; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 48b0e36cf54358276ee7aa897034c973097d2bc9; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 1b7e066eabcc7d6d8f476c34739b45932f2f4c31; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in f00df8500e5a36ba70d336fd34bd2152ea074e5f; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 1516e31ac458a738be485620579d8f7fb2700fcb; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 6733ae71268a27d598cfb3f3339a3c950b9b656d; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 0bf11081ad3753938a2b48723ce6298dbac743a1; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 46640c814f25f096b0b0045ca50e1b7030cd8a30; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 7bad4bda74dc4713f398d3b7624ff05478e3a568
- Linux Linux
2.6.12
- KernelLinux
From 2.6.12 · 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/2dc650956e4e163b879b3fb1027f9557abc5c985
- stable/c/48b0e36cf54358276ee7aa897034c973097d2bc9
- stable/c/1b7e066eabcc7d6d8f476c34739b45932f2f4c31
- stable/c/f00df8500e5a36ba70d336fd34bd2152ea074e5f
- stable/c/1516e31ac458a738be485620579d8f7fb2700fcb
- stable/c/6733ae71268a27d598cfb3f3339a3c950b9b656d
- stable/c/0bf11081ad3753938a2b48723ce6298dbac743a1
- stable/c/46640c814f25f096b0b0045ca50e1b7030cd8a30
- stable/c/7bad4bda74dc4713f398d3b7624ff05478e3a568