Spectre-атака на Cloudflare Workers извлекла JWT со скоростью до 12 бит/с
Исследователи показали утечку токена между двумя контролируемыми Workers, размещёнными в одном процессе. Cloudflare заявила, что устранила выявленную проблему в рабочей инфраструктуре и не обнаружила признаков активной эксплуатации за последние три года.

Исследователи раскрыли детали удалённой атаки класса Spectre на Cloudflare Workers. В эксперименте им удалось извлечь JSON Web Token из памяти другого Worker, работавшего на том же сервере, со скоростью до 12 бит в секунду и точностью 99,16%.
Тест проводился в производственной среде Cloudflare, однако атакующий и целевой Workers контролировались самими исследователями, а JWT был намеренно помещён в память целевого приложения. По данным авторов работы, доступа к данным клиентов Cloudflare они не получали.
Workers запускает код разных арендаторов в отдельных изолятах V8, которые могут находиться внутри одного процесса операционной системы. Такая архитектура уменьшает задержку запуска, но при чтении памяти в общем процессе создаёт риск утечки между арендаторами. Для атаки оба Workers должны быть размещены в одном процессе, а атакующий должен иметь возможность исполнять допустимый код в собственном изоляте; уязвимость V8 или выход из песочницы для этого не требуются.
Cloudflare ограничивает доступные скриптам источники точного времени, однако исследователи использовали WebSocket как удалённый источник измерений. Кроме того, Durable Objects позволяли поддерживать работу одного изолята от пяти до более чем 20 часов. Авторы также описали способ снизить эффективность механизма Dynamic Process Isolation (DyPrIs): интенсивный ввод-вывод через WebSocket менял один из сигналов, по которому система выявляла подозрительные сценарии.
Как утверждает Cloudflare, проблема уже устранена. Компания улучшила DyPrIs, внедрила V8 Sandbox и изоляцию внутри процесса на базе Memory Protection Keys (MPK). Последняя мера защищает кучи Workers аппаратными ключами доступа; вместе с V8 Sandbox и меняющейся схемой размещения памяти она должна предотвращать обращения между соседними песочницами.
Ранее, почти пять лет назад, Cloudflare и Технический университет Граца демонстрировали удалённую Spectre-атаку на Workers со скоростью 120 бит в час, или 2 бита в минуту. В новой работе максимальная скорость достигла 12 бит в секунду — в 360 раз выше. Авторы проводили замеры ночью при загрузке процессоров от 10% до 25%; при более высокой нагрузке утечка замедлялась, но, по их оценке, оставалась возможной.