Исследователи из Технического университета Граца показали атаку FROST, которая позволяет сайту без разрешений и без действий со стороны пользователя угадывать, какие страницы и приложения у него открыты. В тестах метод распознавал сайты примерно с точностью 89%, а запущенные приложения — примерно с точностью 96%, и для разработчиков это неприятное напоминание: браузерный sandbox не спасает, если побочный канал уходит в железо.
О работе австрийской команды сообщает Tom's Hardware. Суть атаки в использовании OPFS — Origin Private File System, браузерного API, который позволяет веб-страницам создавать и хранить файлы на локальном диске. В обычной жизни это нужно для офлайн-приложений и веб-сервисов, которым мало памяти вкладки. В сценарии FROST тот же механизм превращается в сенсор: вредоносная страница создает большой файл на SSD и через JavaScript измеряет задержки чтения. Когда пользователь в это время работает в других приложениях или открывает другие сайты, их дисковая активность создает характерные всплески латентности. Дальше в дело вступает не магия, а классификация: исследователи прогнали эти паттерны через сверточную нейросеть, обученную распознавать сигнатуры конкретных сайтов и программ.
Технически схема выглядит неприятно из-за своей приземленности. В предыдущих SSD side-channel атаках обычно требовался нативный код и более привилегированный доступ к системе. Здесь достаточно обычной вкладки в браузере. При этом OPFS не просит у пользователя отдельного разрешения на создание файлов, а Chrome и Safari, по данным исследователей, позволяют сайту занять через OPFS до 60% общего объема диска. На накопителе 256 ГБ это больше 150 ГБ. Такой файл должен быть больше доступного объема RAM, чтобы чтение упиралось именно в SSD, а не в кэш операционной системы. После этого атакующая страница начинает делать случайные чтения блоками по 4 КБ и смотреть, как меняется время ответа, когда в системе параллельно что-то делает другой софт.
Ограничения у атаки есть, и они существенные. Полноценную классификацию авторы проверяли только на Mac mini с чипом M2, 8 ГБ оперативной памяти и SSD на 256 ГБ. На Linux исследователи подтвердили, что из браузера можно измерять задержки SSD, но полный этап с распознаванием сайтов и приложений не запускали. Windows в работе вообще не тестировалась. Есть и еще одно практическое условие: OPFS-файл должен лежать на том же физическом SSD, где идет наблюдаемая активность. Для рабочих станций с несколькими накопителями это не гарантировано. И да, главный тормоз для массового злоупотребления очевиден даже без степени по криптографии: если страница внезапно начинает съедать десятки или сотни гигабайт на диске, внимательный пользователь это рано или поздно заметит, особенно если машина начинает вести себя как ноутбук из эпохи жестких дисков.
Но списывать атаку FROST как лабораторный курьез рано. Во-первых, она работает через границы браузеров: если атакующая страница открыта в Chrome, а жертва параллельно сидит в Safari, разница в пропускной способности по сравнению с атакой внутри одного браузера составила всего 3,38%. То есть OPFS здесь не про «дыру в конкретном продукте», а про более общий класс проблем, где веб-платформа получает достаточно возможностей, чтобы осторожно щупать аппаратные эффекты. Во-вторых, сама идея хорошо ложится в тренд последних лет: исследователи все чаще вытаскивают побочные каналы из мест, которые долго считались слишком шумными или слишком низкоуровневыми для браузера. Пару лет назад такие истории чаще ассоциировались с CPU-кэшами, таймерами и Spectre-подобными трюками. Теперь в зону внимания попадает уже и подсистема хранения.
Реакция браузерных вендоров тоже говорит сама за себя. Исследователи раскрыли результаты Google, Apple и Mozilla. Google, как передает публикация, не считает fingerprinting уязвимостью безопасности. Apple назвала атаку «вне текущего scope», а Mozilla ограничилась подтверждением получения материалов без внедрения исправлений. Это важный момент для команд, которые привыкли смотреть на браузерные API как на более-менее безопасный конструктор: если проблема классифицируется не как vulnerability, а как «нежелательное профилирование», то быстрых защит на уровне платформы можно не дождаться. Для security-команд и архитекторов это означает простую вещь: угрозы, связанные с fingerprinting, уже нельзя сводить к canvas, шрифтам, WebGL и списку установленных расширений. Теперь в кадре и дисковая подсистема.
Для бизнеса и разработчиков здесь несколько практических выводов. Если вы делаете тяжелые веб-приложения и используете OPFS для локального хранения, имеет смысл отдельно посмотреть на лимиты, объемы создаваемых файлов и на то, насколько заметно приложение расходует диск. Для браузерных команд вопрос еще жестче: безопасно ли оставлять сайтам возможность без явного запроса резервировать такие объемы хранилища, если это можно превратить в канал наблюдения? Один из предложенных вариантов защиты — ограничить размер OPFS-файлов объемом доступной памяти, чтобы атака не могла надежно вытолкнуть данные из RAM на SSD. Другой — просить у пользователя явное разрешение на создание таких файлов. Оба варианта ухудшают UX для честных приложений, но выбор тут не между удобством и неудобством, а между удобством и новой поверхностью для слежки.
Атака FROST вряд ли завтра станет любимым инструментом массового фишинга: слишком много условий, слишком узкий набор проверенных конфигураций, слишком заметный расход диска. Но это уже достаточный сигнал, что браузерная модель доверия снова трещит не там, где ее привыкли чинить. Если веб-страница может подглядывать за чужой активностью по шуму SSD, следующий раунд дискуссии пойдет не о красивых API для офлайна, а о том, сколько низкоуровневых возможностей браузеру вообще стоит отдавать по умолчанию. Подробности разбора — в материале .