Executive brief
SIPGO is a Go library used to build SIP (VoIP signaling) servers and clients. An unauthenticated attacker can send a specially crafted SIP message with a very large Content-Length header to cause the server to allocate excessive memory, crashing the service and disrupting communications.
Technical details
The vulnerability is a memory allocation flaw (CWE-789) in the stream parser's `parseSingle()` function. The parser allocates a buffer for the SIP message body based on the attacker-controlled Content-Length header (up to 2^32-1 bytes) without validating the size first. The size check (ParseMaxMessageLength of 65535) runs only after allocation, allowing an attacker to trigger out-of-memory conditions. The vulnerability affects all stream transports (TCP, TLS, WebSocket, WebSocket Secure) and requires no authentication or user interaction. A patch is available in version 1.4.1.
Affected products
- emiago sipgo <= 1.4.0
Timeline
- 2026-06-30: disclosed: Published by GitHub Advisory Database
- 2026-09-22: advisory: Updated in GitHub Advisory Database
- 2026-06-30: patched: Fix released in version 1.4.1