Можете ли вы действительно получить троян в файле образа и если да, то как он будет выполняться?

11

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

Когда я это сделал, Avast сообщил, что один из них содержал троян Win32: Hupigon-ONX, и немедленно поместил его в карантин. Не желая рисковать, я скачал другую копию, которая была чистой.

Было ли это просто ложным срабатыванием Avast или действительно мог быть троян в jpg?

Если бы было, как бы это было выполнено?

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

ChrisF
источник

Ответы:

11

Эксплойты в файлах изображений используют недостатки переполнения буфера в коде обработки изображений ОС. Несколько лет назад в слое GDI Windows было несколько существенных таких недостатков - патчи были выпущены давно, но эксплойт-образы все еще существуют либо потому, что они остались, либо в надежде, что они попали в машину, которая еще не была исправлена ,

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

Современные процессоры имеют защиту, которая останавливает большинство этих эксплойтов, если код поддерживает это. Это работает программой / библиотекой, явно отмечающей, какие из ее страниц являются данными, а какие - кодом - тогда ЦП вызовет исключение, если что-либо в данных, таких как данные (например, данные изображения), попытается выполнить как код. IIRC Vista и более поздние версии и последние версии .Net перенастроили все свои библиотеки для поддержки этой защиты, и она поддерживается и другими ОС, но это не останавливает все такие эксплойты и работает, только если явно включено (в противном случае много старого кода сломалось бы).

Дэвид Спиллетт
источник
9

Я должен признать, что этот аспект троянов и вирусов всегда сбивал меня с толку. Как разработчик программного обеспечения, я всегда проверял длину массивов и т. Д., Поэтому я не понимаю, почему должны происходить такие вещи, как переполнение буфера.

Ну, добро пожаловать в реальный мир ;-). Переполнение буфера и т. Д. может произойти во многих языках (особенно в тех , с ручным управлением памятью , как C), и , как разработчики делают ошибки, они действительно случаются.

Хотя обычно переполнение буфера приводит к аварийному завершению программы (нарушение сегментации или подобное), это может позволить злоумышленнику выполнить активированный код -> троян.

Например:

http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx

http://secunia.com/advisories/35216/

И для объяснения, как это позволяет выполнение кода:

/programming/460519/how-are-buffer-overflows-used-to-exploit-computers

sleske
источник
Я знаю, что они случаются - это просто одна из основных проверок, которые я всегда выполнял при обработке данных - проверка, что я получил / выделил достаточно места для данных.
ChrisF
@ChrisF, факт, что вам нужно убедиться, что вы проверяете (в отличие от «компьютера»), является самой проблемой.
Забба
@Zabba я имел в виду, что я «кодирую программу для проверки» при обработке данных.
ChrisF
3

Существовал эксплойт, который делал переполнение буфера в битой библиотеке JPEG, которая могла запускать произвольный код в 2006 году. Microsoft выпустила патч, чтобы исправить это быстрее, чем я когда-либо видел. Ваша машина почти наверняка не уязвима, и Hupigon только сейчас генерирует слишком много ложных срабатываний.

http://www.microsoft.com/security/portal/Threat/Encyclopedia/Entry.aspx?name=Win32/Hupigon

MSW
источник
2

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

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

Самым простым решением для этого будет загрузка файла типа «image.jpg.exe» или чего-то подобного вместо реального изображения.

Более продвинутые способы заражения вашего компьютера уже были описаны здесь (например, переполнение буфера, ...)

Elvith
источник
1
Верно - но я изменяю параметры папки, чтобы показать расширения. Я уверен, что сокрытие известных расширений вызвало больше проблем, которые оно решает. На самом деле я не могу придумать проблему, которую она на самом деле решает.
ChrisF
полный акк - это один из первых вариантов, которые я активирую при работе с windows
Elvith
@ChrisF: Ну, очевидно, проблема, которую он решает, заключается в том, что в противном случае пользователи могут случайно изменить расширение файла при его переименовании. Это вызывает знакомую проблему: «Значок моего документа выглядит забавно, и я больше не могу его открыть. Помогите!» :-) (и да, я иногда делаю техподдержку для моей семьи).
слеське
@sleske - Windows 7 не выбирает расширение при переименовании файла.
ChrisF
1
@ChrisF: Интересно, не знал этого. Впрочем, раньше все было иначе - по крайней мере Windows Server 2003 выбирает полное имя для переименования. И в любом случае, если пользователи могут редактировать расширение, они будут :-).
слеське