{"id":"CVE-2026-99128","state":"PUBLISHED","title":"sctp: validate chunk length in the inqueue parser","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nsctp: validate chunk length in the inqueue parser\n\nSCTP chunks always include a four-byte generic header, but\nsctp_inq_pop() currently accepts shorter declared lengths. A zero-length\nchunk leaves chunk_end at the current header.\n\nWhen ASCONF is covered by the association's SCTP-AUTH policy,\nsctp_assoc_bh_rcv() can continue before the state machine performs its\nnormal chunk-length check. sctp_inq_pop() then returns the same malformed\nchunk repeatedly and the receive softirq can lock up.\n\nA remote SCTP peer can trigger this after establishing an association on\na kernel built with CONFIG_IP_SCTP and configured with\nnet.sctp.addip_enable=1 and net.sctp.auth_enable=1. The reproducer did\nnot require application credentials, a shared SCTP AUTH key, or\nnet.sctp.addip_noauth_enable=1.\n\nOn commit f967455fb2a5 (\"seg6: reset IP6CB after IPv6 decapsulation\"),\none zero-length ASCONF caused repeated\nwatchdog soft-lockup reports in a two-vCPU KVM guest. All 3 pre-trigger\nhealth probes succeeded, while 36 of 37 post-trigger probes failed. With\nthis change, all 37 post-trigger probes succeeded and no equivalent\nsoft-lockup signature appeared.\n\nReject chunks shorter than the generic SCTP header at the shared inqueue\nparser boundary. Mark the packet for discard before either caller can\ncontinue processing it, while preserving the four-byte generic minimum.\nDeclared-length 1 through 4 controls and kernel-generated ASCONF traffic\nremained healthy. The patched sctp_hello selftest passed for IPv4 and\nIPv6.\n\nThe complete private reproducer and validation evidence are available\ndirectly to maintainers on request.","publishedAt":"2026-10-28T10:34:42.229Z","updatedAt":"2026-10-30T12:42:02.124Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"cc4a4f1d6b6d725438dc37b97f03d95ed9feb63f","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"b0dbd53b242609c88e81b0a49093bdbef5d5a418","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"d28ea1a62e27210d8ea3cf496dfae85dbdd7b84f","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"5a7ee52589dae36c93dc64d7a97c5ded84618572","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"e0fb7fe180488a5afa2e91509ea838e8df8cb771","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"40507f59f230dcf60ae13cb48d34f8c6e9f40659","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"9ac57e4c62e93c287b36080e5da3645690549990","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"6cfc1b90cb86f4aabc69fb8e30128e07e2cdfa3a","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/sctp/inqueue.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"2.6.24","status":"affected"},{"version":"0","status":"unaffected","lessThan":"2.6.24","versionType":"semver"},{"version":"5.10.273","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.224","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.191","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.161","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.115","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.59","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.13","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/sctp/inqueue.c"]}],"references":["https://git.kernel.org/stable/c/cc4a4f1d6b6d725438dc37b97f03d95ed9feb63f","https://git.kernel.org/stable/c/b0dbd53b242609c88e81b0a49093bdbef5d5a418","https://git.kernel.org/stable/c/d28ea1a62e27210d8ea3cf496dfae85dbdd7b84f","https://git.kernel.org/stable/c/5a7ee52589dae36c93dc64d7a97c5ded84618572","https://git.kernel.org/stable/c/e0fb7fe180488a5afa2e91509ea838e8df8cb771","https://git.kernel.org/stable/c/40507f59f230dcf60ae13cb48d34f8c6e9f40659","https://git.kernel.org/stable/c/9ac57e4c62e93c287b36080e5da3645690549990","https://git.kernel.org/stable/c/6cfc1b90cb86f4aabc69fb8e30128e07e2cdfa3a"],"weaknesses":[],"ingestedAt":"2026-10-30T13:02:04.640Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/99xxx/CVE-2026-99128.json","commit":"cb14bf1b43b0c9f05f7f40eae2246263fd430780","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-99128","state":"PUBLISHED","datePublished":"2026-10-28T10:34:42.229Z","dateUpdated":"2026-10-30T12:42:02.124Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-25T10:25:14.394Z"},"containers":{"cna":{"title":"sctp: validate chunk length in the inqueue parser","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nsctp: validate chunk length in the inqueue parser\n\nSCTP chunks always include a four-byte generic header, but\nsctp_inq_pop() currently accepts shorter declared lengths. A zero-length\nchunk leaves chunk_end at the current header.\n\nWhen ASCONF is covered by the association's SCTP-AUTH policy,\nsctp_assoc_bh_rcv() can continue before the state machine performs its\nnormal chunk-length check. sctp_inq_pop() then returns the same malformed\nchunk repeatedly and the receive softirq can lock up.\n\nA remote SCTP peer can trigger this after establishing an association on\na kernel built with CONFIG_IP_SCTP and configured with\nnet.sctp.addip_enable=1 and net.sctp.auth_enable=1. The reproducer did\nnot require application credentials, a shared SCTP AUTH key, or\nnet.sctp.addip_noauth_enable=1.\n\nOn commit f967455fb2a5 (\"seg6: reset IP6CB after IPv6 decapsulation\"),\none zero-length ASCONF caused repeated\nwatchdog soft-lockup reports in a two-vCPU KVM guest. All 3 pre-trigger\nhealth probes succeeded, while 36 of 37 post-trigger probes failed. With\nthis change, all 37 post-trigger probes succeeded and no equivalent\nsoft-lockup signature appeared.\n\nReject chunks shorter than the generic SCTP header at the shared inqueue\nparser boundary. Mark the packet for discard before either caller can\ncontinue processing it, while preserving the four-byte generic minimum.\nDeclared-length 1 through 4 controls and kernel-generated ASCONF traffic\nremained healthy. The patched sctp_hello selftest passed for IPv4 and\nIPv6.\n\nThe complete private reproducer and validation evidence are available\ndirectly to maintainers on request."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"cc4a4f1d6b6d725438dc37b97f03d95ed9feb63f","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"b0dbd53b242609c88e81b0a49093bdbef5d5a418","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"d28ea1a62e27210d8ea3cf496dfae85dbdd7b84f","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"5a7ee52589dae36c93dc64d7a97c5ded84618572","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"e0fb7fe180488a5afa2e91509ea838e8df8cb771","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"40507f59f230dcf60ae13cb48d34f8c6e9f40659","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"9ac57e4c62e93c287b36080e5da3645690549990","versionType":"git"},{"version":"bbd0d59809f923ea2b540cbd781b32110e249f6e","status":"affected","lessThan":"6cfc1b90cb86f4aabc69fb8e30128e07e2cdfa3a","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/sctp/inqueue.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"2.6.24","status":"affected"},{"version":"0","status":"unaffected","lessThan":"2.6.24","versionType":"semver"},{"version":"5.10.273","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.224","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.191","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.161","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.115","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.59","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.13","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/sctp/inqueue.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/cc4a4f1d6b6d725438dc37b97f03d95ed9feb63f"},{"url":"https://git.kernel.org/stable/c/b0dbd53b242609c88e81b0a49093bdbef5d5a418"},{"url":"https://git.kernel.org/stable/c/d28ea1a62e27210d8ea3cf496dfae85dbdd7b84f"},{"url":"https://git.kernel.org/stable/c/5a7ee52589dae36c93dc64d7a97c5ded84618572"},{"url":"https://git.kernel.org/stable/c/e0fb7fe180488a5afa2e91509ea838e8df8cb771"},{"url":"https://git.kernel.org/stable/c/40507f59f230dcf60ae13cb48d34f8c6e9f40659"},{"url":"https://git.kernel.org/stable/c/9ac57e4c62e93c287b36080e5da3645690549990"},{"url":"https://git.kernel.org/stable/c/6cfc1b90cb86f4aabc69fb8e30128e07e2cdfa3a"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-30T12:42:02.124Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.24","versionEndExcluding":"5.10.273"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.24","versionEndExcluding":"5.15.224"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.24","versionEndExcluding":"6.1.191"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.24","versionEndExcluding":"6.6.161"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.24","versionEndExcluding":"6.12.115"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.24","versionEndExcluding":"6.18.59"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.24","versionEndExcluding":"7.2.13"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.24","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}