{"api_version":"1","generated_at":"2026-08-15T08:03:52+00:00","cve":"CVE-2026-72021","urls":{"html":"https://cve.report/CVE-2026-72021","api":"https://cve.report/api/cve/CVE-2026-72021.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-72021","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-72021"},"summary":{"title":"ipvs: use parsed transport offset in SCTP state lookup","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nipvs: use parsed transport offset in SCTP state lookup\n\nset_sctp_state() reads the SCTP chunk header again in order to drive the\nIPVS SCTP state table. For IPv6 it computes the offset with\nsizeof(struct ipv6hdr), while the surrounding IPVS code uses iph.len from\nip_vs_fill_iph_skb(), where ipv6_find_hdr() has already skipped\nextension headers and found the real transport header.\n\nThis makes the state machine read from the wrong offset for IPv6 SCTP\npackets that carry extension headers. For example, an INIT packet with an\n8-byte destination options header can be scheduled correctly by\nsctp_conn_schedule(), but set_sctp_state() reads the first byte of the\nSCTP verification tag as a DATA chunk type. The connection then moves\nfrom NONE to ESTABLISHED instead of INIT1, gets the longer established\ntimeout, and updates the active/inactive destination counters\nincorrectly. This happens even though the SCTP handshake has not\ncompleted.\n\nUse the parsed transport offset passed down from ip_vs_set_state() for\nthe SCTP chunk-header lookup. For IPv4 and IPv6 packets without\nextension headers this preserves the existing offset.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-08-15 06:21:01","updated_at":"2026-08-15 06:21:01"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/9f94573ab962a9e81954b755da016fa3cd2f5039","name":"https://git.kernel.org/stable/c/9f94573ab962a9e81954b755da016fa3cd2f5039","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/2f75c0faa3361b28e36cc0512b3299e163e25789","name":"https://git.kernel.org/stable/c/2f75c0faa3361b28e36cc0512b3299e163e25789","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/9cb5ac594ca76d3a71803b23b74c835b0721e628","name":"https://git.kernel.org/stable/c/9cb5ac594ca76d3a71803b23b74c835b0721e628","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/290e9e8389b556efc603522e28bd1543846aa336","name":"https://git.kernel.org/stable/c/290e9e8389b556efc603522e28bd1543846aa336","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/e5d0bb8871668f20de8f3c94b5ae3f372346bc6e","name":"https://git.kernel.org/stable/c/e5d0bb8871668f20de8f3c94b5ae3f372346bc6e","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/247d055504dcc852e539b9f7f30d19f9741474bf","name":"https://git.kernel.org/stable/c/247d055504dcc852e539b9f7f30d19f9741474bf","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/a4a2d2e483d79cc2ad3a170674cf159644acf22b","name":"https://git.kernel.org/stable/c/a4a2d2e483d79cc2ad3a170674cf159644acf22b","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/d2b8b1557ec07ea1bb5dddbceaf4dfe63d388e27","name":"https://git.kernel.org/stable/c/d2b8b1557ec07ea1bb5dddbceaf4dfe63d388e27","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-72021","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-72021","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2906f66a5682e5670a5eefe991843689b8d8563f d2b8b1557ec07ea1bb5dddbceaf4dfe63d388e27 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2906f66a5682e5670a5eefe991843689b8d8563f 9f94573ab962a9e81954b755da016fa3cd2f5039 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2906f66a5682e5670a5eefe991843689b8d8563f 290e9e8389b556efc603522e28bd1543846aa336 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2906f66a5682e5670a5eefe991843689b8d8563f 9cb5ac594ca76d3a71803b23b74c835b0721e628 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2906f66a5682e5670a5eefe991843689b8d8563f a4a2d2e483d79cc2ad3a170674cf159644acf22b git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2906f66a5682e5670a5eefe991843689b8d8563f 247d055504dcc852e539b9f7f30d19f9741474bf git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2906f66a5682e5670a5eefe991843689b8d8563f e5d0bb8871668f20de8f3c94b5ae3f372346bc6e git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2906f66a5682e5670a5eefe991843689b8d8563f 2f75c0faa3361b28e36cc0512b3299e163e25789 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2.6.34","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 2.6.34 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.10.261 5.10.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15.212 5.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.178 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.145 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.97 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.40 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1.5 7.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2-rc3 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["net/netfilter/ipvs/ip_vs_proto_sctp.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"d2b8b1557ec07ea1bb5dddbceaf4dfe63d388e27","status":"affected","version":"2906f66a5682e5670a5eefe991843689b8d8563f","versionType":"git"},{"lessThan":"9f94573ab962a9e81954b755da016fa3cd2f5039","status":"affected","version":"2906f66a5682e5670a5eefe991843689b8d8563f","versionType":"git"},{"lessThan":"290e9e8389b556efc603522e28bd1543846aa336","status":"affected","version":"2906f66a5682e5670a5eefe991843689b8d8563f","versionType":"git"},{"lessThan":"9cb5ac594ca76d3a71803b23b74c835b0721e628","status":"affected","version":"2906f66a5682e5670a5eefe991843689b8d8563f","versionType":"git"},{"lessThan":"a4a2d2e483d79cc2ad3a170674cf159644acf22b","status":"affected","version":"2906f66a5682e5670a5eefe991843689b8d8563f","versionType":"git"},{"lessThan":"247d055504dcc852e539b9f7f30d19f9741474bf","status":"affected","version":"2906f66a5682e5670a5eefe991843689b8d8563f","versionType":"git"},{"lessThan":"e5d0bb8871668f20de8f3c94b5ae3f372346bc6e","status":"affected","version":"2906f66a5682e5670a5eefe991843689b8d8563f","versionType":"git"},{"lessThan":"2f75c0faa3361b28e36cc0512b3299e163e25789","status":"affected","version":"2906f66a5682e5670a5eefe991843689b8d8563f","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["net/netfilter/ipvs/ip_vs_proto_sctp.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"2.6.34"},{"lessThan":"2.6.34","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"5.10.*","status":"unaffected","version":"5.10.261","versionType":"semver"},{"lessThanOrEqual":"5.15.*","status":"unaffected","version":"5.15.212","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.178","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.145","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.97","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.40","versionType":"semver"},{"lessThanOrEqual":"7.1.*","status":"unaffected","version":"7.1.5","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.2-rc3","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.10.261","versionStartIncluding":"2.6.34","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.15.212","versionStartIncluding":"2.6.34","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.178","versionStartIncluding":"2.6.34","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.145","versionStartIncluding":"2.6.34","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.97","versionStartIncluding":"2.6.34","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.40","versionStartIncluding":"2.6.34","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1.5","versionStartIncluding":"2.6.34","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2-rc3","versionStartIncluding":"2.6.34","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nipvs: use parsed transport offset in SCTP state lookup\n\nset_sctp_state() reads the SCTP chunk header again in order to drive the\nIPVS SCTP state table. For IPv6 it computes the offset with\nsizeof(struct ipv6hdr), while the surrounding IPVS code uses iph.len from\nip_vs_fill_iph_skb(), where ipv6_find_hdr() has already skipped\nextension headers and found the real transport header.\n\nThis makes the state machine read from the wrong offset for IPv6 SCTP\npackets that carry extension headers. For example, an INIT packet with an\n8-byte destination options header can be scheduled correctly by\nsctp_conn_schedule(), but set_sctp_state() reads the first byte of the\nSCTP verification tag as a DATA chunk type. The connection then moves\nfrom NONE to ESTABLISHED instead of INIT1, gets the longer established\ntimeout, and updates the active/inactive destination counters\nincorrectly. This happens even though the SCTP handshake has not\ncompleted.\n\nUse the parsed transport offset passed down from ip_vs_set_state() for\nthe SCTP chunk-header lookup. For IPv4 and IPv6 packets without\nextension headers this preserves the existing offset."}],"providerMetadata":{"dateUpdated":"2026-08-15T05:51:47.324Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/d2b8b1557ec07ea1bb5dddbceaf4dfe63d388e27"},{"url":"https://git.kernel.org/stable/c/9f94573ab962a9e81954b755da016fa3cd2f5039"},{"url":"https://git.kernel.org/stable/c/290e9e8389b556efc603522e28bd1543846aa336"},{"url":"https://git.kernel.org/stable/c/9cb5ac594ca76d3a71803b23b74c835b0721e628"},{"url":"https://git.kernel.org/stable/c/a4a2d2e483d79cc2ad3a170674cf159644acf22b"},{"url":"https://git.kernel.org/stable/c/247d055504dcc852e539b9f7f30d19f9741474bf"},{"url":"https://git.kernel.org/stable/c/e5d0bb8871668f20de8f3c94b5ae3f372346bc6e"},{"url":"https://git.kernel.org/stable/c/2f75c0faa3361b28e36cc0512b3299e163e25789"}],"title":"ipvs: use parsed transport offset in SCTP state lookup","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-72021","datePublished":"2026-08-15T05:51:47.324Z","dateReserved":"2026-08-09T03:40:39.900Z","dateUpdated":"2026-08-15T05:51:47.324Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-15 06:21:01","lastModifiedDate":"2026-08-15 06:21:01","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"72021","Ordinal":"1","Title":"ipvs: use parsed transport offset in SCTP state lookup","CVE":"CVE-2026-72021","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"72021","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nipvs: use parsed transport offset in SCTP state lookup\n\nset_sctp_state() reads the SCTP chunk header again in order to drive the\nIPVS SCTP state table. For IPv6 it computes the offset with\nsizeof(struct ipv6hdr), while the surrounding IPVS code uses iph.len from\nip_vs_fill_iph_skb(), where ipv6_find_hdr() has already skipped\nextension headers and found the real transport header.\n\nThis makes the state machine read from the wrong offset for IPv6 SCTP\npackets that carry extension headers. For example, an INIT packet with an\n8-byte destination options header can be scheduled correctly by\nsctp_conn_schedule(), but set_sctp_state() reads the first byte of the\nSCTP verification tag as a DATA chunk type. The connection then moves\nfrom NONE to ESTABLISHED instead of INIT1, gets the longer established\ntimeout, and updates the active/inactive destination counters\nincorrectly. This happens even though the SCTP handshake has not\ncompleted.\n\nUse the parsed transport offset passed down from ip_vs_set_state() for\nthe SCTP chunk-header lookup. For IPv4 and IPv6 packets without\nextension headers this preserves the existing offset.","Type":"Description","Title":"ipvs: use parsed transport offset in SCTP state lookup"}]}}}