Профиль: Аноним (вход | регистрация) неRU opennet.me  
OpenNET

[ новости /+++ | форум | теги |    ]

Критическая уязвимость в декодировщике Brotli, затрагивающая Node.JS, Bun, браузеры, HTTP-клиенты и другие проекты

24.10.2026 19:18 (MSK)

В библиотеке с эталонной реализацией декодировщика формата сжатия данных Brotli выявлена уязвимость (CVE-2026-111497, кодовые имена Broccoli2Shell и HTTP2Shell), приводящая к переполнению буфера при обработке специально оформленных сжатых данных. По данным Google уязвимость может использоваться для удалённого выполнения кода при атаке на проекты, использующие официальную реализацию декодировщика Brotli. Среди затрагиваемых уязвимостью проектов: Node.js, Bun, Envoy, Istio, web-браузеры, прокси-серверы, HTTP-клиенты, HTTP-серверы, архиваторы, прокси-серверы, UEFI-прошивки, просмотрщики JPEG XL, декодирующие контент библиотеки для Python, Ruby, Java, PHP и .NET и связанные с ними зависимости.

Проблема была выявлена компанией OpenAI в феврале этого года и блокирована в кодовой базе Brotli через отбрасывание некорректных потоков при декодировании. 22 октября были опубликованы корректирующие выпуски Brotli 1.0.10, 1.1.1 и 1.2.1 в которых явно было заявлено об устранении уязвимости и исправлена суть проблемы. В этот же день был создан прототип эксплоита, позволивший удалённо выполнить код в лабораторных условиях, при использовании нестандартных сборок (в стандартных сборках происходило аварийное завершение). Позднее компания Imperva зафиксировала атаку на штатные сборки Node.js 24.22.0 в Linux-окружении на системе ARM64.

Уязвимость приводит к записи за пределы буфера из-за некорректной обработки ошибок в процессе разбора блоков в сжатом потоке. Функция DecodeBlockTypeAndLength() вместо кода ошибки возвращала только значения true и false, что не позволяло вызывающему коду отличить повреждение потока от состояния, требующего передачи в функцию дополнительных данных. В случае указания в потоке некорректного типа блока сжатых данных, декодировщик воспринимал его не как ошибку, а как состояние нехватки данных, требующее дополнительного чтения из потока. Но так как выделенный буфер не был рассчитан на дополнительно прочитанные данные, они записывались в область за его пределами, в которой хранилось внутреннее состояние декодировщика.

Подверженные уязвимости проекты:

  • Эталонная библиотека brotli, проблема проявляется начиная с выпуска 1.0.3 и устранена в обновления 1.0.10, 1.1.1 и 1.2.1. Уязвимость затрагивает приложения и библиотеки, использующие библиотеку libbrotlidec.
  • JavaScript платформа Node.js, проблема устранена в обновлениях 26.12.1, 24.22.1 и 22.23.4. Атакованы могут быть приложения, использующие для запроса стороннего контента метод fetch(), который автоматически декодирует HTTP-ответы с заголовком "Content-Encoding: br". Также уязвимость проявляется при прямом вызове методов zlib.brotliDecompress*(), createBrotliDecompress() и brotli.decompress() для распаковки стороннего содержимого или при приёме HTTP-запросов с разбором через библиотеки Express 5 и body-parser 2.x.
  • Python-пакеты brotli и brotlicffi (исправление предложено в версии 1.2.1) и использующие их проекты, среди которые популярные библиотеки urllib3, aiohttp, httpx и Scrapy, которые декодируют ответы с заголовком "Content-Encoding: br" при обращении к внешним web-ресурсам.
  • HTTP-серверы, HTTP-прокси, HTTP-клиенты и web-браузеры, поддерживающие сжатие Brotli ("Accept-Encoding: br"). В Apache httpd поставляется mod_brotli (отключён по умолчанию). Для nginx доступен сторонний модуль ngx_brotli (уязвимость уже устранена). В Chrome/Chromium и Firefox проблема уже устранена в одном из прошлых обновлений. В прокси-сервере Envoy уязвимость устранена в выпусках 1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12.
  • .NET runtime при использовании в приложении методов BrotliDecoder, BrotliStream и HttpClient. Уязвимость пока не устранена.
  • PHP-расширение brotli при использовании функции brotli_uncompress(). Исправление в процессе подготовки.
  • Ruby-пакет brotli при использовании метода Brotli.inflate. Уязвимость пока не устранена.
  • СУБД DuckDB при импорте сжатых Parquet-файлов. Исправление в процессе подготовки.
  • СУБД ClickHouse. Исправление в процессе подготовки.
  • СУБД YDB. Уязвимость пока не устранена.
  • Apache Arrow при импорте сжатых Parquet-файлов. Исправление в процессе подготовки.
  • libjxl (при сжатии метаданных в JPEG XL используется Brotli). Исправление в процессе подготовки.
  • Архиваторы NanaZip, 7-Zip-zstd и p7zip при распаковке br-файлов. Уязвимость не устранена.
  • MuPDF. Уязвимость не устранена.
  • UEFI-прошивки на базе EDK II и UEFITool, сжатые при помощи Brotli. Исправление в процессе подготовки - EDK II и UEFITool.
  • JavaScript-платформа Bun. Уязвимость устранена в версии 1.4.4.
  • Платформа для управления микросервисами Istio. Уязвимость устранена в версиях 1.29.9, 1.30.6 и 1.31.2.
  • curl и libcurl, уязвимость проявляется при наличии в зависимостях уязвимой версии libbrotlidec.
  • Парсеры формата шрифтов Web Open Font (WOFF), в котором используется Brotli.
  • Brotli4j, SumatraPDF, Ghostscript, CatBoost и YTsaurus. Уязвимость устранена в одном из обновлений.


  1. Главная ссылка к новости (https://www.aikido.dev/blog/py...)
  2. OpenNews: Компания Google представила новый алгоритм сжатия данных Brotli
  3. OpenNews: Уязвимость в Lhasa, библиотеке с реализацией форматов сжатия LZH и LHA
  4. OpenNews: Уязвимость в zlib, проявляющаяся при сжатии специально оформленных данных
  5. OpenNews: Уязвимость Zip Slip, затрагивающая библиотеки для распаковки архивов
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66537-brotli
Ключевые слова: brotli
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (31) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 19:23, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/–
    Как страшно жить!
     
     
  • 2.22, Аноним (22), 20:28, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Трус не читает opennet.
     
  • 2.30, нах. (?), 20:33, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    не живи, я тебе разрешаю! и общество только спасибо скажет.
     

  • 1.2, Аноним (2), 19:23, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/–
    > Brotli

    Впервые слышу, чо это вообще?

     
     
  • 2.3, titt (?), 19:26, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    альтернатива gzip, чтобы сжимать данные веб трафика и тд
     
     
  • 3.28, нах. (?), 20:32, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    помню славные времена диалапа, тогда ничего сжимать не надо было и страницы грузились даже на тех соединениях быстрее современного оптимизированного вэба, когда и где свернули не туда?
     
  • 2.6, Ятыаноним (?), 19:30, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    элитные гуглоидные программисты накодили замену gzip
     
     
  • 3.20, Аноним (20), 20:27, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    gzip то еще в апреле уязвимый оказался!
     
  • 2.8, Аноним (8), 19:49, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    Brotli q4 имба, заменяет gzip q3 по скорости и качеству сжатия. Там ещё чёт со словарями есть, но уже менее универсально.
     
  • 2.14, Аноним (14), 20:07, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    ты браузер-то открой

    > accept-encoding gzip, deflate, br, zstd

     
     
  • 3.27, нах. (?), 20:31, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    и чо это за китайская грамота? по-русски изъясняйся
     
  • 2.19, Аноним (20), 20:25, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/–
    Встроено сейчас в все браузеры!
     
     
  • 3.23, нах. (?), 20:29, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    в браузеры много чо встроено и 90% из этого нигде не используется.
     
  • 2.32, Анонимусс (?), 20:34, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Впервые слышу, чо это вообще?

    Вы бы поскромнее что ли... зачем так хвастаться своей безграмотностью и ограниченностью?
    В мире множество вещей, которыми вы пользуетесь и даже не догадываетесь об их существовании.

     

  • 1.4, laindono (ok), 19:28, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    Сишечные CVE марки "Каждый день".
     
     
  • 2.7, Аноним (7), 19:31, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/–
    В руки программиста попал инструмент, где надо делать самому, а он привык к полу-автовождению.
     
     
  • 3.12, Аноним (20), 19:57, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    Увы не нашлось в Google такого уровня программистов как на opennet!
     
     
  • 4.15, Аноним (15), 20:09, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    а им такие и не нужны, результат в новости.
     
  • 3.13, Аноним (13), 20:06, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > В руки программиста попал инструмент, где надо делать самому

    Ну он и сделал - очередную CVE.

     
  • 2.9, Аноним (9), 19:53, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    В проекте, где почти весь код на typescript.
     
     
  • 3.18, Аноним (18), 20:20, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > В проекте, где почти весь код на typescript

    ... что прекрасно показывает, что одного файла на dыpяxе достаточно чтобы испортить весь проект на любом языке)))
    Спасибо что обратили на это внимание!

     
  • 2.16, Инопланетянин (?), 20:11, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ты лучше скажи, дописал убийцу Unity или нет?
     
  • 2.24, нах. (?), 20:29, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    дебич аватарку смени, не в детском саду!
     

  • 1.10, Аноним (10), 19:55, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    а говорили xz плохой...
     
     
  • 2.33, Аноним (33), 20:34, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > а говорили xz плохой

    Кто говорил?

     

  • 1.11, Аноним (7), 19:55, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    >Среди затрагиваемых уязвимостью проектов:

    Может в "академии" что-то ни то?

    >декодировщика формата сжатия данных Brotli

    К чему такое обилие "доброхотов" на одну функцию сжатия?

     
  • 1.17, Аноним (18), 20:16, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    Уязвимость из-за Out-of-bounds write.
    Дыpeнь в файле c/dec/decode.c [1]
    И сразу же под ударом десяток проектов, которым хватило глупости использовать эталонную библиотеку на С(ve)-язычке.
    Никогда такого не было и вот опять!

    1) github.com/google/brotli/commit/da9806362874b9bd4b552a3af360b5d6347beb12)

     
  • 1.21, Анонимусс (?), 20:28, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    Правду сказал какой-то безымянный анон на опенке:
    "C in CVE stands for C language" (c)

    Причем уязвимость жила в коде с марта 2018 года.
    И ни один из тыщщи глаз не заметил.

    А то, что уязвимость найдена ЫЫ отдельно доставляет.
    Ждет воя "ВыФсеВрете!!!111" от кордвадубных луddитов :)

     
  • 1.25, нах. (?), 20:30, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    очередная надо понимать уязвимость эксплуатационная возможность которой только в теории в тепличных условиях
     
  • 1.26, Гость (??), 20:30, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    надо было на C++ с умными указателями и контейнерами писать.
     
     
  • 2.31, нах. (?), 20:33, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > надо было на C++ с умными указателями и контейнерами писать

    раз надо, то пиши

     

  • 1.29, Твайлайт Спаркл 2 (?), 20:32, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    Веб-сервера вряд ли уязвимы, они только сжимают данные, но не разжимают. Как минимум модуль ngx_brotli, хотя всё равно стоит его перекомпилировать…
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    XSQUARE
    Inferno Solutions
    Hosting by Hoster.ru
    Хоcтинг: