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
streambox-cve-2026-28618 — Redigierte Notizen zu CVE-2026-28618 / StreamBox APV Lab — Heap-Schreibzugriff in ein Session-Objekt durch FRAME-Höhen-Diskrepanz | Kitploit
Tools/GitHubGitHub/raafatabualazm/streambox-cve-2026-28618
Android-SicherheitSpeicherforensikSchwachstellenanalyseExploitationReverse EngineeringMobile SicherheitPapers & ForschungLernen & BildungBinary-Exploitation

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHubraafatabualazm/streambox-cve-2026-28618

streambox-cve-2026-28618

Redigierte Notizen zu CVE-2026-28618 / StreamBox APV Lab — Heap-Schreibzugriff in ein Session-Objekt durch FRAME-Höhen-Diskrepanz

Repository anzeigen
vor 2h 54mNoch nicht geprüft

Zero-Click-APV, in einem Player, der geteilte Clips automatisch abspielt

CVE-2026-28618 in StreamBox — dieselbe Decoder-Klasse wie die in-the-wild Android APV RCE, verwandelt in einen Heap-Write gegen ein Session-Objekt.

Dieses Repo ist ein öffentliches, redigiertes Writeup: Flags, Instance-Tokens und der HMAC-Schlüssel sind weggelassen. Die APK und make_clip.py gehören Mobile Hacking Lab; sie werden hier nicht gespiegelt.

Attack chain

Was wir gelöst haben

StreamBox ist ein kleiner APV-Player. APV steht für Advanced Professional Video (RFC 9924), Samsungs lizenzfreier Codec, dieselbe Familie, die im Media-Stack von Android ausgeliefert wurde. Der Pitch des Labs ist ein Satz: der Player spielt geteilte Clips beim Eintreffen ab.

SEND, VIEW oder streambox://?url=… legt eine Datei in files/incoming.apv ab und NativeDec.loadClip() läuft. Kein zusätzlicher Tap auf den Clip.

Der Bug ist CVE-2026-28618: ein Heap-Buffer-Overflow in dec_frm_prepare von OpenAPV. Dieselbe Klasse, derselbe Decoder wie CVE-2026-0006, die Zero-Click-APV-RCE, die Anfang dieses Jahres in-the-wild ausgenutzt wurde.

Das Lab verpackt diesen Write als Spiel. Überlaufe die hartcodierte 64×64-Y-Ebene, zerschlage ein angrenzendes Session-Objekt, leite den Teardown in handlers[2] um, und der Worker gibt die Flag zurück.

Das Kit besteht aus zwei Zips aus dem Lab:

  • streambox-lab.apk.zip — der Player
  • make_clip.py.zip — wie die 64×64-Bibliotheksclips gebaut wurden, und der Bitstream, den du überläufst

Der Player

StreamBox player mock, shared clip auto-playing, diagnostics leaking arena and session

PlayerActivity macht:

root@kitploit:~
NativeDec.setVideoTitle(name);
status = NativeDec.loadClip(path);
// WebView bridge later calls Android.openTier(status)

openTier(1) ist ein Teil-Treffer (Session berührt, Token-Mismatch). openTier(2) ist win(). PremiumActivity sendet den nativen Zustand per POST an das Lab:

root@kitploit:~
POST /api/unlock
{
  "instance_id": <from POST /api/instance>,
  "tier": 3,
  "session_hex": hex(sessionProof[64]),
  "ticket": HMAC-SHA256(ticketKey, instance_id + ":" + session_hex)
}

Beim Boot hat die App bereits POST /api/instance und NativeDec.setPlatinumToken(token) ausgeführt. Dieser Token ist es, den der Overflow in die Session schreiben muss.

Heap: 64×64 Y, dann die Session

Y plane of 0x2000 bytes, session object immediately after, extra FRAME rows overflow into magic/token/handler

root@kitploit:~
arena   = calloc(1, 0x206040);
session = arena + pad + 0x2000;
*(uint64_t *)session = 0x53545245414D424F;  /* bytes: "OBMAERTS" */

Das oapv_imgb_t ist hartcodiert auf 64×64, 10-Bit-YUV. Plane 0 (Y) beginnt bei arena+0. 64 × 64 × 2 = 0x2000. Mit pad == 0 sitzt die Session auf dem ersten Byte nach Y.

oapvd_decode() schreibt mit der Breite/Höhe der FRAME PBU. Ein FRAME, das höher als 64 ist, schreibt 10-Bit-Samples direkt in session.

Nach dem Decode:

root@kitploit:~
if (session->token == g_token) {        /* +0x08 */
    if (session->handler <= 2)          /* +0x0c */
        g_handlers[session->handler](); /* [2] == win() */
} else if (session->token != 0) {
    g_premium = 1;
}
memcpy(g_session_proof, session, 64);
return g_platinum ? 2 : g_premium ? 1 : 0;

sessionProof layout: smash magic, match token, handler index 2

make_clip.py ist der Clip-Pfad

Der Generator des Labs zeichnet 32 Frames von 64×64 RGB, konvertiert nach yuv422p10le und ruft den OpenAPV-Referenzencoder auf:

root@kitploit:~
oapv_app_enc -i anim.yuv -w 64 -h 64 -z 8 --input-csp 2 -d 10 -o out.apv -v 1

Jeder mitgelieferte Clip besteht aus 32 Access Units von FRAME 64×64:

root@kitploit:~
[u32be au_size] ['aPv1' + PBUs] × 32

FRAME header: patch u24be height at file +0x16 from 64 to 72

Der Player alloziert weiterhin 64×64. Patche jede AU frame_height 64 → 72:

root@kitploit:~
python3 scripts/patch_frame_height.py clip_pulse.apv -o overflow_height72.apv --height 72

Teile ihn (SEND / VIEW / streambox://?url=). Auto-Play ist der Exploit.

Ein saubererer Overflow besteht darin, H in make_clip.py auf 72 oder 128 zu ändern und neu zu encodieren, damit die zusätzlichen Y-Zeilen echte Bilddaten sind. Zeile 64 einer 64 breiten 10-Bit-Ebene sind 128 Bytes:

  • Pixel 0–3 → Session-Magic (muss aufhören, OBMAERTS zu sein)
  • Pixel 4–5 → Instance-Token (g_token)
  • Pixel 6–7 → Handler-Index 2

APV ist verlustbehaftet; exakte 10-Bit-Werte durch oapv_app_enc erfordern QP 0 / nahezu verlustfrei.

Verwandter öffentlicher PoC für die übergeordnete Bug-Klasse: mobilehackinglab/CVE-2026-0006-openapv-poc.

Beweise den Write

Python urllib bekommt Cloudflare 1010. curl mit einem Mobile-UA funktioniert.

Der Worker lehnt die ursprüngliche Magic mit no overflow evidence: session magic intact ab. ASCII STREAMBO (andere Bytes als der LE uint64) zählt als Write.

Redacted unlock: POST /api/instance then POST /api/unlock returning MHL{REDACTED}

root@kitploit:~
# fill TICKET_KEY in scripts/unlock.py from NativeDec.ticketKey()
python3 scripts/unlock.py

win() ist das, was der Player anzeigt, wenn loadClip 2 zurückgibt:

SESSION COMPROMISED screen with flag redacted

Links

  • Dieses Repo: Hilfsskripte + Diagramme
  • Android Security Bulletin — September 2026 (CVE-2026-28618, A-492492028, Media Codecs)
  • CVE-2026-0006 Writeup — Mobile Hacking Lab
  • CVE-2026-0006 PoC
  • OpenAPV (Academy Software Foundation)
  • AOSP-Patch — Dimensionsvalidierung in dec_frm_prepare

Haftungsausschluss

Autorisierte Lab-Notizen für die StreamBox-Übung von Mobile Hacking Lab. Keine APK, keine Live-Tokens, keine Flag. Führe diese Primitive nicht gegen irgendetwas aus, das dir nicht gehört oder für das du keine Testgenehmigung hast.

Tool herunterladen