Стилер паролей в антивирусном ПО Avira Free Antivirus

в 8:14, , рубрики: avira, reverse engineering, антивирус, антивирусная защита, информационная безопасность, реверс-инжиниринг, уязвимость

Что если я Вам скажу, что единственной функцией одного из компонентов антивирусного ПО, имеющего доверенную цифровую подпись, является сбор всех Ваших учетных данных сохраненных в популярных Интернет-браузерах? А если я скажу что ему без разницы в чьих интересах их собирать? Наверное подумаете что я брежу. А давайте посмотрим как на самом деле?

Разбираемся

Живет себе и здравствует такая антивирусная компания как Avira GmbH & Co. KG. Выпускает различные продукты связанные с информационной безопасностью. В ассортименте даже есть бесплатные продукты для домашнего использования.

Установим себе интереса ради бесплатную версию, посмотреть что умеет продукт немецких коллег. Пробегаем взглядом по интерфейсу – ничего необычного. Не находим никакого упоминания еще одного из продуктов компании – Avira Password Manager.

А давайте заглянем в компонент с ничем не привлекающим внимание именем «Avira.PWM.NativeMessaging.exe»? Он скомпилирован для платформы .NET и никак не обфусцирован, поэтому загружаем его в dnSpy и свободно изучаем код программы.

Программа консольная и она ожидает команд в стандартном потоке ввода. Главная функция при помощи «Read» считывает данные с потока, проверяет формат и передает команду в функцию «ProcessMessage». Та же, в свою очередь, проверяет что переданная команда является "fetchChromePasswords" или "fetchCredentials" (хотя какая разница если дальнейшее поведение одинаковое?) и тогда начинается самое интересное – вызов функции «RetrieveBrowserCredentials». Интересно даже… что может делать функция с таким именем?

Листинг кода функции ProcessMessage

Да ничего необычного, просто собирает в один список все учетные записи пользователя, сохраненные им при работе с Интернет-браузерами «Chrome», «Opera» (на базе Chromium), «Firefox» и «Edge» (на базе Chromium) и возвращает данные в виде JSON-объекта.

Листинг кода функции RetrieveBrowserCredentials

Ну а затем выводит собранные данные в консоль:

Снимок экрана командной строки с полученными данными

Суть проблемы

  • Компонент собирает пользовательские учетные данные;
  • Компонент не верифицирует вызывающую программу (например, по наличию у неё цифровой подписи самого производителя);
  • Компонент имеет «доверенную» цифровую подпись и не вызывает подозрение у других производителей антивирусного ПО;
  • Компонент работает как отдельное приложение.

IoC

SHA1: 13c95241e671b98342dba51741fd02621768ecd5.

По данной проблеме был заведен CVE-2020-12680.

Об этой проблеме мною 07.04.2020 было направлено письмо в адрес support@avira.com и info@avira.com с полным описанием. Ответных писем, включая от автоматических систем не поступало. Спустя месяц описываемый компонент всё так же распространяется в дистрибутиве Avira Free Antivirus.

Автор: Николенко Константин

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js