#prog #rust #itsec #article
hyper HTTP/2 (Didn't) MadeYouReset
Протокол HTTP/2 позволяет открыть несколько стримов поверх одного соединения, каждый из которых может быть отменён (reset) любой стороной в любой момент. В некоторых случаях это нужно сделать обязательно — например, когда одна из сторон присылает невалидные сообщения. Это сделало возможным уязвимость, названную MadeYouReset. Суть её в том, что злоумышленник инициирует соединение с максимально возможным числом стримов, а затем постоянно их сбрасывает путём отправки невалидных фреймов. Обработка всех этих запросов и следование протоколу отнимает ресурсы сервера, что делает возможным Denial of service.
Эта уязвимость очень схожа с уязвимостью Rapid Reset, но, как описано в статье от Cloudflare, она несколько более хитрая. Rapid Reset полагается на явную отмену стримов клиентом через посылку фрейма RST_STREAM. MadeYouReset же работает через посылку невалидных фреймов, заставляя сервер парсить запросы и отменять стримы уже с его стороны.
Многие реализации HTTP/2 на практике делали работу по обработке запроса даже после закрытия стрима. Простые меры предосторожности против Rapid Reset, отслеживающие только фреймы RST_STREAM от клиента, бесполезны против MadeYouReset.
h2 (Rust-библиотека для работы с протоколом HTTP/2) оказалась не подвержена этой уязвимости. Почему? На это есть несколько причин.
Во-первых, в h2 несколько лет назад добавили меру предосторожности против абьюза клиентами отмен стримов. Именно, h2 отслеживает, сколько раз фрейм от клиента привёл к отмене стрима со стороны клиента, и когда это число достигает настраиваемого порога, закрывает соединение целиком. Это уже хорошая защита, которая на практике успешно защищала от Rapid Reset, но она была не безупречна — для одного типа фреймов (WINDOW_UPDATE) на одном из путей исполнения это число не обновлялось (разумеется, это поправили).
Во-вторых, h2 — библиотека, а не фреймворк, и всегда передаёт вызывающему коду информацию об отмене стрима. Разумеется, от этого мало толку, если вызывающий код на это никак не реагирует.
И это подводит нас к третьей причине: контекст использования. На практике h2 использовалась совместно с hyper, Rust-библиотеке для HTTP, абстрагированной от конкретной версии протокола. В коде hyper для стримов ожидается исполнение двух футур: поставляющей новые фреймы из стрима и обрабатывающей запросы из этого стрима. При получении отмены стрима hyper отменяет футуру, обрабатывающую запрос.
Итого: даже без закрытия бага с WINDOW_UPDATE h2 не был подвержен MadeYouReset. Разумеется, это во многом заслуга продуманной архитектуры h2 и hyper. Но также это и заслуга того, как реализована асинхронность в Rust: с ключевым методом Future::poll, позволяющим достаточно просто дожидаться исполнения нескольких футур одновременно, и встроенная поддержка отмены футур просто через вызов drop. Добиться подобной защиты от MadeYouReset в языке с активными тасками и явной в коде отменой (как, например, в C# или в Go с context.Done) значительно сложнее.
hyper HTTP/2 (Didn't) MadeYouReset
Протокол HTTP/2 позволяет открыть несколько стримов поверх одного соединения, каждый из которых может быть отменён (reset) любой стороной в любой момент. В некоторых случаях это нужно сделать обязательно — например, когда одна из сторон присылает невалидные сообщения. Это сделало возможным уязвимость, названную MadeYouReset. Суть её в том, что злоумышленник инициирует соединение с максимально возможным числом стримов, а затем постоянно их сбрасывает путём отправки невалидных фреймов. Обработка всех этих запросов и следование протоколу отнимает ресурсы сервера, что делает возможным Denial of service.
Эта уязвимость очень схожа с уязвимостью Rapid Reset, но, как описано в статье от Cloudflare, она несколько более хитрая. Rapid Reset полагается на явную отмену стримов клиентом через посылку фрейма RST_STREAM. MadeYouReset же работает через посылку невалидных фреймов, заставляя сервер парсить запросы и отменять стримы уже с его стороны.
Многие реализации HTTP/2 на практике делали работу по обработке запроса даже после закрытия стрима. Простые меры предосторожности против Rapid Reset, отслеживающие только фреймы RST_STREAM от клиента, бесполезны против MadeYouReset.
h2 (Rust-библиотека для работы с протоколом HTTP/2) оказалась не подвержена этой уязвимости. Почему? На это есть несколько причин.
Во-первых, в h2 несколько лет назад добавили меру предосторожности против абьюза клиентами отмен стримов. Именно, h2 отслеживает, сколько раз фрейм от клиента привёл к отмене стрима со стороны клиента, и когда это число достигает настраиваемого порога, закрывает соединение целиком. Это уже хорошая защита, которая на практике успешно защищала от Rapid Reset, но она была не безупречна — для одного типа фреймов (WINDOW_UPDATE) на одном из путей исполнения это число не обновлялось (разумеется, это поправили).
Во-вторых, h2 — библиотека, а не фреймворк, и всегда передаёт вызывающему коду информацию об отмене стрима. Разумеется, от этого мало толку, если вызывающий код на это никак не реагирует.
И это подводит нас к третьей причине: контекст использования. На практике h2 использовалась совместно с hyper, Rust-библиотеке для HTTP, абстрагированной от конкретной версии протокола. В коде hyper для стримов ожидается исполнение двух футур: поставляющей новые фреймы из стрима и обрабатывающей запросы из этого стрима. При получении отмены стрима hyper отменяет футуру, обрабатывающую запрос.
Итого: даже без закрытия бага с WINDOW_UPDATE h2 не был подвержен MadeYouReset. Разумеется, это во многом заслуга продуманной архитектуры h2 и hyper. Но также это и заслуга того, как реализована асинхронность в Rust: с ключевым методом Future::poll, позволяющим достаточно просто дожидаться исполнения нескольких футур одновременно, и встроенная поддержка отмены футур просто через вызов drop. Добиться подобной защиты от MadeYouReset в языке с активными тасками и явной в коде отменой (как, например, в C# или в Go с context.Done) значительно сложнее.
seanmonstar
hyper HTTP/2 (Didn't) MadeYouReset
A new HTTP/2 attack vector was disclosed today called MadeYouReset. hyper’s h2 is negligably affected, weathering the attack well. But, we have provided patc...
❤11👍7🔥5
#prog #rust #itsec
crates.io: Malicious crates faster_log and async_println
crates.io: Malicious crates faster_log and async_println
The users in question were immediately disabled, and the crates in question were deleted from crates.io shortly after. We have retained copies of all logs associated with the users and the malicious crate files for further analysis.
The deletion was performed at 15:34 UTC on September 24, 2025.
#prog #itsec
MongoBleed explained simply
Корень проблемы тот же, что и у Heartbleed. Баг не требует аутентификации для эксплуатации.
(thanks @jemalloc)
MongoBleed explained simply
CVE-2025-14847 allows attackers to read any arbitrary data from the database's heap memory. It affects all MongoDB versions since 2017
Корень проблемы тот же, что и у Heartbleed. Баг не требует аутентификации для эксплуатации.
(thanks @jemalloc)
❤🔥1👍1😱1
#itsec
Google API Keys Weren't Secrets. But then Gemini Changed the Rules.
Google API Keys Weren't Secrets. But then Gemini Changed the Rules.
tl;dr Google spent over a decade telling developers that Google API keys (like those used in Maps, Firebase, etc.) are not secrets. But that's no longer true: Gemini accepts the same keys to access your private data. We scanned millions of websites and found nearly 3,000 Google API keys, originally deployed for public services like Google Maps, that now also authenticate to Gemini even though they were never intended for it. With a valid key, an attacker can access uploaded files, cached data, and charge LLM-usage to your account. Even Google themselves had old public API keys, which they thought were non-sensitive, that we could use to access Google’s internal Gemini.
😁11🤩9🤡4
#itsec #ml #suckassstory #article
The Boy That Cried Mythos: Verification is Collapsing Trust in Anthropic
Вы, вероятно, слышали в недавних новостях о модели Mythos от Anthropic и о том, насколько она хороша в поиске уязвимостей... Со слов самих Anthropic.
Эксперт по компьютерной безопасности Davi Ottenheimer решил проверить, насколько заявления о возможностях Mythos соответствуют правде.
TL;DR: даже собственный документ Anthropic даёт понять, что их инструмент, мягко говоря, не соответствует заявленным возможностям. Ниже мои отдельные цитаты, но я крайне рекомендую прочитать статью целиком.
(^проверено в AISLE)
Автор также утверждает, что Anthropic на волне хайпа отвоёвывает себе тёплое местечко под солнцем в обход существующих ограничений.
The Boy That Cried Mythos: Verification is Collapsing Trust in Anthropic
Вы, вероятно, слышали в недавних новостях о модели Mythos от Anthropic и о том, насколько она хороша в поиске уязвимостей... Со слов самих Anthropic.
Эксперт по компьютерной безопасности Davi Ottenheimer решил проверить, насколько заявления о возможностях Mythos соответствуют правде.
TL;DR: даже собственный документ Anthropic даёт понять, что их инструмент, мягко говоря, не соответствует заявленным возможностям. Ниже мои отдельные цитаты, но я крайне рекомендую прочитать статью целиком.
I’ve been getting more and more curious about the risk from Anthropic’s Claude Mythos Preview. So I pulled the system card, a whoppingly inefficient 244-page document that devotes just seven pages to the claim that the model is too dangerous to release
The flagship demonstration of “unprecedented cyber capability” is in fact a model that weaponized two bugs that a different Anthropic model had already found, in software Mozilla had already patched, in a harness with the actual defenses turned off, where the “triage” step it performed is also performed by its predecessor.
The bugs Anthropic used to justify a $100 million consortium, eleven Fortune-100 partners, a “too dangerous to release” decision, and global headlines that “frightened the British” — an open-weights 3.6B-parameter model finds them too, for eleven cents per million tokens.
(^проверено в AISLE)
The Mythos system card tested the model against small-scale enterprise networks with no active defenses and the model succeeded. The same document tested the model against a properly configured sandbox with modern patches and the model failed.
Автор также утверждает, что Anthropic на волне хайпа отвоёвывает себе тёплое местечко под солнцем в обход существующих ограничений.
By withholding Mythos from general release and granting access only through the Glasswing consortium — Apple, Google, Microsoft, Amazon, Broadcom, Cisco, CrowdStrike, JPMorganChase, Nvidia, Palo Alto Networks, the Linux Foundation — Anthropic inserts itself as a de facto clearance-granting body for an “uplift” of vulnerability knowledge. Without a statutory basis. Without congressional oversight. Without FOIA exposure. Without a neutral arbiter. With a partner list drawn entirely from the largest incumbents in the industry it claims to be protecting.
<...>
That is not a safety posture. It’s regulatory capture dressed as restraint. And it is being constructed with no democratic input, in a legal vacuum, by a private company whose business model depends on selling access to the very capability it has declared too dangerous to release.
👍5🤣3❤1🥰1😢1💩1
#prog #itsec #rust #article
Bugs Rust Won't Catch
Bugs Rust Won't Catch
In April 2026, Canonical disclosed 44 CVEs in uutils, the Rust reimplementation of GNU coreutils that ships by default since 25.10. Most of them came out of an external audit commissioned ahead of the 26.04 LTS.
I read through the list and thought there’s a lot to learn from it.
What’s notable is that all of these bugs landed in a production Rust codebase, written by people who knew what they were doing, and none of them were caught by the borrow checker, clippy lints, or cargo audit.
<...>
If you write systems code in Rust, this is the most concentrated look at where Rust’s safety ends that you’ll likely find anywhere right now.
❤4🥰2🍌1
#prog #web #itsec
(надо было, конечно, пораньше выложить)
We found a stable Firefox identifier linking all your private Tor identities
TL;DR: есть такая вещь, как IndexedDB — технология, позволяющая сайтам сохранять на стороне клиента (браузера) объёмные данные в базе данных. В число связанных с IndexedDB API входит функция, возвращающая список баз данных на клиенте — indexedDB.databases(). В Firefox (точнее, в Gecko) в приватном режиме имена баз данных отображаются не на имена файлов напрямую, а на UUID, которые уже используются для имён баз данных, и хранится это отображение в хэш-таблице. Вызов
Баг пофиксили в Firefox версии 150 (и ESR 140.10).
(надо было, конечно, пораньше выложить)
We found a stable Firefox identifier linking all your private Tor identities
TL;DR: есть такая вещь, как IndexedDB — технология, позволяющая сайтам сохранять на стороне клиента (браузера) объёмные данные в базе данных. В число связанных с IndexedDB API входит функция, возвращающая список баз данных на клиенте — indexedDB.databases(). В Firefox (точнее, в Gecko) в приватном режиме имена баз данных отображаются не на имена файлов напрямую, а на UUID, которые уже используются для имён баз данных, и хранится это отображение в хэш-таблице. Вызов
databases() возвращал список в порядке итерации этой хеш-таблицы, и этот порядок можно было использовать для идентификации конкретного клиента. Так как эта таблица сохраняется в памяти, этот способ обходил любые способы анонимизации, не включающие в себя перезапуск процесса — в частности, этот порядок сохранялся между разными сессиями private browsing (при условии, что процесс продолжал работать), и он обходил "New identity" в Tor browser.Баг пофиксили в Firefox версии 150 (и ESR 140.10).
🤣12🔥5👍1
#prog #itsec #article
MAD Bugs: "cat readme.txt" is not safe in iTerm2
TL;DR: кастомный протокол iTerm2 с in-band signaling для удалённого доступа без аутентификации поверх SSH, под который можно подделаться локально.
MAD Bugs: "cat readme.txt" is not safe in iTerm2
TL;DR: кастомный протокол iTerm2 с in-band signaling для удалённого доступа без аутентификации поверх SSH, под который можно подделаться локально.
blog.calif.io
MAD Bugs: Even "cat readme.txt" is not safe
Turning "cat readme.txt" into arbitrary code execution in iTerm2.
🎉11🤯4
#prog #itsec #web #article
The React2Shell Story
The React2Shell Story
On November 30th 2025, I reported a critical remote code execution vulnerability ("React2Shell") to Meta. On December 3rd, Meta released a fix and public advisory (CVE-2025-55182), urging developers to immediately update.
Funnily enough, I didn't set out to find a vulnerability in React. I just wanted to understand a protocol so I could be better at hacking modern web applications. But instead, I fell down a rabbit hole to a critical vulnerability that affected millions of websites.
lachlan.nz
The React2Shell Story | Lachlan Davidson | Blog
The story of CVE-2025-55182 (React2Shell)
🎉6
#suckassstory #itsec #article
Google Chrome silently installs a 4 GB AI model on your device without consent. At a billion-device scale the climate costs are insane.
И эти веса даже не используются для "AI mode": для этой фичи используются не локальные модели, а инфраструктура Google. Если эти веса удалить, браузер скачает их заново. Отключить это через chrome://settings нельзя.
И ещё:
Anthropic secretly installs spyware when you install Claude Desktop
Claude.app (не путать с Claude code) при установке и каждом запуске прописывает для семи браузеров на основе Chromium (включая те, что у пользователя не установлены) в настройках манифест, который позволяет трём перечисленным расширениям запускать на системе бинари вне песочницы браузера с правами пользователя. Файлы прописываются заново при каждом обновлении, в настройках Claude.app про это ни слова, так что отключить это нельзя. Сами расширения Chrome от Anthropic сейчас, если что, существуют, но в бете.
Google Chrome silently installs a 4 GB AI model on your device without consent. At a billion-device scale the climate costs are insane.
И эти веса даже не используются для "AI mode": для этой фичи используются не локальные модели, а инфраструктура Google. Если эти веса удалить, браузер скачает их заново. Отключить это через chrome://settings нельзя.
И ещё:
Anthropic secretly installs spyware when you install Claude Desktop
Claude.app (не путать с Claude code) при установке и каждом запуске прописывает для семи браузеров на основе Chromium (включая те, что у пользователя не установлены) в настройках манифест, который позволяет трём перечисленным расширениям запускать на системе бинари вне песочницы браузера с правами пользователя. Файлы прописываются заново при каждом обновлении, в настройках Claude.app про это ни слова, так что отключить это нельзя. Сами расширения Chrome от Anthropic сейчас, если что, существуют, но в бете.
🌚22👍2
Forwarded from Немного туп(л,)
Я хотел сюда написать небольшой очерк про уязвимость в Linux под названием Copy.Fail.
Пока я думал, что написать - появился Dirty Frag (кажется до сих пор без патча от разработчиков ядра, кстати, но я не следил точно).
Пока я думал, что бы написать и про то и про другое, появилась Fragnesia.
Короче, год Linux LPE и побегов из изоляции из-за оптимизаций работы с кэшем объявляется открытым!
#jobbing #пргрмрвне #itsec
Пока я думал, что написать - появился Dirty Frag (кажется до сих пор без патча от разработчиков ядра, кстати, но я не следил точно).
Пока я думал, что бы написать и про то и про другое, появилась Fragnesia.
Короче, год Linux LPE и побегов из изоляции из-за оптимизаций работы с кэшем объявляется открытым!
#jobbing #пргрмрвне #itsec
🤩3😭2❤🔥1