http2shell: RCE-уязвимость в Node и Python через brotli
Evolving Threat: http2shell is an RCE in node, Python, and more
Обсуждение на Hacker News новой уязвимости http2shell, позволяющей удалённое выполнение кода в Node, Python и других средах. Корень проблемы — в библиотеке brotli версии 1.2.0 и ниже; Python-пакет уже обновлён до 1.2.1. Патч в репозитории Google датируется февралём, но его не сочли достаточно важным для релиза. В качестве обходного решения советуют отключить content-encoding br на обеих сторонах. Rust-серверы, по словам участников, не затронуты.
Мне, честно говоря, вполне можно обойтись без того, чтобы каждый баг с памятью получал милое сенсационное имя и маркетинговую раскрутку.
- mirashii
Мне кажется, это должно называться googlebrotli2shell, а не http2shell. Google заслуживает небольшого удара по репутации за это. Это элементарное нарушение безопасности памяти, от той же организации, которая делает wuffs, продвигает Rust для безопасности памяти и имеет Carbon. У zstd есть высококачественные реализации на Rust, и он примерно того же времени.
Кроме того, библиотека brotli не выпускала релизов почти целый год, а исправление этой уязвимости было закоммичено ещё в феврале. Google собирает все свои проекты из main, так что их это не затронуло, но релизы open source — это полная запоздалая мысль. Более 100 коммитов с разными исправлениями пылятся без дела, пока инцидент безопасности не вынуждает выпустить релиз.
- ataraxia937
Это снова кажется преувеличенным, по крайней мере для серверов. Я только что проверил организацию с более чем 200 репозиториями на GitHub. Node, Python и C#. Ни один из них не уязвим... потому что ни один из них на самом деле не вызывает декодер Brotli. Он просто не включён по умолчанию на стороне сервера самими платформами. Это очень похоже на баги в PHP, где должны быть соблюдены определённые условия, прежде чем вы действительно станете уязвимы.
Для клиентов? Конечно, это больший риск. Патчите их. Но плохие парни не атакуют ваших клиентов, если только клиенты не подключаются к ним. Не сидите допоздна, чтобы исправить это.
(И да, .NET здесь включён, потому что модуль Brotli от Microsoft — это привязка к уязвимой референсной реализации Google.)
- anonymous908213
Должен сказать, я мог бы обойтись без того, чтобы каждый баг памяти получал милое сенсационное название и маркетинговый пиар.
- rvanlaar
Похоже, brotli <= 1.2.0 уязвим.
Пакет для Python уже обновлён до 1.2.1. https://pypi.org/project/brotli/1.2.1/
- hatthew
Мне кажется, обычные проблемы безопасности не получают особой огласки. Проблемы PHP и eMudhra казались серьёзными и заслуживающими огласки. Но с такими вещами, как эта, я не уверен. Это серьёзная проблема? Или это просто заурядная проблема, которая попала в новости только потому, что веб-безопасность сейчас у всех на уме?