CVE-2026-73324: VLC media player 3.0.0 through 3.0.23 Heap Out-of-Bounds Read via Unterminated RealRTSP Response Line
VLC media player copies an RTSP response line into a fixed buffer without guaranteeing termination and then treats that buffer as a C string. RtspReadLine in modules/access/rtsp/access.c calls strncpy with the full buffer length, which writes no terminator when the source line is at least as long as the destination, and rtspget in modules/access/rtsp/rtsp.c allocates that buffer as BUFSIZE bytes and passes it to strdup. When a server returns a line of 4096 bytes or more, strdup measures its length past the end of the allocation and copies adjacent heap bytes until an incidental zero byte. Because the affected line is the Session header, the disclosed bytes are retained as the session identifier and sent back to the server on every subsequent request, so the operator of a hostile server reads heap memory from the client rather than inferring it. The attacker controls the line length and therefore how far the read runs. A single playlist entry naming a realrtsp URL is sufficient. The module is a build-time option, disabled in some distribution packages and enabled in the official VideoLAN builds.
Affected Software
Event History
Frequently Asked Questions
Who is exposed to this issue?
Users of VLC 3.0.0 through 3.0.23 are exposed when the RealRTSP module is present and enabled. Official VideoLAN builds enable the module, while some distribution packages disable it at build time.
What must an attacker do to trigger the memory disclosure?
The attacker needs to operate or control a RealRTSP server and induce the user to open a playlist entry containing a realrtsp URL. The server then returns a Session header line of at least 4096 bytes; no attacker authentication or additional interaction is described beyond the user opening the entry.
What information does the hostile server receive?
VLC stores the over-read data as the RTSP session identifier and sends it back to the server on subsequent RTSP requests. This allows the server operator to directly read adjacent client heap memory until an incidental zero byte terminates the copied string.