{"id":"CVE-2026-31664","title":"In the Linux kernel, the following vulnerability has been resolved:\n\nxfrm: clear trailing padding in build_polexpire()\n\nbuild_expire() clears the trailing padding bytes of struct\nxfrm_user_expire after setting the hard field via memset_a…","summary":"In the Linux kernel, the following vulnerability has been resolved:\n\nxfrm: clear trailing padding in build_polexpire()\n\nbuild_expire() clears the trailing padding bytes of struct\nxfrm_user_expire after setting the hard field via memset_a…","severity":"medium","cvss":5.5,"cvssVector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","vendor":"linux","product":"linux_kernel","affected":["linux_kernel >= 2.6.12.1, < 6.1.169","linux_kernel >= 6.2, < 6.6.135","linux_kernel >= 6.7, < 6.12.82","linux_kernel >= 6.13, < 6.18.23","linux_kernel >= 6.19, < 6.19.13","linux_kernel = 2.6.12","linux_kernel = 7.0"],"patched":["linux_kernel 6.19.13"],"published":"2026-04-24","updated":"2026-10-15","sourceUpdated":"2026-10-15T02:19:15.327","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-31664","references":[{"url":"https://git.kernel.org/stable/c/71a98248c63c535eaa4d4c22f099b68d902006d0","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/a5127501c8d30b5728791b1e340284ca5c9cc4bd","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/ac6985903db047eaff54db929e4bf6b06782788e","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/b1dfd6b27df35ef4f87825aa5f607378d23ff0f2","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/c221ed63a2769a0af8bd849dfe25740048f34ef4","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/e1af65c669ebb1666c54576614c01a7f9ffcfff6","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/e6f4ffe8596947a595c9544e73a73adcb0568b88","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/eda30846ea54f8ed218468e5480c8305ca645e37","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://cert-portal.siemens.com/productcert/html/ssa-019113.html","label":"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e"},{"url":"https://cert-portal.siemens.com/productcert/html/ssa-082556.html","label":"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e"},{"url":"https://cert-portal.siemens.com/productcert/html/ssa-457936.html","label":"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e"}],"tags":["nvd","cve.org"],"epss":0.0012,"epssPercentile":0.01803,"ingestedAt":"2026-09-08T15:33:26.989Z","slug":"CVE-2026-31664","body":"## Overview\n\nIn the Linux kernel, the following vulnerability has been resolved:\n\nxfrm: clear trailing padding in build_polexpire()\n\nbuild_expire() clears the trailing padding bytes of struct\nxfrm_user_expire after setting the hard field via memset_after(),\nbut the analogous function build_polexpire() does not do this for\nstruct xfrm_user_polexpire.\n\nThe padding bytes after the __u8 hard field are left\nuninitialized from the heap allocation, and are then sent to\nuserspace via netlink multicast to XFRMNLGRP_EXPIRE listeners,\nleaking kernel heap memory contents.\n\nAdd the missing memset_after() call, matching build_expire().\n\n## Affected\n\n- `linux_kernel >= 2.6.12.1, < 6.1.169`\n- `linux_kernel >= 6.2, < 6.6.135`\n- `linux_kernel >= 6.7, < 6.12.82`\n- `linux_kernel >= 6.13, < 6.18.23`\n- `linux_kernel >= 6.19, < 6.19.13`\n- `linux_kernel = 2.6.12`\n- `linux_kernel = 7.0`\n\n## Remediation\n\nUpgrade past the affected range:\n\n- `linux_kernel 6.19.13`","depth":"sunlit","depthScore":30,"depthScoreParts":{"impact":30.3,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[{"seq":221741,"id":"CVE-2026-31664","ts":1792035347203,"field":"cvss","old":null,"new":"5.5"},{"seq":221740,"id":"CVE-2026-31664","ts":1792035347203,"field":"severity","old":"none","new":"medium"}]}