Взлом INSTAR IP-камер (unauth RCE) через ARM ROP-chain без утечки адресов

#hacking #RCE #ROP_chain #0day #IPcamera #instar #shodan

Michael Imfeld из modzero нашел и проэксплуатировал 0day в немецких IP-камерах INSTAR IN-8401 2K+ и 4K. По данным Shodan, на текущий момент около 12к устройств INSTAR светятся в интернете. Исследователь построил целую ARM ROP-chain для обхода ASLR без единой утечки адресов с достижением unauthRCE.​

1. Доступ к firmware

Root через UART-интерфейс с прерыванием автозагрузки U-Boot и модификацией bootargs — добавление init=/bin/sh — создание root-пользователя — полный дамп файловой системы.​

2. Находим баг

В компоненте fcgi_server обнаружена кастомная реализация Base64-декодирования в обработчике basic auth. Декодированные данные копируются через memcpy в фиксированный стековый буфер 516 байт без проверки длины. Прям по классике, stack-based buffer overflow с перезаписью return address.​

#hacking #RCE #ROP_chain #0day #IPcamera #instar #shodan

3. Обход ASLR без утечки

libc с PIE + ASLR = адрес system() неизвестен. Классические методы утечки не работают, поскольку любой ROP chain крашит бинарник, и утечка становится бесполезной после релокации.​ Тут помогла эксплуатация GOT/PLT. В уязвимой функции вызывается isalnum() из libc, ее адрес уже разрешен и лежит в GOT. Расстояние между isalnum и system — константа 0x13230 байт.​

4. ROP-chain магия

— Читаем isalnum@got через gadget ldr r6, [r3, #0x10]​
— Добавляем offset 0x13230 через gadget add r6, fp, r6 и получаем адрес system​
— Пишем вычисленный адрес обратно в GOT через str r0, [r4, #4] (GOT writable благодаря partial RELRO)​
— Готовим аргументы в r0​
— Вызываем isalnum@plt, который теперь прыгает на system вместо isalnum​

ВУАЛЯ! UnauthRCE одним запросом на 12k камер. One-shot эксплойт без утечек и множественных запросов.

Подробности: https://modzero.com/en/blog/no-leak-no-problem/

No Leak, No Problem - Bypassing ASLR with a ROP Chain to Gain RCE

INSTAR оперативно пропатчили все проблемы после responsible disclosure.

Этот обзор и детали опубликованы после 90-дневного эмбарго.​

Так что никаких вам 12к камер через one-shot.