На хакерской конференции Syscan 360 в Пекине представитель сингапурской компании в области информационной безопасности COSEINC Хошеан Корет (Joxean Koret) выступил с презентацией о взломе антивирусного программного обеспечения.
Главный тезис презентации состоит в том, что устанавливая антивирусное ПО на свой компьютер, вы делаете его более уязвимым, добавляя дополнительный вектор атаки. Да, антивирус защищает от старых неактивных вирусов, но при этом открывает лазейки для новых вирусов, которые пользуются дырами в движках антивирусных программ.
Автор объясняет, что по причинам производительности движки AV написаны на небезопасных языках программирования. Почти все они написаны на C и/или C++, за исключением совсем немногих, таких как MalwareBytes на VB6. Соответственно, там повсеместно можно эксплуатировать переполнения буфера, целочисленные переполнения, форматы строк и проч. Эти движки занимают привилегированное положение в ОС, устанавливают системные драйверы, поддерживают множество форматов файлов, включая уязвимые, работают с наивысшими привилегиями в системе и обновляются по HTTP. В общем, идеальный плацдарм для атаки.
Разработчики антивирусов тоже люди...
Хошеан ради забавы в течение июля искал уязвимости в разных антивирусных движках, и ему удалось найти многочисленные дыры в 14 из 17 проверенных движков, в том числе в Avast, Avg, Avira, BitDefender, ClamAV, Comodo, DrWeb, ESET, F-Prot, F-Secure, Panda, eScan и др. Уязвимости допускают удалённое и локальное исполнение кода. Особенно большое количество багов найдено в румынском BitDefender.
Отличился и Kaspersky AV, у которого ключевые модули avzkrnl.dll и vlns.kdl не используют защиту ASLR. «Любой может написать надёжный эксплойт для Антивируса Касперского без особого труда», — считает Корет.
Среди уязвимых — DrWeb, который раньше обновлялся по HTTP без использования SSL/TLS, а рабочие файлы распространялись без цифровой подписи, только CRC32. Таким образом, любой мог подменить drweb32.dll, подобрав подходящий CRC32. Возможно, сейчас эти баги уже закрыты.
Возможные векторы атаки
Автор предлагает несколько векторов атаки на разные антивирусы для вывода их из защищённого режима (ASLR) и эксплуатации уязвимостей. Например, использование двух вложенных друг в друга файлов внутри архива. Первый заставляет антивирус запустить эмулятор, а второй файл — это эксплойт. Можно и провести атаку типа «отказ в обслуживании», потому что многие антивирусы до сих пор уязвимы к zip-бомбам (баг 10-летней давности). Например, тот же «Касперский» при распаковке маленького 7z-архива создаёт временный файл на 32 ГБ.
В общем, специалист из Сингапура крайне скептично настроен по отношению к разработчикам антивирусного ПО.