Группа американских учёных разработала схему атаки Pixnapping, которая позволяет перехватывать закрытую информацию с устройств под управлением Android, выводя её на экран и считывая отображаемые данные по пикселям — точнее, по времени, которое необходимо для их отрисовки.

Источник изображений: pixnapping.com
Атака предполагает, что владелец Android-устройства предварительно установил на него вредоносное приложение. Такое приложение не требует системных разрешений, но позволяет считывать с экрана данные, которые выводит любое другое, целевое приложение. Исследователи продемонстрировали реализацию атаки Pixnapping на смартфонах серии Google Pixel и Samsung Galaxy S25 — вероятно, её можно адаптировать и для других моделей.
Вредоносное приложение производит вызов программных интерфейсов Android, которые заставляют средства многофакторной аутентификации и другие приложения выводить конфиденциальную информацию на экран устройства. Далее оно анализирует данные графического конвейера и попиксельно восстанавливает сведения, интересующие злоумышленника — те данные, которые на экране не показываются, перехватить не получится.
Атака производится в три этапа. На первом вредоносное приложение вызывает средства API Android, которые обращаются к целевым приложениям или позволяют сканировать устройство на предмет установки этих приложений. С помощью этих вызовов вредонос заставляет целевые приложения выводить на экран необходимые данные, например, переписку в мессенджере или коды двухфакторной аутентификации для входа на сайт.
На втором этапе алгоритм Pixnapping выводит поверх интерфейса целевого приложения прозрачное или полупрозрачное изображение и осуществляет анализ данных графического конвейера, чтобы по одному пикселю восстановить информацию, которую требуется перехватить. Это может делаться несколькими способами. Например, алгоритм анализирует область экрана, в которую Google Authenticator выводит коды двухфакторной аутентификации и по времени отрисовки определяет, является ли пиксель по заданной координате белым или нет — или в общем случае соответствует ли он исходному цвету.
На третьем этапе производится замер времени, необходимый для отрисовки кадра, которое зависит от цвета пикселя в определённой координате. Уязвимость возникла из-за механизмов сжатия в графическом конвейере, из-за которого время на отрисовку кадра зависит от его содержимого. Если пиксель соответствует исходному цвету, для его отрисовки требуется меньше времени, если не соответствует — больше. Эти измерения производятся многократно, чтобы статистически повысить точность механизма атаки. Используя эти данные, вредоносный алгоритм по одному пикселю восстанавливает изображение, которое выводит целевое приложение, и соответствующую ему информацию.
Применение этой атаки на практике усложняется тем, что некоторые данные, которые призван перехватить вредоносный алгоритм, остаются актуальными очень непродолжительное время — так, код двухфакторной авторизации может истечь всего за 30 секунд. В некоторых случаях создателям схемы атаки удалось её оптимизировать, сократив число проходов при сканировании кадра для считывания целевого пикселя по заданной координате до 16 (было 34 или даже 64) и уменьшив время между такими проходами с 1,5 с до 70 мс. Реализация атаки для смартфона Google Pixel 6 помогла восстановить шестизначный код Google Authenticator в 73 % случаев со средним временем 14,3 с. Для других смартфонов того же производителя показатели успешности атаки распределились следующим образом: Pixel 7 — 53 % и 25,8 с; Pixel 8 — 29 % и 24,9 с; Pixel 9 — 53 % и 25,3 с соответственно. В случае Samsung Galaxy S25 авторам исследования из-за высокого уровня шума не удалось уложиться в 30 секунд.
В Google отметили, что уязвимость, которой присвоили номер CVE-2025-48561, была частично исправлена в сентябрьском обновлении Android; допускается, что в декабрьском обновлении она будет исправлена полностью. Получить подтверждений того, что данная схема эксплуатировалась на практике, пока не удалось.
Источник: