Как ошибка графического драйвера на Samsung Galaxy S6 вызвала данные вкладки Google Chrome

  1. Как GraphicsFuzz находит ошибки графического процессора
  2. Как работает ошибка
  3. Уроки для изучения
  4. Раскрытие сроков

Еще в конце марта британская стартап-компания, специализирующаяся на тестировании надежности графических процессоров, обратилась к нам с Ошибка GPU, которую они обнаружили что вызывает Qualcomm Snapdragon 845 Samsung Galaxy S9 / S9 + перезагрузиться при посещении веб-страницы. Фирма под названием GraphicsFuzz , работал с нами, чтобы сообщить о проблеме Qualcomm а также Samsung , Некоторым из наших читателей было интересно узнать, как такая компания, как GraphicsFuzz , может найти эти уязвимости, поэтому мы сотрудничали с компанией, чтобы продемонстрировать, как они обнаружили более старую уязвимость графического процессора. Эта уже исправленная уязвимость позволяла злоумышленнику удаленно «шпионить» за содержимым Гугл Хром вкладки браузера на Samsung Galaxy S6 ,

Samsung Galaxy S6

Этот пользователь просматривал веб-сайт своего банка перед посещением вредоносной веб-страницы. Содержимое было захвачено и загружено на удаленный сервер. Источник: GraphicsFuzz ,

Как GraphicsFuzz находит ошибки графического процессора

Графический драйвер работает, принимая шейдерную программу и отправляя ее в графический процессор для выполнения и, таким образом, визуализации изображения. Перед отправкой шейдера в GPU графический драйвер преобразует его в форму, понятную для GPU; Неправильный перевод может привести к сбою рендеринга, сбоям программы или устройства, неправильным изображениям и даже проблемам безопасности. GraphicsFuzz имеет пакет автоматизированного тестирования это позволяет им находить эти ошибки на основе набора эталонных шейдеров. Когда пользователь проходит их тест Все полученные изображения должны выглядеть одинаково. Любое изображение, которое выглядит иначе, означает, что была ошибка.

Результаты нескольких популярных устройств с тестовым набором GraphicsFuzz. Samsung Galaxy S6, Samsung Galaxy S7 и самсунг Galaxy S8 включены в эти графики. Источник: GraphicsFuzz ,

Для Samsung Galaxy S6 GraphicsFuzz обнаружил, что изображения в одном из рядов показывают изображения, которые должны быть в другой таблице. Это означает, что изображения из более ранних тестов просочились в более поздние тесты. Затем команда повторно запустила набор тестов в Google Chrome и обнаружила, что на изображении появляются части веб-страницы. Кроме того, они обнаружили, что при открытии другой вкладки изображение показывает части других вкладок. По сути, эта ошибка позволяла одной вкладке Google Chrome пропускать информацию о другой вкладке Chrome! Команда, стоящая за GraphicsFuzz, специально не искала багов безопасности, но в итоге они нашли их в результате тестирования. (Следует отметить, что команда воспроизвела ошибку на штатном браузере Samsung на Galaxy S6, а также Mozilla Firefox .)

Как работает ошибка

Как работает ошибка

Изображение используется для запуска длительной ошибки на Samsung Galaxy S6. Источник: GraphicsFuzz ,

«Вредоносная» веб-страница, созданная GraphicsFuzz, использует WebGL, чтобы попытаться нарисовать космическую сцену внутри холста, как показано выше. Цвет каждого пикселя определяется фрагментным шейдером, программой, предоставляемой веб-страницей для выполнения на графическом процессоре. Каркас GraphicsFuzz модифицировал фрагментный шейдер, который заставил его работать очень долго. Когда шейдер работает слишком долго, браузер или операционная система обычно прерывает рендеринг. Однако, хотя графический процессор прервал рендеринг после рисования нескольких пикселей, драйвер графического процессора не сообщил об этом в Google Chrome. (Если вы посмотрите на изображение в верхней части статьи, показывающее мусорную видеопамять, вы фактически можете увидеть части космической сцены в левом верхнем углу.) Это означает, что пиксели, которые были отрисованы до прерывания, остались нетронутыми, То есть, окончательное визуализированное изображение - это в основном мусорная видеопамять. Поскольку видеопамять постоянно используется для визуализации других веб-страниц, «мусорные» данные фактически содержат предыдущие визуализации других веб-страниц. Таким образом, другие веб-страницы в конечном итоге отображаются на «вредоносной» веб-странице. Важно отметить, что WebGL позволяет веб-странице захватывать содержимое того, что отображается; это изображение затем загружается на удаленный сервер.

Диаграмма, объясняющая длительную ошибку графического процессора, приводившую к утечке данных на вкладке Chrome. Источник: GraphicsFuzz ,

Google Chrome использует несколько процессов, поэтому различные вкладки часто изолируются, что делает этот эксплойт невозможным на первый взгляд. Однако Chrome взаимодействует с графическим процессором с помощью единого «процесса графического процессора», что означает, что все вкладки совместно используют одну и ту же память графического процессора, что позволяет этому эксплойту работать. Диаграмма выше показывает это более подробно.

Ошибка демонстрируется в этом видео в течение первых 22 секунд. Другие проблемы безопасности, обнаруженные GraphicsFuzz, также демонстрируются.

Уроки для изучения

Плохо работающий графический процессор может обойти все меры безопасности Google Chrome и Android, поскольку WebGL позволяет любой вредоносной веб-странице отправлять код на графический процессор для выполнения. Google не может исправить ошибки графического процессора, так как компания не контролирует оборудование и драйверы. В этом случае это зависит от поставщика графического процессора (в данном случае ARM), чтобы исправить ошибку, и от производителя, чьи устройства (в данном случае, Samsung), чтобы интегрировать исправление в обновление. Добавьте носителей в список, и легко увидеть, как такая ошибка может быть исправлена ​​очень долго - большинству пользователей Samsung Galaxy S6 потребовалось не менее 5 месяцев, чтобы получить исправление.

GraphicsFuzz помогает поставщикам графических процессоров находить трудно обнаруживаемые ошибки, такие как ошибки неправильной компиляции, которые приводят к тому, что неправильный код генерируется и выполняется на графическом процессоре. Их автоматизированная среда тестирования позволяет им находить ошибки, подобные той, что была продемонстрирована в этой статье. Также было показано, что длительный цикл, вызванный «вредоносной» веб-страницей, вызывает проблемы на других устройствах, таких как HTC One M7 а в последнее время Samsung Galaxy S9 , GraphicsFuzz тестирует флагманские смартфоны и публикует таблица результатов который ранжирует эти устройства на основе их производительности на подмножестве их тестов. Сотни сбоев и ошибок рендеринга были обнаружены во время их тестирования, но большинство из них не расследуются, чтобы определить, представляют ли они угрозу безопасности. Однако, как показывает этот эксплойт, неправильная работа графического процессора является угрозой безопасности, и вполне возможно, что одна или несколько критических уязвимостей безопасности ожидают своего обнаружения. GraphicsFuzz надеется, что в будущем производители графических процессоров отдают предпочтение улучшению качества драйверов.

GraphicsFuzz надеется, что в будущем производители графических процессоров отдают предпочтение улучшению качества драйверов

Сравнительная надежность графических драйверов, отсортированных по количеству общих проблем. Источник: GraphicsFuzz ,

Раскрытие сроков

  • В декабре 2016 года GraphicsFuzz сообщил об ошибке Google Chromium трекер ошибок потому что он имел право на программу вознаграждений Chrome. После того, как GraphicsFuzz отправил ошибку на баг-трекер Google Chromium, она была принята Google и отправлена ​​в ARM и Samsung для исправления.
  • Google отправил отчет на контакты в ARM и Samsung.
  • Samsung молча исправил ошибку и выкатил исправление в Android 7.0 Обновление Nougat, которое было выпущено в период с марта по июнь 2017 года. Хотя в Samsung, Google или ARM не было создано CVE, и ни Samsung, ни ARM не выпустили никакой информации о патче, обратите внимание, что GraphicsFuzz не сообщала об ошибке через правильный процесс ,
  • Позже, GraphicsFuzz смог подтвердить, что и Samsung, и ARM видели отчет, и что ARM смог решить проблему благодаря отчету.
  • В августе 2017 года GraphicsFuzz был награжден Google в 2000 долларов за отчет об ошибке.
  • В ноябре 2017 года отчет об ошибке был обнародован ,

Хотите, чтобы больше подобных сообщений доставлялось на ваш почтовый ящик? Введите адрес электронной почты, чтобы подписаться на нашу рассылку.