Многочисленные критические уязвимости в антивирусах Symantec/Norton
Опубликован рабочий эксплоит для всех версий антивирусов Symantec/Norton
Вчера Тэвис Орманди (Tavis Ormandy) из хакерского подразделения Project Zero компании Google выложил в открытый доступ информацию о многочисленных уязвимостях в антивирусных программах Symantec, в том числе уязвимостях с удалённым исполнением кода.
Некоторые специалисты говорят, что установленная на компьютере антивирусная программа, учитывая её максимальный уровень привилегий в системе, может стать дополнительным вектором атаки, то есть дополнительной брешью в общей безопасности системы. Пример Symantec демонстрирует это настолько явно, насколько такое возможно. В некоторых случаях под Windows вредоносный код загружается прямо в ядро операционной системы, что ведёт к повреждению памяти ядра.
Программы Symantec используют одинаковое ядро, так что описанные методы работают для всех программ Symantec, в том числе для антивирусов, которые продаются под брендом Norton. Среди них:
- Norton Security, Norton 360 и другие полученные в наследство продукты Norton (все платформы)
- Symantec Endpoint Protection (все версии, все платформы)
- Symantec Email Security (все платформы)
- Symantec Protection Engine (все платформы)
- Symantec Protection for SharePoint Servers
- И другие
Тэвис Орманди из Project Zero обнародовал примеры некоторых уязвимостей, чтобы всем стала понятна суть проблемы.
В случае с антивирусами проблема в том, как они проверяют исполняемые файлы, запакованные упаковщиками вроде UPX. Чтобы проверить такие файлы, в антивирусах используются специальные распаковщики файлов, чтобы вернуть «экзешник» к исходному виду. Это помогает со стандартными упаковщиками, а для остальных приходится прибегать к эмуляции.
Тэвис Орманди пишет, что все эти методы порождают излишнюю сложность и чрезвычайно подвержены уязвимостям, потому что очень сложно сделать такой код безопасным. «Мы рекомендуем использовать песочницу и Security Development Lifecycle, но вендоры часто срезают здесь углы», — пишет Тэвис. Из-за этого распаковщики становятся огромным источником уязвимостей, как уже было в случаях с Comodo, ESET, Kaspersky, Fireeye и многими другими.
В случае с Symantec ситуация ещё хуже, потому что в её программах распаковщики работают в ядре!
Например, её распаковщик для ASPack допускает тривиальное переполнение буфера, если значение SizeOfRawData больше, чем SizeOfImage. Когда такое происходит, Symantec переносит «лишние» байты в буфер с помощью memcpy
. Соответственно, мы можем легко запустить на исполнение на уровне ядра произвольный код, используя такой метод:
char *buf = malloc(SizeOfImage);
memcpy(&buf[DataSection->VirtualAddress],
DataSection->PointerToRawData,
SectionSizeOnDisk);
Уязвимость CVE-2016–2208 подробнее описана в баг-трекере. В операционных системах Linux, macOS и Unix она приводит к чистому переполнения на уровне рута в процессе Symantec или Norton, а в операционной системе Windows — к повреждению памяти ядра.
Поскольку Symantec использует специальный драйвер для перехвата всех системных прерываний, то для эксплуатации уязвимости достаточно просто отправить жертве файл по электронной почте или ссылку на эксплоит. Жертве не нужно открывать файл или переходить по ссылке, антивирус всё сделает самостоятельно. Это открывает возможность даже для автоматического распространения червя по всем системам с установленным антивирусом Symantec/Norton!
Таким образом можно легко заразить большое количество компьютеров в локальной сети предприятия.
Любопытно, что перед публикацией информации в открытом доступе Тэвис Орманди отправил эксплоит в отдел безопасности по электронной почте в zip-архиве, защищённом паролем, а пароль указал в тексте письма. Но почтовый сервер с установленными «средствами защиты» Symantec извлёк пароль из текста письма, применил его к архиву и в процессе изучения кода эксплоита обрушил сам себя.
Тэвис Орманди также рассказывает об уязвимостях при парсинге файлов PowerPoint и других файлов Microsoft Office, а также об уязвимостях эвристического движка Bloodhound Heuristics (Advanced Heuristic Protection). Исходный код эксплоита опубликован. Это на 100% рабочий эксплоит, который действует против стандартных конфигураций Norton Antivirus и Symantec Endpoint, и срабатывающий просто при отправке ссылки по почте или публикации ссылки на веб-странице (её не нужно открывать).
В данном случае уязвимы следующие продукты (здесь перечислены не все потенциально уязвимые программы Symantec, вполне возможно, что эксплоит срабатывает и в других):
- Norton Antivirus (Mac, Windows)
- Symantec Endpoint (Mac, Windows, Linux, Unix)
- Symantec Scan Engine (все платформы)
- Symantec Cloud/NAS Protection Engine (все платформы)
- Symantec Email Security (все платформы)
- Symantec Protection for SharePoint/Exchange/Notes/etc (все платформы)
- Все остальные Symantec/Norton Carrier, Enterprise, SMB, Home и прочие антивирусные программы
- И другие
Под Windows это приводит к исполнению кода на уровне SYSTEM, в остальных операционных системах — с правами рута.
Некоторые из программ Symantec не обновляются автоматически, поэтому системным администраторам необходимо предпринять срочные меры для защиты своих сетей. Официальная информация от Symantec здесь.