Баг Google Pixel позволяет «распаковывать» скриншоты за последние четыре года

Еще в 2018 году телефоны Pixel получили встроенный редактор скриншотов под названием Markup с выпуском Android 9.0 Pie. Инструмент появляется всякий раз, когда вы делаете снимок экрана, а нажатие на значок пера приложения дает вам доступ к таким инструментам, как обрезка и несколько цветных ручек для рисования. Это очень удобно, если предположить, что инструмент Google Markup действительно делает то, что он говорит, но новая уязвимость указывает на то, что изменения, сделанные этим инструментом, на самом деле не были разрушительными! Пиксельные скриншоты, сделанные за последние четыре года, можно вырезать или не редактировать.

Ошибка была обнаружена Саймоном Ааронсом и названа «Акропалипсис» или, более формально, CVE-2023-21036. На acropalypse.app есть экспериментальное приложение , которое может отменять редактирование снимков экрана Pixel, и оно действительно работает! Здесьесть также хорошая техническая статья Дэвида Бьюкенена, сотрудника Аарона. Основная суть проблемы заключается в том, что редактор снимков экрана Google перезаписывает исходный файл снимка экрана вашим новым отредактированным снимком экрана, но он никоим образом не усекает и не сжимает этот файл. Если ваш отредактированный снимок экрана имеет меньший размер файла, чем исходный — это очень легко сделать с помощью инструмента обрезки — вы получите PNG с кучей мусора, скрытого в конце. Эти ненужные данные состоят из завершающих битов исходного снимка экрана, и на самом деле эти данные можно восстановить.

Звучит как плохой способ написать инструмент для обрезки скриншотов, но в защиту Google скажу, что версия инструмента разметки для Android 9 работала правильно и обрезала перезаписанный файл. Тем не менее, Android 10 привнес множество кардинальных изменений «Scoped Storage» в то, как хранилище файлов работало в Android. Непонятно, как и почему это произошло, но, возможно, как часть этой огромной волны коммитов по обработке файлов, одно недокументированное изменение проникло в парсер файлов Android Framework: режим «записи» фреймворка перестал усекать перезаписанные файлы, а в разметке возникла ошибка. Инструмент разметки зависел от обработки файлов ОС, и его работа изменилась в более позднем выпуске, чего, казалось, никто не заметил.

Инструмент проверки концепции на acropalypse.app отлично работает. Если у вас завалялось нескорректированное устройство Pixel, вы можете обрезать снимок экрана, передать его в инструмент, и вы получите необрезанные данные. Это не идеально — обычно вы получаете сильно поврежденный PNG с большой пустой областью, затем полосой причудливых цветов, но вы можете довольно надежно восстановить нижнюю часть обрезанного изображения. Ошибка была исправленав обновлении безопасности Pixel за март 2023 г., где он был отмечен как уязвимость с высоким уровнем безопасности. Это когда-либо затрагивало только редактор скриншотов Pixel, который сохраняет PNG, перезаписывая их, а не редактор Google Photos, который сохраняет JPG, создавая новую копию. Таким образом, обычно уязвимы обрезанные скриншоты, а не обрезанные фотографии с камеры, если только вы не делаете что-то действительно странное, например, делаете снимок экрана с выходом вашей камеры.

Однако простое исправление ошибки для будущих пользователей на самом деле не решает проблему. Остается вопрос о скриншотах Pixel за последние четыре года, которые доступны и, возможно, полны скрытых данных, которыми люди не осознавали, что делятся. Если вы публикуете этот скриншот публично, то, является ли он утечкой данных, зависит от того, кто его публикует. Некоторые приложения, такие как Twitter, будут повторно сжимать любые загруженные файлы, что приведет к удалению скрытых данных со снимка экрана. Если вместо этого приложение поделится исходным файлом, третья сторона может распаковать ваш снимок экрана. В частности, было подтверждено, что Discord делает это, и многие другие приложения для обмена сообщениями, вероятно, также используют исходный файл.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *