macsec: fix replay protection at XPN lower-PN wrap
- 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.259, 5.15.210, 6.1.176, 6.6.143, 6.12.93, 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: partial
Summary
In the Linux kernel, the following vulnerability has been resolved: macsec: fix replay protection at XPN lower-PN wrap In macsec_post_decrypt(), when pn is U32_MAX, pn + 1 overflows u32 to 0 and the first branch never fires. If next_pn_halves.lower is also in the upper half, pn_same_half(pn, lower) is true and the XPN else-if does not fire either, leaving next_pn_halves unchanged. An attacker that captures the legitimate frame carrying pn == 0xFFFFFFFF on an XPN association can then replay it indefinitely, since lowest_pn never rises above the captured pn and macsec_decrypt() reconstructs the same IV. Extend the XPN else-if to also fire when pn + 1 wraps to 0, so receipt of pn == U32_MAX advances next_pn_halves to (upper + 1, 0).
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- Linux Linux
From a21ecf0e033807b976967286e6c392f48ee2049f · fixed in dd7306779c6ce1238f4cdc34f3c1f2246b854457; From a21ecf0e033807b976967286e6c392f48ee2049f · fixed in d15130461df388136b62a7b0ce9f66e7e2fa9ff1; From a21ecf0e033807b976967286e6c392f48ee2049f · fixed in 23c0e230eab397d7f68be2538790ac41d3bb91fd; From a21ecf0e033807b976967286e6c392f48ee2049f · fixed in 679e13a65e68a67c8b3c0467c02ee89157ec6f0f; From a21ecf0e033807b976967286e6c392f48ee2049f · fixed in 79495a1b0944fe31ffd54b54b00211b493590d62; From a21ecf0e033807b976967286e6c392f48ee2049f · fixed in 6d00f5c7e5ff7ec4795b7f5f8ed88bd346641652; From a21ecf0e033807b976967286e6c392f48ee2049f · fixed in d55acbe577db892b60547b6ef1c020b359331a6d; From a21ecf0e033807b976967286e6c392f48ee2049f · fixed in e68842b3356471ba56c882209f324613dac47f64
- Linux Linux
5.7
- KernelLinux
From 5.7.0 · fixed in 5.10.259; From 5.11.0 · fixed in 5.15.210; From 5.16.0 · fixed in 6.1.176; From 6.2.0 · fixed in 6.6.143; From 6.7.0 · fixed in 6.12.93; From 6.13.0 · fixed in 6.18.35; From 6.19.0 · fixed in 7.0.12
References 8
git.kernel.org
- stable/c/dd7306779c6ce1238f4cdc34f3c1f2246b854457
- stable/c/d15130461df388136b62a7b0ce9f66e7e2fa9ff1
- stable/c/23c0e230eab397d7f68be2538790ac41d3bb91fd
- stable/c/679e13a65e68a67c8b3c0467c02ee89157ec6f0f
- stable/c/79495a1b0944fe31ffd54b54b00211b493590d62
- stable/c/6d00f5c7e5ff7ec4795b7f5f8ed88bd346641652
- stable/c/d55acbe577db892b60547b6ef1c020b359331a6d
- stable/c/e68842b3356471ba56c882209f324613dac47f64