Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
streambox-cve-2026-28618 — Заметки с сокращениями по CVE-2026-28618 / лаборатория StreamBox APV — запись в кучу в объект сессии через несоответствие высоты FRAME | Kitploit
Инструменты/GitHubGitHub/raafatabualazm/streambox-cve-2026-28618
Безопасность AndroidКриминалистика памятиАнализ уязвимостейЭксплуатацияОбратная инженерияМобильная безопасностьСтатьи и ИсследованияОбучение и ОбразованиеЭксплуатация Бинарных Файлов

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHubraafatabualazm/streambox-cve-2026-28618

streambox-cve-2026-28618

Заметки с сокращениями по CVE-2026-28618 / лаборатория StreamBox APV — запись в кучу в объект сессии через несоответствие высоты FRAME

Репозиторий
2 ч 55 мин назадЕщё не проверено

Zero-click APV в плеере, который автоматически воспроизводит общие клипы

CVE-2026-28618 в StreamBox — тот же класс декодера, что и в реально эксплуатируемом Android APV RCE, превращённый в запись в кучу по объекту сессии.

Этот репозиторий — публичный, отредактированный разбор: флаги, токены экземпляра и ключ 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: переполнение буфера кучи в dec_frm_prepare из OpenAPV. Тот же класс, тот же декодер, что и CVE-2026-0006, zero-click APV RCE, эксплуатировавшийся в дикой природе ранее в этом году.

Лаборатория упаковывает эту запись в виде игры. Переполните жёстко заданную плоскость Y 64×64, разрушьте соседний объект сессии, перенаправьте teardown в handlers[2], и Worker вернёт флаг.

Набор — это два zip-архива из лаборатории:

  • streambox-lab.apk.zip — плеер
  • make_clip.py.zip — как были собраны клипы библиотеки 64×64, и битовый поток, который вы переполняете

Плеер

Макет плеера StreamBox, автоматическое воспроизведение общего клипа, диагностика, раскрывающая arena и session

PlayerActivity делает:

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

openTier(1) — частичное попадание (сессия затронута, несовпадение токена). openTier(2) — это win(). PremiumActivity отправляет POST с нативным состоянием в лабораторию:

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)
}

При загрузке приложение уже выполнило POST /api/instance и NativeDec.setPlatinumToken(token). Именно этот токен переполнение должно записать в сессию.

Куча: 64×64 Y, затем сессия

Плоскость Y размером 0x2000 байт, объект сессии сразу после, дополнительные строки FRAME переполняются в magic/token/handler

root@kitploit:~
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. FRAME выше 64 записывает 10-битные сэмплы прямо в session.

После декодирования:

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: разрушить magic, совпадение token, индекс handler 2

make_clip.py — это путь клипа

Генератор лаборатории рисует 32 кадра 64×64 RGB, конвертирует в yuv422p10le и вызывает эталонный энкодер OpenAPV:

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

Каждый встроенный клип — это 32 access unit FRAME 64×64:

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

Заголовок FRAME: патч u24be height по смещению файла +0x16 с 64 на 72

Плеер по-прежнему выделяет 64×64. Пропатчите каждый AU frame_height 64 → 72:

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

Поделитесь им (SEND / VIEW / streambox://?url=). Автовоспроизведение — это и есть эксплойт.

Более чистое переполнение — изменить H в make_clip.py на 72 или 128 и перекодировать, чтобы дополнительные строки Y были реальными данными изображения. Строка 64 плоскости шириной 64 с 10-битными сэмплами — это 128 байт:

  • пиксели 0–3 → magic сессии (должен перестать быть OBMAERTS)
  • пиксели 4–5 → токен экземпляра (g_token)
  • пиксели 6–7 → индекс handler 2

APV — кодек с потерями; точные 10-битные значения через oapv_app_enc требуют QP 0 / почти без потерь.

Связанный публичный PoC для родительского класса уязвимости: mobilehackinglab/CVE-2026-0006-openapv-poc.

Докажите запись

Python urllib получает Cloudflare 1010. curl с мобильным UA работает.

Worker отклоняет оригинальный magic с no overflow evidence: session magic intact. ASCII STREAMBO (отличающиеся байты от LE uint64) считается записью.

Отредактированный unlock: POST /api/instance, затем POST /api/unlock, возвращающий MHL{REDACTED}

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

win() — это то, что плеер показывает, когда loadClip возвращает 2:

Экран SESSION COMPROMISED с отредактированным флагом

Ссылки

  • Этот репозиторий: вспомогательные скрипты + диаграммы
  • Android Security Bulletin — сентябрь 2026 (CVE-2026-28618, A-492492028, Media Codecs)
  • Разбор CVE-2026-0006 — Mobile Hacking Lab
  • PoC CVE-2026-0006
  • OpenAPV (Academy Software Foundation)
  • Патч AOSP — валидация размеров в dec_frm_prepare

Отказ от ответственности

Авторизованные заметки по лабораторному упражнению StreamBox от Mobile Hacking Lab. Никакого APK, никаких живых токенов, никакого флага. Не запускайте эти примитивы против чего-либо, чем вы не владеете или на тестирование чего у вас нет разрешения.

Скачать инструмент