Что если я Вам скажу, что единственной функцией одного из компонентов антивирусного ПО, имеющего доверенную цифровую подпись, является сбор всех Ваших учетных данных сохраненных в популярных Интернет-браузерах? А если я скажу что ему без разницы в чьих интересах их собирать? Наверное подумаете что я брежу. А давайте посмотрим как на самом деле?
Разбираемся
Живет себе и здравствует такая антивирусная компания как Avira GmbH & Co. KG. Выпускает различные продукты связанные с информационной безопасностью. В ассортименте даже есть бесплатные продукты для домашнего использования.
Установим себе интереса ради бесплатную версию, посмотреть что умеет продукт немецких коллег. Пробегаем взглядом по интерфейсу – ничего необычного. Не находим никакого упоминания еще одного из продуктов компании – Avira Password Manager.
А давайте заглянем в компонент с ничем не привлекающим внимание именем «Avira.PWM.NativeMessaging.exe»? Он скомпилирован для платформы .NET и никак не обфусцирован, поэтому загружаем его в dnSpy и свободно изучаем код программы.
Программа консольная и она ожидает команд в стандартном потоке ввода. Главная функция при помощи «Read» считывает данные с потока, проверяет формат и передает команду в функцию «ProcessMessage». Та же, в свою очередь, проверяет что переданная команда является "fetchChromePasswords" или "fetchCredentials" (хотя какая разница если дальнейшее поведение одинаковое?) и тогда начинается самое интересное – вызов функции «RetrieveBrowserCredentials». Интересно даже… что может делать функция с таким именем?
Да ничего необычного, просто собирает в один список все учетные записи пользователя, сохраненные им при работе с Интернет-браузерами «Chrome», «Opera» (на базе Chromium), «Firefox» и «Edge» (на базе Chromium) и возвращает данные в виде JSON-объекта.
Ну а затем выводит собранные данные в консоль:
Суть проблемы
- Компонент собирает пользовательские учетные данные;
- Компонент не верифицирует вызывающую программу (например, по наличию у неё цифровой подписи самого производителя);
- Компонент имеет «доверенную» цифровую подпись и не вызывает подозрение у других производителей антивирусного ПО;
- Компонент работает как отдельное приложение.
IoC
SHA1: 13c95241e671b98342dba51741fd02621768ecd5.
По данной проблеме был заведен CVE-2020-12680.
Об этой проблеме мною 07.04.2020 было направлено письмо в адрес support@avira.com и info@avira.com с полным описанием. Ответных писем, включая от автоматических систем не поступало. Спустя месяц описываемый компонент всё так же распространяется в дистрибутиве Avira Free Antivirus.
wmgeek
А рядом нашелся компонент который читает консоль и передает все JSON куда не следует?
Veliant Автор
В данном случае нет. Но не редкость, когда подписанные приложения известных производителей распространяются вместе с вредоносным ПО. Примеров много: TeamViewer, PuntoSwitcher, некоторые компоненты McAfee. Или те же утилиты от NirSoft, но их почти все производители детектируют как PUA.
Остается вопрос зачем его включать в поставку без самого менеджера паролей и нельзя ли это было реализовать например в виде DLL, которая при вызове её API проверяла бы цифровую подпись вызывающей программы?
teecat
Предположу, что банальная лень. Был нужный компонент/код. Его и взяли не думая
xi-tauw
Обычно такие проверки обходятся очень легко.
MisterN
ТимВьювер грузит вредоносные ПО?
hippoage
Наоборот: вредоносное ПО грузит ТимВьювер, чтобы управлять зараженной системой без подозрений антивирусов.