CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-JWJP-4649-V8JP

GHSA-jwjp-4649-v8jp: Out-of-Bounds Read in SIPSorcery SCTP SACK Chunk Parsing

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 12, 2026·6 min read·17 visits

Executive Summary (TL;DR)

Unchecked Gap Ack Block and Duplicate TSN counts in SIPSorcery SCTP SACK chunk parsing permit out-of-bounds reads, crashing the receive thread and causing a denial of service.

An out-of-bounds read vulnerability in the SCTP SACK chunk parser of SIPSorcery leads to Denial of Service (DoS) or silent internal state corruption due to lack of boundary validation on incoming chunk elements.

Vulnerability Overview

SIPSorcery is a C# .NET library utilized for building real-time communications such as WebRTC and VoIP applications. The library implements a complete Stream Control Transmission Protocol (SCTP) stack to support WebRTC Data Channels. Within the SCTP implementation, incoming messages are processed sequentially by a dedicated background receive thread.

This architecture exposes an attack surface via the parsing logic of specific SCTP chunk types. An unauthenticated remote attacker can exploit a vulnerability in the parsing of Selective Acknowledgment (SACK) chunks to disrupt communications. The vulnerability belongs to the out-of-bounds read class (CWE-125) and triggers an uncaught exception.

The structural impact of this vulnerability is a persistent denial of service (DoS) for the entire SCTP association. When a malformed packet is received, the processing thread encounters an unhandled exception and terminates without a recovery mechanism. This action drops all active and future WebRTC data channels negotiated on that association.

Root Cause Analysis

The root cause of this vulnerability lies in the missing input validation within the SctpSackChunk.ParseChunk method. A SACK chunk is used by an SCTP endpoint to acknowledge non-contiguous packets received. The chunk specifies two count parameters: the number of Gap Ack Blocks (N) and the number of Duplicate TSNs (M).

The parsing routine extracts these counts as 16-bit unsigned integers from the packet stream without verifying whether the actual byte buffer contains the corresponding payload size. Consequently, the parser attempts to read up to 65,535 Gap Ack Blocks and Duplicate TSNs. The physical buffer size allocated in the transport layer is fixed at 262,144 bytes.

If the remote peer specifies count values that exceed the size of the physical packet payload, the parsing loop continues past the actual data boundaries. Depending on the buffer index reached, this leads either to reading stale byte data left by previously processed packets or to attempting an out-of-bounds read that exceeds the physical 262,144-byte buffer allocation. The latter condition immediately triggers a System.IndexOutOfRangeException exception.

Code Analysis

Analyzing the vulnerable code path clarifies the flow of execution. When an SCTP packet is read from the network, the transport loop processes chunks sequentially. The parser reads counts and enters a loop to extract individual elements using static helper methods.

// Vulnerable loop in SctpSackChunk.cs
ushort numGapAckBlocks = NetConvert.ParseUInt16(buffer, startPosn + 8);
ushort numDuplicateTSNs = NetConvert.ParseUInt16(buffer, startPosn + 10);
 
int reportPosn = startPosn + FIXED_PARAMETERS_LENGTH;
for (int i=0; i < numGapAckBlocks; i++)
{
    // Reads out-of-bounds if numGapAckBlocks is larger than actual payload
    ushort start = NetConvert.ParseUInt16(buffer, reportPosn);
    ushort end = NetConvert.ParseUInt16(buffer, reportPosn + 2);
    reportPosn += 4;
}

The patch addresses this structural vulnerability by verifying the required length against the declared chunk length before processing the loops. It ensures the chunk is physically long enough to store both the fixed header and the declared counts of blocks and TSNs.

// Patched logic in SctpSackChunk.cs
int requiredLen = SCTP_CHUNK_HEADER_LENGTH + FIXED_PARAMETERS_LENGTH
    + numGapAckBlocks * GAP_REPORT_LENGTH
    + numDuplicateTSNs * DUPLICATE_TSN_LENGTH;
 
if (requiredLen > chunkLen)
{
    throw new ApplicationException("The SCTP SACK chunk was too short for the counts specified.");
}

Additionally, defense-in-depth is implemented within the main transport receive loop. A catch block is registered for IndexOutOfRangeException and ArgumentException to prevent unhandled exceptions from terminating the background receiver thread permanently.

Exploitation & Attack Path

An attacker can exploit this vulnerability by sending a single, crafted SCTP SACK chunk to an established WebRTC connection. No authentication is required within the SCTP protocol layer once the connection has been established. The attacker only needs to know or guess the active communication channel and IP endpoints.

To trigger the denial of service, the attacker sets the numGapAckBlocks field to a high value (such as 65,535) in the chunk header while providing no trailing data. As the parser loops over the declared counts, the index increments beyond the 262,144-byte physical buffer allocation boundary. This forces the runtime to raise an unhandled exception.

If the specified count is smaller (e.g., 100) and does not exceed the absolute buffer limit, the loop reads stale memory instead. This does not crash the system immediately, but instead populates the internal SACK tables with garbage records, leading to state corruption, transport desynchronization, and silent data channel failures.

Impact Assessment

The security impact of this vulnerability is classified as a high-severity Denial of Service (DoS). Because SIPSorcery's SCTP implementation utilizes a single thread to handle the incoming WebRTC transport, the termination of this thread causes the entire WebRTC connection to freeze. Users on the affected session are disconnected, and no further data can be sent or received.

The secondary impact of silent state corruption presents a complex challenge. By feeding stale buffer memory containing historical packet data into the SACK state machine, an attacker can corrupt the transmission control variables. This can cause the library to drop packets, miscalculate packet round-trip times, or enter an endless retransmission loop.

This vulnerability is tracked under advisory GHSA-jwjp-4649-v8jp. While there are no active reports of wild exploitation, public proof-of-concept tests are available in the open-source repository. The low attack complexity and absence of prerequisite privileges elevate the overall operational risk.

Remediation & Mitigation

The primary and recommended mitigation is to update the SIPSorcery dependency to a version containing the official patch. This is resolved in SIPSorcery Pull Request #1772 and commit a2466550bb2a28821c73fb1961bc33dcc467f8cf.

If immediate dependency updates are not possible, defensive mitigations must be implemented at the network level. A Web Application Firewall (WAF) or an Intrusion Detection System (IDS) can be configured to filter incoming SCTP packets. Rules should validate that incoming SCTP SACK chunks conform to the expected length requirements based on the declared block counts.

Developers using the library should ensure that their applications implement health-check mechanisms to detect dead transport threads. If WebRTC data channel activity ceases without a corresponding closure event, the application should programmatically tear down and rebuild the affected RTCPeerConnection to recover the service.

Fix Analysis (1)

Technical Appendix

CVSS Score
7.5/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Affected Systems

SIPSorcery C# .NET WebRTC Library

Affected Versions Detail

Product
Affected Versions
Fixed Version
SIPSorcery
SIPSorcery
< commit a2466550bb2a28821c73fb1961bc33dcc467f8cfcommit a2466550bb2a28821c73fb1961bc33dcc467f8cf
AttributeDetail
CWE IDCWE-125 / CWE-248
Attack VectorNetwork
CVSS v3.1 Score7.5 (High)
ImpactDenial of Service (DoS) / State Corruption
Exploit StatusProof-of-Concept
Affected ComponentSctpSackChunk.ParseChunk

MITRE ATT&CK Mapping

T1499Endpoint Denial of Service
Impact
T1499.004Endpoint Denial of Service: Application Exhaustion Flood
Impact
CWE-125
Out-of-bounds Read

The software reads data past the end, or before the beginning, of the intended buffer.

Vulnerability Timeline

Vulnerability analyzed and fix commit integrated
2026-08-10
GitHub Security Advisory published
2026-08-10

References & Sources

  • [1]GitHub Security Advisory GHSA-jwjp-4649-v8jp
  • [2]SIPSorcery Pull Request #1772
  • [3]Official Fix Commit

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•1 day ago•CVE-2026-11748
6.9

CVE-2026-11748: Unauthenticated LDAP Injection in Central Dogma Server Authentication

An LDAP injection vulnerability exists in the centraldogma-server-auth-shiro module of LY Corporation Central Dogma before version 0.84.0. The search logic dynamically constructs LDAP search filters by interpolating user-provided usernames without escaping RFC 4515 metacharacters. Unauthenticated remote attackers can leverage this flaw to bypass authentication, enumerate directory hierarchies, and access unauthorized resources.

Alon Barad
Alon Barad
9 views•6 min read
•1 day ago•CVE-2026-11746
9.4

CVE-2026-11746: Use of Hard-coded ZooKeeper Replication Secret 'ch4n63m3' in Central Dogma Server

CVE-2026-11746 is a critical vulnerability in Central Dogma Server prior to version 0.84.0, where an embedded ZooKeeper replication secret silently falls back to a publicly known, hard-coded default string ('ch4n63m3'). Remote attackers with access to the replication network can authenticate as legitimate cluster peers, potentially leading to unauthorized data exposure, state manipulation, or complete cluster takeover.

Amit Schendel
Amit Schendel
7 views•6 min read
•1 day ago•CVE-2026-56665
4.2

CVE-2026-56665: Logical Validation Bypass in ZITADEL External JWT Identity Provider

A logical verification flaw in ZITADEL's external JWT Identity Provider validation allows attackers to bypass session expiration checks. If an incoming JWT lacks the 'exp' claim, the system skips validation entirely, creating an indefinitely valid session. This issue has been addressed in versions 3.4.12 and 4.15.2.

Alon Barad
Alon Barad
6 views•7 min read
•1 day ago•CVE-2026-59149
6.5

CVE-2026-59149: Sibling Directory Path Traversal in Mockoon Backend Server

CVE-2026-59149 identifies a directory traversal vulnerability in `@mockoon/commons-server`, the backend mock-server library powering the Mockoon application. The flaw occurs in the path containment validation logic used during raw file response generation. An unauthenticated attacker can exploit this weakness to retrieve arbitrary files from sibling directories sharing a common prefix with the designated static base directory.

Amit Schendel
Amit Schendel
9 views•5 min read
•1 day ago•CVE-2026-59148
8.8

CVE-2026-59148: Unauthenticated Administrative API and CORS Misconfiguration in Mockoon

An in-depth analysis of CVE-2026-59148, a high-severity flaw in Mockoon where unauthenticated administrative endpoints and a wildcard Cross-Origin Resource Sharing (CORS) policy allow remote execution, state poisoning, and credential theft.

Alon Barad
Alon Barad
11 views•6 min read
•1 day ago•CVE-2026-56666
4.8

CVE-2026-56666: Account Takeover via Improper Email Verification in ZITADEL Federated Identity Handler

An improper authentication vulnerability (CWE-287) in ZITADEL's external identity provider handler before version 4.15.3 allows remote attackers to perform complete account takeover. When auto-linking by email is enabled, ZITADEL verifies that the local target account has a verified email address but fails to verify if the external provider confirmed ownership of that same email. Attackers can exploit this by registering an unverified account with a victim's email address on a permissive external provider, leading to unauthorized account binding and persistent access.

Amit Schendel
Amit Schendel
7 views•7 min read