Группа исследователей из университета Ньюкасла разработала атаку, которая полагается на информацию, полученную от датчиков смартфона. JavaScript-файл, созданный исследователями, тайно подгружается на устройство жертвы (с посещенного сайта или в составе установленного приложения), собирает информацию с многочисленных датчиков устройства и позволяет узнать, что именно пишет пользователь.
Эксперты объясняют, что такой вектор атак становится возможным из-за того, что мобильные операционные системы не ограничивают приложения, позволяя им собирать данные со всех сенсоров устройства. Текущая модель выдачи разрешений такова, что приложения уведомляют пользователя, когда хотят получить доступ к GPS, камере или микрофону, но информация, поступающая от акселерометра, гироскопа, датчика приближения, NFC и так далее не требует получения специальных разрешений.
Для своего эксперимента исследователи создали JavaScript-файл, которому дали имя PINlogger.js. Если пользователь оставляет браузер или другое зараженное приложение работать в фоновом режиме, а сам переключается на работу с другим приложением, скрипт собирает показания со всех доступных датчиков устройства. Если жертва в это время вводит PIN-код или пароль, PINlogger.js фиксирует данные и направляет их на сервер злоумышленников. «Это как пазл, чем больше кусочков удастся сложить вместе, тем проще будет увидеть полную картину», — пишут исследователи.
Как выяснилось, даже показания датчиков движения и ориентации в пространстве, для доступа к которым не нужны специальные разрешения, могут рассказать о многом. Так, искусственная нейронная сеть, которую исследователи натренировали на распознавание четерехсимвольных PIN-кодов, успешно справляется со своей задачей, демонстрируя 74% точности с первой попытки. Если же предоставить нейронной сети вторую и третью попытки, точность возрастает до 86% и 94%, соответственно.
Хотя основной целью этого исследования было привлечение внимания к проблеме безопасности сенсоров и тому факту, что для доступа к их данным не нужны никакие специальные разрешения, попутно исследователи также обнаружили несколько багов. Так, Firefox 46, вышедший в апреле 2016 года, теперь ограничивает доступ JavaScript к информации с датчиков движения и ориентации в пространстве. Аналогичные ограничения появились и в Safari, после релиза iOS 9.3, выпущенной в марте 2016 года. В Chrome проблема по-прежнему не устранена.
Полную версию отчета исследователей можно найти здесь. А ниже можно увидеть PINlogger.js в работе. На видео скрипт собирает данные, получаемые от датчиков iOS-девайса.