Нажатия клавиш, пароли и вкладки браузера. Исследователи из Австрии научились шпионить за пользователями через кэш операционных систем

leer en español

Нажатия клавиш, пароли и вкладки браузера. Исследователи из Австрии научились шпионить за пользователями через кэш операционных систем

Для реализации этой угрозы не требуются права администратора или установка вредоносных программ.

image

Исследователи из Австрийского технологического института представили на конференции NDSS 2026 подробный анализ и усовершенствование атак через кэш страниц операционных систем. Работа под названием «Eviction Notice» демонстрирует, как уязвимости в механизмах управления кэшем позволяют проводить атаки побочного канала без привилегий и с минимальными системными правами.

Кэш страниц — это часть оперативной памяти, в которую операционная система помещает недавно использованные данные с диска, чтобы ускорить повторный доступ. Такой подход значительно увеличивает производительность, однако создаёт и потенциальные риски. Если злоумышленник может определить, какие страницы файлов находятся в кэше, он может сделать выводы о действиях других пользователей — например, о том, была ли введена парольная форма или происходил доступ к определённому веб-сайту.

В 2019 году уже были описаны первые атаки на кэш страниц, но новая работа пошла дальше. Команда описала четыре ключевых примитива — механизма взаимодействия с кэшем: загрузку (reload), удаление (flush), вытеснение (evict) и мониторинг (monitor). Сочетая их, можно построить пять разных техник атак, включая Flush+Monitor и Evict+Reload. Эти методы позволяют, к примеру, фиксировать нажатия клавиш, определять, открыт ли графический интерфейс аутентификации, или следить за действиями внутри приложений.

Одним из наиболее значимых открытий стало использование системного вызова «posix_fadvise» с флагом «POSIX_FADV_DONTNEED», который позволяет не только удалять страницы из кэша, но и — при точном измерении времени выполнения — определять, находилась ли страница в кэше до этого. Это превращает удаление в ещё один источник утечки информации.

Кроме того, авторам удалось обойти встроенный в ядро Linux механизм «read-ahead», который предсказывает, какие страницы будут запрошены в будущем, и загружает их заранее. Для этого применялись две стратегии: чтение файла в обратном порядке и использование системного вызова «readahead», который позволяет точно управлять тем, какие страницы загружаются в кэш, без активации автоматической предзагрузки.

Для мониторинга наличия страниц в кэше без их загрузки использовался системный вызов «preadv2» с флагом «RWF_NOWAIT», который возвращает ошибку, если нужная страница не находится в памяти. Другой механизм — «cachestat», появившийся в ядре Linux версии 6.5 — был признан уязвимым и уже получил идентификатор CVE-2025-21691. Благодаря своевременному уведомлению команды разработчиков ядра, уязвимость была устранена в начале 2025 года.

Однако два основных механизма — упомянутые «posix_fadvise» и «preadv2» — по-прежнему остаются без защиты. Их изменения могут повлечь за собой поломку обратной совместимости, что затрудняет внедрение ограничений. При этом именно они позволяют создавать наиболее точные и устойчивые методы побочного анализа.

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

Работа подчёркивает необходимость пересмотра архитектурных решений в современных операционных системах. Учитывая, что атаки могут выполняться без прав суперпользователя и не требуют использования уязвимостей в традиционном смысле, подходы к защите должны адаптироваться к новым видам угроз.