Spectre возвращается: атака на Cloudflare Workers выкачивает JWT со скоростью 12 бит/с

· Безопасность
Исследователи показали удалённую Spectre-атаку против Cloudflare Workers, извлёкшую JSON Web Token из соседнего Worker в боевой среде — в 360 раз быстрее демонстрации 2021 года.

cover.svg

Исследователи в области кибербезопасности раскрыли детали удалённой атаки класса Spectre на платформу Cloudflare Workers. В боевой среде им удалось извлечь JSON Web Token (JWT) из «соседнего» Worker'а со скоростью до 12 бит в секунду при точности 99,16%. Для сравнения, аналогичная атака, продемонстрированная в 2021 году, выдавала лишь около 2 бит в минуту — новая версия оказалась примерно в 360 раз быстрее.

Эксперимент был полностью подконтрольным: и атакующий, и жертва принадлежали самим исследователям, а JWT был намеренно размещён в памяти. Авторы подчёркивают, что доступа к данным реальных клиентов не происходило.

Почему это стало возможным

Cloudflare Workers запускает код разных арендаторов в отдельных изолятах V8 внутри одного процесса операционной системы, полагаясь на изоляцию на уровне языка, а не на строгое разделение процессов — так снижается задержка запуска. Атака не требует эксплойта V8 или побега из песочницы: достаточно, чтобы атакующий и жертва оказались в одном процессе.

Workers ограничивают локальные источники времени, «замораживая» или огрубляя таймеры, и не дают скриптам разделяемую память или многопоточность. Однако исследователи нашли обходные пути: удалённым таймером послужил WebSocket, а Durable Objects позволили удерживать изолят живым от пяти до более чем двадцати часов.

Особенно интересно, как удалось обмануть защитный механизм Cloudflare — Dynamic Process Isolation (DyPrIs), который выносит подозрительные скрипты в отдельный процесс. Долго живущий вызов Durable Object успевал отработать до изоляции, а интенсивный ввод-вывод по WebSocket повышал активность iTLB и «топил» сигнал промахов предсказания переходов ниже порога срабатывания детектора.

Спор о формулировках

Cloudflare называет это ограничением конкретной реализации DyPrIs. Авторы работы возражают: обе слабости отражают фундаментальные пределы самого подхода к детектированию, а не недосмотр. По их мнению, надёжное обнаружение должно происходить во время исполнения и опираться на сигнал, который нельзя заглушить операциями ввода-вывода.

Тесты в продакшене проводились на серверах с процессорами AMD EPYC Zen 2 и Zen 3 под Linux. Измерения запускали ночью, при загрузке CPU от 10% до 25%, чтобы получить лучший результат; при высокой нагрузке скорость утечки падала, но атака оставалась осуществимой.

Что сделала Cloudflare

Компания заявляет, что проблема уже устранена в боевой среде. За три года никаких признаков активной эксплуатации не обнаружено. Меры включают улучшенный DyPrIs, интеграцию V8 Sandbox (ограничивает транзитный доступ к 64-битным указателям) и внутрипроцессную изоляцию на основе Memory Protection Keys (MPK), помещающую кучи Worker'ов за аппаратно защищённые ключи. На современных x64-системах доступно около 12 таких ключей, и Cloudflare комбинирует их с песочницей V8 и ротацией раскладки памяти, чтобы соседние песочницы не делили один ключ.


Источник: The Hacker News

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.