как работают эксплойты с измененными изображениями для программ просмотра изображений? можно ли их победить с помощью управляемого кода и случайных изменений пикселей?

Я читал, что некоторые просмотрщики изображений были взломаны с помощью должным образом подделанных изображений (в формате, особенно подходящем для этого? Не уверен в деталях).

Так как же полностью устранить эту угрозу? Например, предположим, что мы делаем программу просмотра для уязвимого формата, написанную в управляемом коде, и заставляем ее преобразовывать изображения в чистый BMP (или что-то еще настолько простое, что программы просмотра невозможно взломать); проблема исчезнет? Как насчет того, чтобы сначала преобразовать в BMP, а затем внести некоторые повсеместные незначительные случайные изменения пикселей, чтобы лучше предотвратить возможный взлом?

Допустим, этот преобразователь санитизированных изображений будет встроен в брандмауэр, чтобы только «безопасные» санитизированные изображения по умолчанию загружались во время обычного просмотра. Решит ли это проблему? Или мои рассуждения неверны из-за неправильного понимания природы эксплойтов на основе изображений?


person EndangeringSpecies    schedule 08.04.2012    source источник


Ответы (1)


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

Известным примером этого является неправильное обращение с полями комментариев JPEG неправильной длины, первоначально это была ошибка Netscape, но позже она появилась независимо в Windows. Это была скорее проблема с данными, чем с изображением; часть рассматриваемых данных - это даже не данные изображения, а метаданные. Если вы декодировали изображение с помощью изолированного декодера, возможно, обнаружив и восстановив поврежденное поле комментария, а затем перекодировали его с помощью дружественного кодировщика, результат будет безопасным даже для уязвимых декодеров. Это наивно привело бы к потере качества; можно без потерь перекодировать JPEG-файлы, но для этого требуется специальный код.

Я интуитивно чувствую, что атаки на уровне изображения невозможны, только атаки на уровне данных. Форматы изображений достаточно хорошо определены и в принципе достаточно просты, так что содержимое изображения действительно не должно влиять на процесс декодирования. Я, конечно, не могу этого доказать, и даже не могу аргументировать это.

person Tom Anderson    schedule 08.04.2012