Заместитель главного редактора
111,8
рейтинг
11 января в 16:51

Баг драйвера видеокарты может раскрыть просмотренное в режиме инкогнито

Окно с порносайтом случайно появляется при загрузке игры


Современные браузеры снабжены приватным режимом работы. Переключение в него означает открытие нового окна браузера, которое обладает рядом особенностей. Записанные браузере куки не будут учитываться при сёрфинге, а установленные нигде не останутся. Открытые в приватном окне страницы не попадут в историю. Не будут записываться введённые в формы данные, чтобы они не появились позже в автодополнении набора.

По окончании работы в режиме инкогнито пользователь может закрыть окно, будто ничего и не было. Но это «что-то» было, и есть множество способов выяснить, что. Эван Андерсон обратил внимание на ещё один: видеопамять графического ускорителя не обнуляет данные кадровых буферов.

Приватный режим имеет много сценариев использования: это просмотр порносайтов, необходимость дать другому человеку возможность быстро посмотреть почту или проверка неких технических моментов при веб-разработке. Во многих примерах использования важна приватность данных, то есть никто другой не должен узнать, куда заходил пользователь.

Хотя какие-то проблемы решаются, режим инкогнито не является панацеей. Многое могут знать те, кто обеспечивает доступ к информации: владельцы посещённых сайтов, провайдеры услуг связи. Что-то знают компании интернет-статистики. Совокупность установленных расширений в браузере составляет уникальный слепок, отслеживаемость которого можно проверить инструментом Panopticlick «Фонда электронных рубежей». Что-то остаётся в кэше запросов службы доменных имён.

Обычно такие способы подразумевают желание выяснить скрываемое. Пример Андерсона коварен случайностью утечки.

Андерсон посетил порноресурс в Google Chrome. Прошло несколько часов. Затем на том же компьютере была запущена игра Diablo III. Несколько секунд при загрузке главного меню на экране отображалось приватное окно браузера, вернее, его графическая составляющая. Член семьи Эвана даже успел сделать скриншот. Содержимое закрытого часы назад окна идеально сохранилось.


Контент был зацензурен.

Подобная утечка стала возможной благодаря тому, как работают драйверы видеоускорителя Nvidia. После передачи доступа к памяти от одного приложения другому драйвер не очищает память. После закрытия приватного окна фреймбуфер браузера Chrome попал в пул свободной памяти, но его содержимое не было удалено. Когда игра Diablo III запросила свой кадровый буфер, видеокарта дала доступ к тому, что раньше использовался браузером. Игра тоже не почистила содержимое буфера, поэтому на экране появился порносайт.

Другой бы быстро забыл этот казус с демонстрацией порнопристрастий членам семьи. Но Андерсон написал простое приложение, которое сканирует память на ненулевые пиксели. Так удалось идеально воссоздать окно браузера с открытым «Реддитом».



Как указывает Эван, баг удаётся воспроизвести на видеокартах AMD и Nvidia, но не встроенной графике Intel. Андерсон использовал Mac OS X. Подобное не всегда работает. Иногда получается каша с фрагментами окна.



Такая особенность работы драйверов не только допускает возможность подсматривания, но и означает случайные неприятные неожиданности при работе обычных приложений. Есть несколько решений. На стороне драйвера достаточно очищать фреймбуфер так, как операционная система очищает память при передаче доступа от одного приложения к другому. Браузер в свою очередь может обнулять буфер при выходе. В апреле Андерсон направил свои предложения как Nvidia (наверное, стоило бы также известить Apple), так и разработчикам Google Chrome.

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

Код приложения Андерсона для сканирования памяти приложен к баг-репорту в виде архива.
@atomlib
карма
318,0
рейтинг 111,8
Заместитель главного редактора
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (35)

    • 0
      Отсутствие сброса видеопамяти при перезагрузке всей машины — это тоже интересный вопрос. Эту проблему тоже до сих пор не исправили?
  • +7
    Как они заявили, режим инкогнито не ставит целью сокрытие посещённых страниц от других пользователей компьютера.
    Интересно и давно это? А то в комиксе про Хром они нарисовали пример с подарком, который могут спалить родные.
    • 0
      Исправил, спасибо.
  • +8
    Инкогнито это не аномность в интернете.
    Теперь еще и «не ставит целью сокрытие посещённых страниц от других пользователей компьютера».
    А что это тогда такое и зачем нужно???
    • 0
      Чтобы потестить веб-приложение под другим юзером.

      На iOS, кстати, уже пару версий (т.е. лет) аналогичный баг — при переключении между приложениями часто показывается старая картинка, причём иногда там содержимое вебстраниц, которые я посещал пару недель назад. С анонимным режимом такого не замечено, впрочем.
      • +3
        1) Для этого есть профили уже несколько лет как. Появились профили раньше чем инкогнито, хоть и были выключены по умолчанию.
        2) Если это сделано для разработчиков, то непонятно, зачем название вводящее в заблуждение и почему находится в основном меню, а не в инструментах для разработки.
      • 0
        На iOS то не баг, она специально при закрытии приложения делает скриншот и показывает его при следующем запуске для создания ощущения моментальной загрузки.
        • +1
          Не баг — это когда показывает последнее состояние приложения.

          Я специально указал, что сафари нередко показывает очень старые скриншоты, картинки страниц, которые я не посещал пару недель, или которые уже давно изменились.
          Гугл полон отзывов на эту тему: m.reddit.com/r/ipad/comments/32b4ea/old_screenshots_for_open_apps
          discussions.apple.com/thread/5413121?start=45&tstart=0
      • 0
        Вроде бы только в 9-й появился и в последней бетке поправлен, т.е. где-то полгода багу. Тоже ничего хорошего, конечно.
        • 0
          У меня он точно был на i6+, а значит на iOS 8. Думаю, появился в iOS 7 ещё.
          На i6s в последнее время не замечаю, может быть пофиксили, а может быть просто 2 ГБ оперативки достаточно, чтобы не выгружать приложения из памяти, а значит и скриншоты не нужны.
          С 2 ГБ оперативки многое стало работать лучше, например, можно писать комментарий на Хабре и не боясь потерять написанное переключаться в другие приложения или даже в другие окна в Safari.
          • 0
            Возможно в iOS 7 и 8 на 5s он достаточно редко вылезал, раз я его только на 9-й замечать начал.
            Что-то вспомнилось, что в настольном Хроме 3,5 — 4 года назад (ещё на вебките) был похожий баг, он тогда доставал из кеша стили и картинки несколько дней как обновлённые, в том числе и в памяти самого браузера. Возможно это он и есть.
    • +2
      Да, там была неправильная цитата: приватный режим не даёт гарантий. Про предназначение не говорилось. Я подцепил ошибку от обратившего внимание на баг Андерсона, который неправильно процитировал разработчика. Разработчик заявил, что нет гарантий защиты от просмотра пользователями на той же машине, поскольку с тем же успехом можно поставить кейлогер. Андерсон же цитирует это у себя в блоге так, будто бы приватный режим не предназначен для этого вообще.
      • +2
        Разработчик заявил, что нет гарантий защиты от просмотра пользователями на той же машине, поскольку с тем же успехом можно поставить кейлогер.

        Или слить дамп ОЗУ — там еще больше интересного. Насколько я понимаю, неиспользуемые страницы системой не очищаются, а выборочного рефреша ячеек на чипе уж точно не бывает.
        • +2
          > Насколько я понимаю, неиспользуемые страницы системой не очищаются
          Да, но были патчи, Linux, 2005 —
          www.kernel.org/pub/linux/kernel/people/christoph/prezero/posts/3.0 «Adds management of ZEROED and NOT_ZEROED pages and a background daemon called scrubd.»
          lwn.net/Articles/117881 lwn.net/Articles/122444
          www.linuxjournal.com/article/8181 "… zeroing pages of memory before they are needed, rather than at the time they are requested."
          Негативная реакция Линуса на сходные предложения, 2000 — yarchive.net/comp/linux/page_zeroing_strategy.html «It's not just about polluting the caches. ...It's also about polluting a shared bus… An idle thread should NOT use resources that may be useful for other threads that are doing real work.»
          FreeBSD: www.freebsd.org/doc/en/articles/vm-design/prefault-optimizations.html «To optimize the zeroing operation the VM system has the ability to pre-zero pages and mark them as such, and to request pre-zeroed pages when zero-fill faults occur. The pre-zeroing occurs whenever the CPU is idle»
          • +1
            Ошибся, в Windows есть фоновое обнуление: blogs.msdn.com/b/tims/archive/2010/10/29/pdc10-mysteries-of-windows-memory-management-revealed-part-two.aspx
            «Firstly, the zero page thread runs at the lowest priority and is responsible for zeroing out free pages»
            https://msdn.microsoft.com/en-us/library/windows/desktop/ms685100(v=vs.85).aspx «The zero-page thread is a system thread responsible for zeroing any free pages when there are no other threads that need to run.»
            • +1
              Не совсем. Условие отсутствия более приоритетных потоков ставит крест на гарантиях обеспечения безопасности. На бытовом уровне это не спасет незадачливого любителя порнографии. Кроме того, есть такая штука, как РД АС НСД, которая для ряда видов АС не допускает подобных вольностей.
        • 0
          Только всё это требует установки спецсофта, то есть либо явное изъявление намерения, либо халатное отношение к безопасности компьютера. А указанный в статье баг позволяет нежелательное поведение во вполне безобидных условиях.
        • +1
          Разве непривилегированное приложение может слить дамп ОЗУ на современных ОС? Тут же речь о том, что любой Вася может даже под другим юзером запустить эту программу и увидеть содержимое вкладок браузера другого пользователя или ещё чего интересное. Вот здесь более развёрнуто.
    • 0
      Собственно я его использую только в двух случаях:
      1) быстро потестить приложение под двумя и более пользователями
      2) дать приходящим в гости людям включать музыку (или любое другое действие) из вк, не разлогиниваясь из своего акка

      Хотя согласен, я думал, что приведенный тезис как раз и является основным предназначением режима.
  • +1
    Хм, в таком случае утечка скриншотов из окон режима «инкогнито» не самое интересное применение данного бага.
  • +3
    Подтверждаю, у меня на iMac с видеокартой NVidia абсолютно такое же поведение. При запуске игры «Insurgency» несколько секунд видно содержимое видеобуфера, в том числе последнее открытое окно браузера.
  • +1
    С появлением в драйверах интеграции со стриминговыми сервисами, думаю, рано или поздно начнут вылезать еще более интересные баги.
  • 0
    А webgl может прочитать кадровый буфер напрямую?
  • +2
    У меня насчёт разработчиков хрома только один вопрос — «им жалко что ли?». Изменение банальное (скорее всего пара строчек в нужном месте), никаких характеристики браузера не ухудшает (ага, окно инкогнито будет закрываться на микросекунду дольше), а некоторым пользователям (что-то мне подсказывает, что большинство всё же не ожидает такого поведения от режима инкогнито) будет лучше. Объективных причин отказывать нет, только личная упоротость разработчика.
    • 0
      «Отсутствие сброса видеопамяти при перезагрузке всей машины — это тоже интересный вопрос.»
      Если верить этому, то им эту память придется чистить постоянно, так как в случае перебоя с питанием кадры останутся в видеопамяти.
      • 0
        *Если верить этому, то им эту память придется чистить постоянно, и то не спасет, так как в случае перебоя с питанием кадры останутся в видеопамяти.
  • +1
    Windows + AMD — аналогично воспроизводится. например, при запуске в полноэкранном режиме Guild Wars 2 секунду виден скриншот экрана скольки-то минутной давности.

    У других не замечал, что интересно. Закрашивается чем-то другим? Или в GW2 и других тут упомянутых как-то по-особенному реализован запуск приложения?
  • 0
    У меня языковедческий вопрос. Если задуматься, как бы вы написали множественное число слова «драйвер» — «драйверА» или «дрАйверы»? В статье вы написали «драйвера», мне интересно, это беглое письмо или для вас это норма?
    • 0
      Да, это оговорка. Исправил, спасибо.
      • 0
        Это не замечание было, мне просто интересно. «Директора» вот уже стало словарной нормой, «отпуска» — давно. «Договора» — пока разговорный. ДрайверА вполне укладываются в тенденцию. Устно я иногда говорю драйверА, но на письме нет, и в глаза бросается.
        • 0
          Самое банальное «СерверА»
  • 0
    Что с файерфоксом?
    • +1
      Всё в порядке, уязвимость присутствует. Вообще баг не относится к какому-то конкретному браузеру — утекают изображения из офиса, просмотрщиков изображений и прочее, прочее.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.