Microsoft исправила дыру в Windows, о которой знала два года

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

Давнее дело

Microsoft в рамках последнего обновления для Windows выпустила исправления для неприятной уязвимости, из-за которой система некорректно считывала сертификаты безопасности у инсталляционных файлов MSI (для обновлений Windows). Баг CVE-2020-1464 приводит к тому, что MSI-файл можно значительно модифицировать (вплоть до полной подмены содержимого), однако его цифровая подпись останется неизменной и, следовательно, у злоумышленников появляется возможность запускать такой файл под видом легитимного.

Эксперт по кибербезопасности Тал Бэри (Tal Be'ery) из фирмы Zengo и его коллега Пелег Хадар (Peleg Hadar) из SafeBreachLabs утверждают, что это тот же самый баг, о котором Microsoft уведомили еще два года назад. Тогда разработчик Windows отказался выпускать какие-либо исправления для него.

Слон плохой, справка хороший

История выглядела следующим образом. Во второй половине 2018 г. на VirusTotal был загружен некий подозрительный инсталлятор под Windows. Изучив его, сотрудник VirusTotal Бернардо Квинтеро (Bernardo Quintero) выяснил, что это файл в формате MSI, к которому добавлен еще и файл JAR (архив Java). Как пишет Bleeping Computer, у файла даже расширение было заменено на JAR, однако Windows по-прежнему рассматривала его как легитимный инсталлятор с цифровой подписью Google.

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

Квинтеро передал всю информацию в Microsoft 18 августа 2018 г. Однако в ответ ему было заявлено, что исправлений для этой проблемы компания выпускать не планирует — во всяком случае, для актуальных версий Windows.

В итоге VirusTotal самостоятельно реализовал детектирование JAR-файлов, выдающих себя за инсталляторы Windows, и то же сделала компания SysInternal. Судя по текущему положению дел на VirusTotal, лишь 14 антивирусных движков детектируют подобное (в том числе Avast, Avira, F-Secure, Panda, а также антивирусы «Лаборатории Касперского» и Microsoft).

Спустя два года Microsoft, однако, присвоила уязвимости CVE-индекс (хотя имя Квинтеро нигде так и не упомянуто) и выпустила обновления, которые попросту удаляют цифровые подписи у модифицированных MSI-файлов, и то лишь у тех, к которым добавили архив JAR. Если к подписанному файлу инсталлятора добавить исполняемый файл EXE, его подпись остается действующей.

Комментарий Microsoft, полученный CNews, был скуп на детали. «Обновление безопасности было выпущено в августе. Пользователи, установившие обновление или включившие функцию автоматической установки обновлений, будут защищены. Мы продолжаем мотивировать клиентов включать автоматические обновления, чтобы обеспечить их защиту», — сообщили в компании.

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

Файлы MSI и JAR считываются по-разному: Windows читает MSI с самого начала и до конца сигнатуры MSI; все остальное игнорируется. В свою очередь, Java считывает архивы JAR с конца и до начала, и также игнорирует все остальное. В общем зачете злоумышленники получают возможность маскировать вредоносное содержимое, упакованное в JAR, легитимной подписью MSI.

«Возможно, причиной, по которой Microsoft все-таки решила исправить уязвимость, стало резкое увеличение случаев ее эксплуатации на практике, — говорит Алексей Водясов, эксперт по информационной безопасности компании SEC Consult Services. — С июня этого года такие атаки отмечались уже несколько раз. И, учитывая простоту проблемы, довольно странно, что ее мало эксплуатировали раньше».