Профиль: Аноним (вход | регистрация) не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 (версия 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 обязательно


Обсуждение (134) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 19:23, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/–
    > Brotli

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

     
     
  • 2.3, titt (?), 19:26, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/–
    альтернатива gzip, чтобы сжимать данные веб трафика и тд
     
     
  • 3.28, нах. (?), 20:32, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/–
    помню славные времена диалапа, тогда ничего сжимать не надо было и страницы грузились даже на тех соединениях быстрее современного оптимизированного вэба, когда и где свернули не туда?
     
     
  • 4.44, Аноним (44), 21:31, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +8 +/–
    Не надо сказок, помню я, как они грузились (это когда грузились вообще).
    Кстати, gzip-сжатие чуть ли не с появления веба использовалось.
     
  • 4.81, Brian (?), 00:58, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    сарказм? опера для тебя шутка?
     
  • 4.142, Ivan_83 (ok), 03:22, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ты видимо забыл что модем сам умел аппаратно чего то там сжимать, от чего большие тексты могли пролетать быстрее скорости линка мопеда :)

    Зато теперь ты вебкамщице модешь прямо через браузер дикпик показать в действии через вебку в обмен на деньги (тоже через браузер кстати) и то как у себя там крутится :)

    И ты же не будешь спорить что видео в браузере лучше чем та масяня и крокмен что мы мотрели через флешплеер плагин :)

     
  • 2.6, Ятыаноним (?), 19:30, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    элитные гуглоидные программисты накодили замену gzip
     
     
  • 3.20, Аноним (20), 20:27, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    gzip то еще в апреле уязвимый оказался!
     
  • 3.85, Ivan_83 (ok), 01:18, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ну так к слову им то оно окупилось.
    Даже если оно на 1% лучше жмёт при тех же затратах проца это уже весьма заметные деньги на их объёмах отдачи, даже если из этой отдачи считать только текст.
     
  • 2.8, Аноним (8), 19:49, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    Brotli q4 имба, заменяет gzip q3 по скорости и качеству сжатия. Там ещё чёт со словарями есть, но уже менее универсально.
     
  • 2.14, Аноним (14), 20:07, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • –4 +/–
    ты браузер-то открой

    > accept-encoding gzip, deflate, br, zstd

     
  • 2.19, Аноним (20), 20:25, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • –5 +/–
    Встроено сейчас в все браузеры!
     
     
  • 3.23, нах. (?), 20:29, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    в браузеры много чо встроено и 90% из этого нигде не используется.
     
     
  • 4.74, Аноним (20), 00:14, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Так тебя эксплоит не спросит, если ты не отключил все эти финтифлюшки.
     

  • 1.4, laindono (ok), 19:28, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/–
    Сишечные CVE марки "Каждый день".
     
     
  • 2.7, Аноним (7), 19:31, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    В руки программиста попал инструмент, где надо делать самому, а он привык к полу-автовождению.
     
     
  • 3.12, Аноним (20), 19:57, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    Увы не нашлось в Google такого уровня программистов как на opennet!
     
     
  • 4.15, Аноним (15), 20:09, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    а им такие и не нужны, результат в новости.
     
  • 4.34, Аноним (34), 20:35, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Просто на всех "советских программистов с профильным техническим образованием" (как тут любят дуть щеки) не хватит кора дуб даже в гугле.
     
     
  • 5.35, Аноним (34), 20:36, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    P.S. Ведь как они утверждают, настоящий программист должен сидеть на старом железе и превозмогать, а современное оборудование годится только для игрушек. (с)
     
     
  • 6.39, Аноним (39), 20:55, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    А разве нет?
    Чтобы писать код i9 9999900kfc не нужен, голова и руки нужны.
    Это чтобы компилить он нужен, но зачем все яйца держать в одной корзине?
     
     
  • 7.67, cnjzxtr (?), 23:13, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    тесты ты собрался гонять вечность?
     
  • 7.70, Аноним (70), 23:21, 24/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 3.13, Аноним (13), 20:06, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > В руки программиста попал инструмент, где надо делать самому

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

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

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

     
  • 2.16, Инопланетянин (?), 20:11, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ты лучше скажи, дописал убийцу Unity или нет?
     
  • 2.43, Аноним (43), 21:27, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Это ж ты тогда в одном треде про раст vs Cи показал как надо и заюзал знаковый int для длины . Может и здесь ты навайбкодил в brotli?
     
     
  • 3.54, Инопланетянин (?), 22:24, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    > и заюзал знаковый int для длины

    Я тебя разочарую https://google.github.io/styleguide/cppguide.html#Integer_Types

    > On Unsigned Integers

    Unsigned integers are good for representing bitfields and modular arithmetic. Because of historical accident, the C++ standard also uses unsigned integers to represent the size of containers - many members of the standards body believe this to be a mistake, but it is effectively impossible to fix at this point. The fact that unsigned arithmetic doesn't model the behavior of a simple integer, but is instead defined by the standard to model modular arithmetic (wrapping around on overflow/underflow), means that a significant class of bugs cannot be diagnosed by the compiler. In other cases, the defined behavior impedes optimization.

    That said, mixing signedness of integer types is responsible for an equally large class of problems. The best advice we can provide: try to use iterators and containers rather than pointers and sizes, try not to mix signedness, and try to avoid unsigned types (except for representing bitfields or modular arithmetic). Do not use an unsigned type merely to assert that a variable is non-negative.

     
     
  • 4.66, Аноним (-), 23:02, 24/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 4.84, Ivan_83 (ok), 01:15, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Рекомендации гугла / хотелки от своих рабов - не истина в последней инстанции.
    И хотя там многое правильно написано, я предпочитаю size_t/ssize_t для случаев когда число может быть связано с размером адресуемым в памяти.
    int хорош там где как то пофик, типа кода ошибки: 0 нет ошибки, а если не 0 - то чото делаем, плюс там же всегда понятен диапазон значений.

    Опять же рекомендации там про кресты, на С оно не всегда 1-в-1 перекладывается не теряя смысл.

     
     
  • 5.109, Инопланетянин (?), 02:13, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Рекомендации гугла / хотелки от своих рабов - не истина в последней
    > инстанции.

    В core guildelines такого же примерно мнения https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es107-dont-use-un

    Проблема в дурацком поведении singined int при переполнеии, а именно УБ. В другой ветке спорил с этим с упырем одним по этому поводу.

     
     
  • 6.134, Ivan_83 (ok), 02:53, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    По приведённой вами ссылке крестовое месиво и проблема там не в типах а в архитектуре/дизайне.

    vec.size() корень этой проблемы.
    1. В цикле вызывается ненужная функция, которая чёрти пойми что делает. Как минимум это роняет производительность.
    2. Не очевидно какого типа возвращаемое значение. Всмысле надо куда то лезть и смотреть.
    Даже если взять мой любимый size_t нет гарантий что его хватит и там на самом деле не off_t на 128+бит.
    3. Типа правильный вариант с gsl::index работать может в большинстве случаев только с деградацией производительности: для цикла где идут с уменьшением индекса и могут свалится в отрицательные значения gsl::index должен быть минимум на 1 бит для знака больше. Если vec.size() это size_t (что было бы логично) будет означать что gsl::index будет иметь отдельный код для обработки знака либо это будет 127 бит (для AMD64). В обоих вариантах приятного мало.

     
     
  • 7.140, Инопланетянин (?), 03:11, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > 1. В цикле вызывается ненужная функция, которая чёрти пойми что делает. Как минимум это роняет производительность.

    С -O2 вызова не будет.

     
     
  • 8.143, Ivan_83 (ok), 03:26, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    За конкретно vec size я не скажу Но я уже правил тормозной крестовый код с им... текст свёрнут, показать
     
  • 5.110, Аноним (13), 02:14, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Рекомендации гугла / хотелки от своих рабов - не истина в последней инстанции.

    То ли дело рекомендации опеннетных ванек.

    > я предпочитаю size_t/ssize_t

    Жаль, что ты не пишешь софт, который юзают миллиарды людей.

    > Опять же рекомендации там про кресты

    Ну да, signed/unsigned в крестах ведь совсем не такой, как в С.

     
     
  • 6.136, Ivan_83 (ok), 02:56, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Даже я точно не знаю где работает тот код который я написал, он же часто под BSD2 лицухой. И по работе я тоже не помню на пересчёт всех организации которые клиенты и тем более не знаю сколько там народу ходит через продукт.
    Вы можете и дальше думать что я пишу только в фантазиях для себя любимого :)
     
  • 5.112, Инопланетянин (?), 02:16, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > предпочитаю size_t/ssize_t для случаев когда
    > число может быть связано с размером адресуемым в памяти.

    У них также.


     
  • 4.122, Норм (?), 02:31, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Капец вот это шиза шиза бред бред.
    Цпп это клиника.
     
  • 3.105, laindono (ok), 02:09, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Полагаю это было в том контексте, где конкретный тип не важен. Если вообще было. Ну и я не кодил на сишечке лет 10.

    > и здесь ты навайбкодил

    Я не пользуюсь аишечкой для написания кода. Мне просто не интересно это.

     
  • 2.58, Bottle (?), 22:34, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Есть два типа программ:
    1. В которых находят уязвимости.
    2. Которыми никто не пользуется.
     
     
  • 3.65, Инопланетянин (?), 22:50, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ну все что смогли это сесть на шею и свесить ножки https://github.com/dropbox/rust-brotli
     

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

    Кто говорил?

     

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

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

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

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

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

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

     
     
  • 2.68, Инопланетянин (?), 23:16, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > И сразу же под ударом десяток проектов, которым хватило глупости использовать эталонную
    > библиотеку на С(ve)-язычке.
    > Среди затрагиваемых уязвимостью проектов: Node.js, Bun, Envoy, Istio, web-браузеры, прокси-серверы, HTTP-клиенты, HTTP-серверы, архиваторы, прокси-серверы, UEFI-прошивки, просмотрщики JPEG XL, декодирующие контент библиотеки для Python, Ruby, Java, PHP и .NET и связанные с ними зависимости.

    Получается один ты умный? Да?

     

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

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

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

     
     
  • 2.69, Инопланетянин (?), 23:17, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    Просто k/\0yн.
     

  • 1.25, нах. (?), 20:30, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    очередная надо понимать уязвимость эксплуатационная возможность которой только в теории в тепличных условиях
     
     
  • 2.75, Аноним (20), 00:18, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Прям как на PHP! Патчить не надо, это ж нужно какую-то бесконечно хитрую и упорную машину для этого использовать, а такой пока не придумали
     

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

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

     
  • 2.60, Инопланетянин (?), 22:37, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    Да, странно. Не похоже на гугль.
     
     
  • 3.77, Аноним (77), 00:29, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    смешишь, инопланетянка
     

  • 1.29, Твайлайт Спаркл 2 (?), 20:32, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    Веб-сервера вряд ли уязвимы, они только сжимают данные, но не разжимают. Как минимум модуль ngx_brotli, хотя всё равно стоит его перекомпилировать…
     
     
  • 2.36, Гость (??), 20:37, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    все уже перекомпилировали на прошлой неделе с новыми версиями nginx
     
     
  • 3.48, Аноним (48), 21:46, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    оно не идет в стандартной поставке
     
     
  • 4.53, Гость (??), 22:17, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    не важно, при каждом обновлении nginx, модуль нужно собирать снова, а исправления brotli появились ещё раньше
     
  • 2.100, penetrator (?), 01:53, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    на сервере может крутиться клиент который интегрируется со сторонним API

    очень часто явление, буквально в каждом проекте есть calling внешнего сервиса

     

  • 1.37, iZEN (ok), 20:44, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/–
    Детские проблемы Си.
     

  • 1.38, Аноним (38), 20:53, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    По аналогии с комментами под новостью про уязвимость в пхп стало быть надо хоронить все браузеры и большУю часть серверного ПО. Короче закапываем интернет и по-старинке 5 километров в гору зимой через весь город
     
  • 1.46, Аноним (46), 21:37, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    Посмотрел я этот проблемный файл https://github.com/google/brotli/blob/master/c/dec/decode.c

    Ничего сильно необычного нет. Правда, несколько напрягяют выражения

    *repeat += repeat_delta + 3U;

    ++h->code_length_histo[v];

    но понять можно, главное чтобы компилятор понял так же как вы.
    Стиль тоже, немного странно, что всё делается в switch с обилием fall through, выходы return прямо из case.

    В функции ProcessCommandsInternal насчитал 29 goto.

    А так - код как код, выделяют кольцевые буферы для данных.

     
     
  • 2.47, Аноним (43), 21:43, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    > выходы return прямо из case.

    и? что плохого то?

    > В функции ProcessCommandsInternal насчитал 29 goto.

    Очередной покусанный Дейкстрой борец с архитектурой процессоров?

     
     
  • 3.50, Аноним (15), 21:49, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Очередной покусанный Дейкстрой борец с архитектурой процессоров?

    железные дровосеки тоже не очень любят бранчи со всякими бранчпредикшенами :)

     
     
  • 4.55, Инопланетянин (?), 22:30, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Как goto связан с бранч предикшеном?
     
     
  • 5.72, Аноним (15), 23:59, 24/10/2026 Скрыто ботом-модератором     [к модератору]
  • –1 +/–
     
     
  • 6.88, Инопланетянин (?), 01:23, 25/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
     
  • 7.111, Аноним (15), 02:15, 25/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 5.76, Аноним (77), 00:26, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    э-э ... вобщем, вперёд более вероятно чем назад, а если goto назад, то ... вот эта штука и ломается
     
     
  • 6.89, Инопланетянин (?), 01:25, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    > э-э ... вобщем, вперёд более вероятно чем назад, а если goto назад,
    > то ... вот эта штука и ломается

    Зачем ему угадывать в конвеере будет прыжок или нет, если он безусловный и всегда будет?

     
     
  • 7.113, Аноним (15), 02:17, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Зачем ему угадывать в конвеере будет прыжок или нет, если он безусловный
    > и всегда будет?

    goto бранч или не бранч?

     
  • 3.51, Аноним (46), 21:54, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    Как, интересно, отлаживали этот код, там вызовов assert нет. Ну там применяется макрос для отладочного вывода ( BROTLI_DUMP), но это ведь не assert

    >> выходы return прямо из case.
    >и? что плохого то?

    А вот упомянутый вами Дейкстра говорил, у процедуры должен быть один вход и один выход. Почему он так говорил?

     
     
  • 4.52, Аноним (43), 22:04, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    Про единый вход в процедуру - да, согласен. А как их может быть больше одного, если функция в памяти это просто набор подряд идущих инструкций CPU с прологом, кодом и эпилогом и если ты её вызываешь, то просто переводишь регистр StackPointer на адрес функции в памяти? Или он имел ввиду про всякие longjump? Ну это как бы не совсем то - изначально то ты все равно в функцию попадаешь через пролог.

    А по поводу единого выхода из процедуры - ну хз почему он так сказал. Наверно потому что он любил лапшу из if/else. А может потому что он был алгоритмистом и ничего сложнее ОС 1960х гг не писал.

     
     
  • 5.120, Аноним (15), 02:30, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Ну это как бы не совсем то - изначально то ты все равно в функцию попадаешь через пролог.

    функция это абстракция, для ЦПУ программа это плоский набор инструкций.


     
  • 4.56, Инопланетянин (?), 22:32, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Дейкстра говорил, у процедуры должен быть один вход и один выход. Почему он так говорил?

    Он в каком году жил? Поищи код тех времен. Это была типичная лапша из goto. Тут же в одной функции для перехода между состояниями.

     
  • 4.83, Ivan_83 (ok), 01:09, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Скорее всего тесты для каждой функции, в лучшем случае, в худьшем тестовый набор который написали руками.

    И assert отладке не очень помогает. Он как то работает только у разраба на машине...
    https://github.com/rozhuk-im/liblcb/blob/master/include/math/big_num.h#L142
    Вот такие макросы намного удобнее, они тебе сразу вываливают бэктрейс до нужного места не роняя прогу - те можно не только под отладчиком найти проблему.

     
     
  • 5.90, Инопланетянин (?), 01:26, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Скорее всего тесты для каждой функции, в лучшем случае, в худьшем тестовый
    > набор который написали руками.
    > И assert отладке не очень помогает. Он как то работает только у
    > разраба на машине...
    > https://github.com/rozhuk-im/liblcb/blob/master/include/math/big_num.h#L142
    > Вот такие макросы намного удобнее, они тебе сразу вываливают бэктрейс до нужного
    > места не роняя прогу - те можно не только под отладчиком
    > найти проблему.

    И где у тебя там бэктрейс? Это тупо печать source_location

     
     
  • 6.107, Ivan_83 (ok), 02:11, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    Чтобы понять где там бэктрейс - надо посмотреть как устроен остальной код.
    Но даже если бы бэктрейса не возникало, знать место ошибки без падения программы сильно приятнее.
     
     
  • 7.114, Аноним (13), 02:18, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    >> И где у тебя там бэктрейс? Это тупо печать source_location
    > Чтобы понять где там бэктрейс - надо посмотреть как устроен остальной код.

    Иди почитай, что такое бэктрейс - и больше не ляпай умных слов, смысла которых не понимаешь.

     
     
  • 8.121, Ivan_83 (ok), 02:31, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    Да, расскажи мне как работает мой код ... текст свёрнут, показать
     
     
  • 9.129, Аноним (13), 02:43, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Мне плевать на твой код Ты правда не понял, что я тебе написал ... текст свёрнут, показать
     
     
  • 10.138, Ivan_83 (ok), 02:59, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Конечно понял, у вас цель только оскорбить Код вы не смотрели и не поняли, инач... текст свёрнут, показать
     
  • 4.118, Аноним (15), 02:27, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > А вот упомянутый вами Дейкстра говорил, у процедуры должен быть один вход
    > и один выход. Почему он так говорил?

    в паскале у процедур нет выхода :)

     
  • 2.82, Ivan_83 (ok), 01:04, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Префиксный инкремент - да, на С вне выражения смотрится тупо, артефакт от крестовика-оптимизатора.

    return внутри switch() - как раз таки нормально, наоборот глупо тянуть поток выполнения до конца функции-единой точки возврата.

    goto ок, если они на 1-2-3 метки, больше уже наверное надо бы как то по другому попробовать написать.


    if (addon->block_bits != 255u) return;
    while (addon->chunk_offsets[index + 1u] < cursor) index++;
    меня такие однострочники сильнее напрягают.
    Притом там же рядом:
              if (context_index + reps > context_map_size) {
                return
                    BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT);
              }
    не пожалели ни строчек отсыпать ни скобочек.

    Ещё там очень длинные слова в названиях везде, это и смотрится и читается плохо.
    Так же CamelCase названия функций: InitializeCompoundDictionaryCopy и типов и переменных.

    За BROTLI_FALSE - я бы точно бил молотком по голове.

        if (!alloc_func && !free_func) {
          free(state);
        } else if (alloc_func && free_func) {
          free_func(opaque, state);
        }
    За такое - по рукам: раз взялся такое сделать - сделай один раз инит alloc_func и free_func своими врапперами malloc/free и не пиши дальше никаких условий.

    Можно предположить по стилю что писал разраб который пишет в основном на крестах и под венду, а ещё вероятно английский не его родной язык. Учитывая обилие int он ещё и не очень опытный.
    И да, столько int вместо size_t/ssize_t - вероятно мы ещё увидим новости про эту реализацию :)

     
     
  • 3.91, Инопланетянин (?), 01:31, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ревью на опеннете. Спишите видеть.

    зы Почему ты постоянно кого-то хочешь ударить?

     
     
  • 4.95, Ivan_83 (ok), 01:42, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    Потому что такой код неизбежно потратит чьё то время и деньги, а раз автор до сих пор не усвоил что так делать не стоит, то ему требуется другой вид стимуляции для улучшения обучения :)
     
     
  • 5.97, Инопланетянин (?), 01:47, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    > Потому что такой код неизбежно потратит чьё то время и деньги, а
    > раз автор до сих пор не усвоил что так делать не
    > стоит, то ему требуется другой вид стимуляции для улучшения обучения :)

    Завести issue, сделать pr? Да ну, бред какой-то.

     
     
  • 6.102, Ivan_83 (ok), 01:57, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    Учитывая объём кода и предполагаемый объём переделок - проще завести сразу отдельный репозиторий и сделать реализацию алгоритма с нуля, по мотивам оригинала.

    Я уже приходил с PR на 1-10-50-80% объёма кода проекта и часто это заканчивалось просьбой или отвалить или принести в виде серии однострочных понятных патчей.
    И с другой стороны я тоже был если что, и тоже не просто такое отревьювить и принять.

    Конкретно в этом проекте я лично не заинтересован и туда ничего не понесу.

     
  • 4.128, Норм (?), 02:42, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Потому что в 2026 живет.
     
  • 3.93, Инопланетянин (?), 01:39, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Ещё там очень длинные слова в названиях везде, это и смотрится и
    > читается плохо.

    Держите сишника-любителя уплс названий. Чтся плх, а вт strcpy, strncpy, strcspn и др чтся грзд лчш.

    > За BROTLI_FALSE - я бы точно бил молотком по голове.

    А может доку сначала бы открыл https://brotli.org/types.html

    > Можно предположить по стилю что писал разраб который пишет в основном на
    > крестах и под венду, а ещё вероятно английский не его родной
    > язык. Учитывая обилие int он ещё и не очень опытный.
    > И да, столько int вместо size_t/ssize_t - вероятно мы ещё увидим новости
    > про эту реализацию :)

    В каких местах тебя int не устроил?

     
     
  • 4.101, Ivan_83 (ok), 01:53, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/–
    Любитель у нас вы и автор того бротли кода.

    Откройте фрю, линукс и просто POSIX стандарт и найдите там длинные слова.

    Я лично прошёл через венду с CreateFile(10 аргументов) до POSIX open(3 аргумента) и обратно не хочу.
    Я точно так же писал в camel case потому что на венде так принято. И читать даже свой код с вот этими длинными и не выразительными словами не очень удобно, не говоря об форматировании под супер широкие мониторы.
    Если вы думаете что давать короткие и понятные названия глупо и просто - уверяю, всё с точностью до наоборот, и каждый дурак может написать: int iThis_is_Index_in_the_First_Array_That_Contain_User_Input = 0;


    > А может доку сначала бы открыл https://brotli.org/types.html

    #define BROTLI_BOOL   int
    A portable bool replacement.

    Если вы не понимаете почему это плохо - это ваша проблема.
    Как минимум есть stdbool.h.
    Как максимум это слишком длинно написано.
    Если написанное в книге/доке для вас истина в последней инстанции - вы ещё не позврослели до нахождения ошибок в чужих книгах и написания своих.


    > В каких местах тебя int не устроил?

    Почти во всех функциях где автор его использовал то как индекс, то как оффсет то как что то ещё.

     
     
  • 5.106, Инопланетянин (?), 02:09, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    > Любитель у нас вы и автор того бротли кода.
    > Откройте фрю, линукс и просто POSIX стандарт и найдите там длинные слова.

    Интерфейс pthreads. А значешь почему? Потому что его не диды делали, которые букву e на конце creat экономят.

    > Я лично прошёл через венду с CreateFile(10 аргументов) до POSIX open(3 аргумента)
    > и обратно не хочу.
    > Я точно так же писал в camel case потому что на венде
    > так принято. И читать даже свой код с вот этими длинными
    > и не выразительными словами не очень удобно, не говоря об форматировании
    > под супер широкие мониторы.
    > Если вы думаете что давать короткие и понятные названия глупо и просто
    > - уверяю, всё с точностью до наоборот, и каждый дурак может
    > написать: int iThis_is_Index_in_the_First_Array_That_Contain_User_Input = 0;

    Длина от контекста зависит. Всякие strncpy это удобно по твоему?

    >> А может доку сначала бы открыл https://brotli.org/types.html
    > #define  BROTLI_BOOL   int
    >   A portable bool replacement.
    > Если вы не понимаете почему это плохо - это ваша проблема.
    > Как минимум есть stdbool.h.

    А если они не могут использовать stdbool?

    >> В каких местах тебя int не устроил?
    > Почти во всех функциях где автор его использовал то как индекс, то
    > как оффсет то как что то ещё.

    Глянул я в decode.c - size_t там тоже есть. Если int значит он уверен, что хватит его.

     
     
  • 6.119, Ivan_83 (ok), 02:30, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Всякие memcpy прекрасно читаются и пишутся, в отличии от CopyMemory Если вы... большой текст свёрнут, показать
     
     
  • 7.127, Аноним (13), 02:40, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > unix way это писать код так чтобы он читался как книга

    Ты серьезно? Вот эта вся дичь с cp mv tar xvcf pwd - это "как книга"? Да это буквально эталонный пример того, как делать не нужно.

    > шириной 80-сколько то там символов.

    Это все еще стандартная ширина для большинства современного кода, которая вообще не требует всякой юниксовой дичи с именами в 2-5 символов. Если ты, гений, не пишешь все в одну строку.

     
     
  • 8.135, Норм (?), 02:53, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Вам cp и mv не очевидны без словаря Я понимаю там тар - кваквашка Но cp и mv ... текст свёрнут, показать
     
  • 8.139, Ivan_83 (ok), 03:07, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    cp и mv и прочие консольные классические утилиты - вполне Флаги для tar - согла... текст свёрнут, показать
     
  • 6.132, Норм (?), 02:49, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Если int значит он уверен, что хватит его.

    Ахаха! Главное верить! Вера и увереность у кодера есть, и это главное.

     

  • 1.57, Bottle (?), 22:32, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    Наконец-то HTML-only страницы стали актуальны как никогда прежде!
     
     
  • 2.61, Аноним (44), 22:40, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    Внимательнее новость почитайте.
     
  • 2.71, LaunchWiskey (ok), 23:22, 24/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Спокойно, сейчас найдут теоретическую уязвимость в HTTPS и европейские госсайты в целях безопасности откатятся на HTTP.
     
  • 2.87, Ivan_83 (ok), 01:21, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Оно никак не связано, бротли на уровне транспорта работает.
    Вам надо в новость про пхп было это писать.
     

  • 1.59, Какойто Какойтович (?), 22:36, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/–
    Слишком много крику для логической уязвимости, которую ещё и эксплуатировать нельзя. Волнует другое, чем занимались разработчики с февраля, когда бага была найдена, по октябрь.
     
  • 1.62, Инопланетянин (?), 22:40, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/–
    >  может использоваться для удалённого выполнения кода при атаке на проекты

    Эксплойт есть или опять теория?

     
  • 1.64, Инопланетянин (?), 22:48, 24/10/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –1 +/–
     
  • 1.73, Аноним (73), 00:07, 25/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/–
    >Но так как выделенный буфер не был рассчитан на дополнительно прочитанные данные, они записывались в область за его пределами, в которой хранилось внутреннее состояние декодировщика.

    Коротко о том, зачем нужны зависимые типы.

     
     
  • 2.80, Ivan_83 (ok), 00:42, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • –5 +/–
    Не нужны.
    Считать надо было правильно и всё.
    И проверять размеры того куда пишешь.
     
     
  • 3.94, Инопланетянин (?), 01:42, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    > Не нужны.
    > Считать надо было правильно и всё.
    > И проверять размеры того куда пишешь.

    Ахаха.

    Типикал сишник до уязвимости:

    - Все нормально, нужно нормально писать просто. Проверки как в расте не нужны - они тормозят.

    После уязвимости:

    - Считать надо было правильно и всё. И проверять размеры того куда пишешь.

     
     
  • 4.103, Ivan_83 (ok), 02:03, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/–
    Достаточно того что ваш раст не читабелен и не встраивается так же легко и понятно как С либы куда угодно, так же он предотвращает только несколько типов ошибок но далеко не все. Бонусом он привносит тяжёлый рантайм и тяжёлую и бесполезную компиляцию, и насколько я понимаю, в таких случаях он "безопасно" крашит прогу.

    Потому оно ни разу не интересно, теоритизируйте дальше в уголочке.

     
     
  • 5.116, Аноним (13), 02:24, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Достаточно того что ваш раст

    Наркоман что ли? Где ты упоминания Раста увидел?

     
     
  • 6.144, Ivan_83 (ok), 03:29, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Хорошо, давай заменим раст скажем на вижалбейсик. От этого только читабельность изменится.
     
  • 5.117, Инопланетянин (?), 02:24, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Достаточно того что ваш раст не читабелен и не встраивается так же
    > легко и понятно как С либы куда угодно, так же он
    > предотвращает только несколько типов ошибок но далеко не все. Бонусом он
    > привносит тяжёлый рантайм

    Ну вон в dropbox переписали brotli на раст (без std) с си интерефесом наружу.


     
     
  • 6.123, Ivan_83 (ok), 02:32, 25/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
     
  • 7.125, Инопланетянин (?), 02:35, 25/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
     
  • 8.131, Аноним (13), 02:48, 25/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
     
  • 9.133, Инопланетянин (?), 02:52, 25/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 5.137, Норм (?), 02:57, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    В расте нет рантайма.

    Про читабельность вы не правы.
    Хотя соглашусь что сипипи подобный синтаксис ошибка (не только раста).

     
  • 3.98, Сисишник (?), 01:48, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    У нейронок ограниченное внимание, такие ошибки неизбежно будут возникать, если пытаться вручную память выделять и чистить

    Я про мясные очевидно

     
  • 3.130, Аноним (13), 02:47, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Считать
    > проверять размеры

    За более чем 50 лет сишники не научились ни тому, ни другому. Так что да, зависимые типы нужны.

    > Считать надо было правильно и всё.

    Классическое "чтобы не было ошибок - не делайте ошибки". Мля, как же никто до тебя не додумался до такого эффективного решения?

     
     
  • 4.141, Ivan_83 (ok), 03:18, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Вы спорите сами с собой.

    Я лично стараюсь везде где можно+имеет смысл добавлять проверки размера.
    Я передаю вместе с указателем следующим параметром размер области на которую он сслыается чтобы проверять внутри функции.
    Я возвращаю из функции размер записанных в буфер данных.
    Я не использую str* функции почти никогда за пределами константных строк.

    Вот примерно про такие правила кодинга на С я писал.

    Про считать правильно - да, из разряда делай хорошо, но тут и в других языках накосячить можно, да и не только в языках но и ракету/спутнег уронить :)

     
  • 2.126, Инопланетянин (?), 02:37, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    >>Но так как выделенный буфер не был рассчитан на дополнительно прочитанные данные, они записывались в область за его пределами, в которой хранилось внутреннее состояние декодировщика.
    > Коротко о том, зачем нужны зависимые типы.

    Было бы интересно посмотреть на код бротли на яп с их поддержкой. Но вряд ли это будет дешево с поддержкой.

     

  • 1.79, Ivan_83 (ok), 00:41, 25/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    Ну вот, ура, очередная новость о том как страшно жить!
    У меня прям ломка с утра, думал ещё про пхп будет, а тут даже лучше!!!
    Ждём на след неделе ещё более страшные новости!

    А пока давай карту в красных тонах с избыточной смертностью от новой уязвимости по миру!


    PS: изначально не понимал нафик оно сдалось и отключал бротлю везде где была такая возможность. zlib/zstd вполне хватает для потокового не напряжного сжатия.
    Где требуется суперсжатие надо смотреть уже не потоковые версии, а такие чтобы один раз запаковал и потом раздаёшь себе архив.

    Насчёт списка - надо понимать что не везде оно активно, те проект с либой может и собран но дойти до эксплуатации может и не выйти.

    Прикольно то что в OpenSSH тоже не стали торопится и внедрять модную бротлю в добавок к zlib.

     
     
  • 2.96, Инопланетянин (?), 01:44, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Ну вот, ура, очередная новость о том как страшно жить!
    > У меня прям ломка с утра, думал ещё про пхп будет, а
    > тут даже лучше!!!
    > Ждём на след неделе ещё более страшные новости!
    > А пока давай карту в красных тонах с избыточной смертностью от новой
    > уязвимости по миру!
    > PS: изначально не понимал нафик оно сдалось и отключал бротлю везде где
    > была такая возможность. zlib/zstd вполне хватает для потокового не напряжного сжатия.

    Ахаха

    CVE-2026-22184
    CVE-2026-85091
    CVE-2024-11477

     
     
  • 3.104, Ivan_83 (ok), 02:06, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    И?

    Меня конкретно бротля напрягала своей долгой сборкой, насколько помню.
    Плюс zlib у меня есть в системе, а бротля +1 зависимость которая делает тоже самое, может даже капельку лучше, но в моих условиях разницы нет.

     
  • 2.99, Сисишник (?), 01:52, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    >изначально не понимал нафик оно сдалось

    А как иначе в такую кучу софта бекдоров насувать?

     

  • 1.92, Аноним (92), 01:34, 25/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    ну началось...
     
     
  • 2.124, Инопланетянин (?), 02:34, 25/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > ну началось...

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

     

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



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