CVE-2026-98123

sctp: fix soft lockup from unpadded ASCONF-ACK parameter iteration

MEDIUM
5.5
CVSS Score
Published: September 25, 2026 at 10:36 AM UTC
Updated: October 22, 2026 at 04:46 PM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.5
Exploit prediction
EPSS 0.1%

Description

In the Linux kernel, the following vulnerability has been resolved: sctp: fix soft lockup from unpadded ASCONF-ACK parameter iteration sctp_verify_asconf() walks ASCONF-ACK parameters with sctp_walk_params(), which advances by SCTP_PAD4(length), while the consumer sctp_get_asconf_response() iterates the same parameters advancing by the raw length, without padding. A single odd-length parameter desynchronises the two walks and makes the consumer interpret attacker-controlled bytes at a misaligned offset. When those bytes yield a length of zero, the while loop over asconf_ack_len makes no progress, spinning forever in softirq context, and the watchdog reports a soft lockup. All reads stay within the received skb, so the lockup is a pure remote denial of service. A remote peer can trigger it with a crafted ASCONF-ACK on an ADD-IP enabled association with an outstanding ASCONF (RFC 5061 section 4.1.2 requires the chunk to be authenticated, but the predefined empty key id 0 allows the peer to compute the same association HMAC from publicly exchanged parameters, so the gate does not help). The SCTP_PARAM_ERR_CAUSE case of sctp_verify_asconf() also performs no length check, letting a parameter without a complete error header reach the consumer, which reads errhdr.cause past the end of the parameter, an out-of-bounds read. Reject SCTP_PARAM_ERR_CAUSE parameters shorter than sizeof(struct sctp_addip_param) + sizeof(struct sctp_errhdr) at the verifier, and advance the consumer iterator with the same padding rule as the verifier to keep the two walks in lockstep. The verifier change guarantees a complete error header in every ERR_CAUSE parameter the consumer can see, so the consumer's asconf_ack_len check is dropped and it returns err_param->cause directly. The consumer padding fix is still required because odd lengths remain valid for SCTP_PARAM_ERR_CAUSE per RFC 5061. The issue was found by ZeroHive, a vulnerability hunting agent at Tencent Yunding Lab.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

2.6.12.1 ≤ v < 5.10.2715.11 ≤ v < 5.15.2225.16 ≤ v < 6.1.1896.13 ≤ v < 6.18.536.19 ≤ v < 7.2.76.2 ≤ v < 6.6.1586.7 ≤ v < 6.12.1111da177e4c3f41524e886b7f1b8a0c1fc7321cac22.6.127.3
Vendor states this is fixed in 2cb0b0b1ed69430bf73740377ea0a1c44c50db63 (fixed)
Vendor states this is fixed in 3be02999ab9131a4b96eb1eda4ca48b1cea80f03 (fixed)
Vendor states this is fixed in 4548d843e7b29f6d150d8caae4e64015fa226b0c (fixed)
Vendor states this is fixed in 5fbc6a778d5fce7628821236972596acb18e1065 (fixed)
Vendor states this is fixed in 7ba84e2971d208a2d6413a334ec28a8a32cdce0f (fixed)
Vendor states this is fixed in 7d8e7ab6a0665888beee91f7ad77ac805963c4fd (fixed)
Vendor states this is fixed in abf59d7f6fff23227256e8199aca5ade45758f8b (fixed)
Vendor states this is fixed in ba54cad229977f4fae6355dbdaf117088414fdd0 (fixed)
Vendor states this is fixed in 2.6.12 (unaffected)
Vendor states this is fixed in 5.10.271 (unaffected)
Vendor states this is fixed in 5.15.222 (unaffected)
Vendor states this is fixed in 6.1.189 (unaffected)
Vendor states this is fixed in 6.12.111 (unaffected)
Vendor states this is fixed in 6.18.53 (unaffected)
Vendor states this is fixed in 6.6.158 (unaffected)
Vendor states this is fixed in 7.2.7 (unaffected)
Vendor states this is fixed in 7.3 (unaffected)
Vendor states this is fixed in 7.3-rc2 (unaffected)

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusANALYZED
CWE
CWE-667

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card