🤖Сказ о том, как в XBOW собрали полную цепочку эксплойтов для 🧊Chrome стоимостью $250...
🤖Сказ о том, как в XBOW собрали полную цепочку эксплойтов для 🧊Chrome стоимостью $250 000 13 октября 2026 года ведущий инженер и ИИ-исследователь компании XBOW Брендан Долан-Гавитт представил технический разбор полной цепочки эксплойтов для браузера Chrome, которая принесла команде первые $250 000 по обновлённым в апреле 2026 года правилам программы вознаграждения Google VRP. Если до появления больших языковых моделей разработка подобного эксплойта отнимала у группы из 4 специалистов от 6 до 9 месяцев, то новую цепочку в подписанной сборке Chrome Beta удалось собрать с нуля всего за 6 дней со 2 по 7 августа 2026 года при затратах около $40 000 на запросы к API по архивным логам системы Codex. Вместо запуска одного универсального агента работу разделили на 5 параллельных направлений, где ИИ-агенты на базе ИИ-модели gpt-5.6-sol от OpenAI искали уязвимости в исходном коде, проверяли гипотезы и создавали прототипы для проверки концепции (PoC), а ИБ-исследователи XBOW задавали контекст, отбирали цели и проектировали модульные интерфейсы между этапами. ❗️ Цепочка эксплойтов преодолела защитные рубежи браузера за счёт нарушения инвариантов неизменяемости данных на стыке разных подсистем. 1️⃣ На первом этапе уязвимость деоптимизации в компиляторе Maglev внутри файла maglev-code-generator.cc превратила изменяемый числовой объект HeapNumber в разделяемый литерал, что через метод Array.prototype.at() и перезапись метаданных Uint8Array открыло чтение и запись по всей 4-гигабайтной песочнице движка V8 (уязвимость 547819997, закрыта патчем 8255554). 2️⃣ На втором этапе эксплойт удалил активное представление Uint8Array из списка отсоединения буфера при передаче данных в ImageDecoder и вызвал уязвимость времени проверки и времени использования (TOCTOU) в функции WEBPImageDecoder::DecodeSingleFrame(), подменив на лету кадр анимированного файла WebP для переполнения кучи PartitionAlloc и перезаписи структуры WebPIDecoder ради одной произвольной 64-битной записи вне песочницы V8 (уязвимость 548509153, исправлена патчами 8266257 и 8352899). Этого хватило для модификации базового адреса таблицы указателей кода Wasm и перехода на гаджет jmp rcx в библиотеке chrome.dll, который передал управление на собранный по технике «прыжков по островкам» примерно 70-байтный загрузчик из 13 64-битных констант в сгенерированном компилятором Liftoff коде Wasm.