Как работает RCE в изображениях?
Наткнулся на историю о том, что безопасники компании где я работаю запретили использовать в качестве источника статики (изображений в том числе) внешние ресурсы.
Обусловлено опаской за Remote Code Execution.
Как вообще можно спрятать, а главное выполнить в браузере код просто загрузив .png файл?
Ответы (1 шт):
Для RCE через картинку вам "понадобится" уязвимая библиотека обработки изображений на клиенте. Чаще всего причиной уязвимости становится переполнение буфера, но могут быть и другие причины повреждения памяти.
Однако, такие уязвимости довольно редки, а когда их всё же находят - первыми под удар попадают рекламные сети, потом соцсети и прочие сайты где возможен пользовательский контент. Корпоративный сайт, который сослался на картинку с другого сайта тут будет последний в очереди. Так что если ваши безопасники запрещают хотлинкинг картинок с других сайтов из-за опасений RCE - они просто идиоты.
Однако, использовать статику с других сайтов нехорошо, и причина тут вовсе не в RCE.
Проблема в том, что владелец другого сайта может делать со своими ресурсами всё что ему вздумается, и не несёт никакой ответственности за то как после этого будет выглядеть ваш сайт. В лучшем случае эту картинку он просто удалит через какое-то время, и останется у вас на сайте вместо картинки пустое место. В худшем - он поймает вирусню, которая заменит картинку на неприличную, и эта неприличная картинка окажется на вашем сайте. А да, всё это может быть проделано только для части пользователей, то есть вы даже не можете быть уверены что все посетители вашего сайта видят ту же самую картинку что и вы сами.