Для примера разработчик опубликовал png-картинку, внутри которой размещен исходный код его проекта tweetable-polyglot-png на GitHub.
Исследователь Давид Бучанан (Dаvіd Buc?аnаn) обнаружил, что в одной прикрепленной картинке в Twitter можно разместить около 3 МБ заархивированных данных. Сервис частично удаляет ненужные данные из загружаемых пользовательских PNG, но не проверяет добавленные данные в конце потока DEFLATE (части файла, в котором хранятся сжатые данные пикселей) внутри блока IDAT, при условии, что общий файл изображения соответствует всем необходимым требованиям и его не нужно повторно пережимать. Поэтому туда можно добавлять дополнительные данные.
Бучанан рассказал в описание своего проекта tweetable-polyglot-png на GitHub, как правильно сделать обложку предварительного просмотра для такой картинки-архива. Изображение для нее не должно содержать ненужных фрагментов метаданных.
Общий размер прикрепленного файла должен быть менее 3 МБ, иначе Twitter конвертирует PNG в JPEG.
Бучанан написал скрипт на python, с помощью которого можно быстро создать картинку-архив для передачу в Twitter. По умолчанию встраиваемый файл может являться zip-архивом, также поддерживается pdf и mp3. Исходный код скрипта Бучанан опубликовал на GitHub под лицензией MIT.
Пример mp3 файла внутри картинки в Twitter по мотоду Бучанан.
Эксперты издания Bleeping Computer пояснили, что техника сокрытия архивов, например, в конце JPEG, не нова, но обычно социальные сервисы проверяют определенным образом корректность вложений (режим sanitize), чтобы не дать пользователям распространять скрытые данные (вредоносные команды, полезную нагрузку и другой контент) для управления ботнетами и в других мошеннических целях.
Оказалось, что в Twitter эта блокировка, как показал Бучанан, не работает. Это плохо, так как Twitter может считаться безопасным хостом различными системами мониторинга сети, а распространение вредоносных программ через соцсеть с использованием обработанных файлов изображений является рабочим способом для обхода систем безопасности, настроенных, например, внутри периметра компаний.
Ранее Бучанан предупредил Twitter об этой проблеме по программе bug bounty. В компании ему отказали в награде и заявили, что эта ситуация не является ошибкой или багом в системе безопасности сервиса. Соцсеть не считает это проблемой.
Фактически, единственный способ обойти распространение загрузки таких доработанных картинок с вредоносными вложениями — блокировать доступ внутри компании к домену изображений Twitter, расположенному по адресу pbs.twimg.com. Но в этом случае в этой сети пользователи не смогут полноценно работать с сервисом коротких сообщений.
Примечательно, что в конце октября 2020 года похожий метод использовали энтузиасты для распространения кода youtube-dl в виде картинок в Twitter.
JTG
Опять хакер в столовой.
Зачем твиттеру с его-то объёмами медиаконтента перепаковывать даные, если это валидные данные?
(А ещё ведь в PNG можно «спрятать» нижнюю часть изображения, поправив высоту в секции IHDR — будет этакая квадратная картинка с котиком, которая на самом деле прямоугольная и под котиком написано «Трамп козёл!». И это, внезапно, тоже будет валидный PNG)
Mordov
Что ещё за хакер в столовой?
deitry
Баянклассика:https://xakep.ru/2006/12/16/35784/