В штатном антивирусе Windows 12 лет зияла брешь для захвата ПК

Обнаруженный сторонними экспертами баг позволял использовать Defender для повреждения операционной системы или захвата контроля над компьютером. Но только при условии, что система уже скомпрометирована.

12 лет спустя

Microsoft устранила уязвимость в своем антивирусе Microsoft Defender, которую не могли обнаружить в течение 12 лет. В конце концов ее все-таки выявили эксперты компании SentinelOne.

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

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

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

В Microsoft Defender 12 лет таилась привлекательная для хакеров уязвимость

В SentinelOne отмечают, что баг позволяет повышать системные привилегии до административных, что также может быть очень полезно для вредоносных программ.

Есть, правда, одно существенное ограничение, которое и позволило Microsoft присвоить баг статус опасного, но не критичного: для эксплуатации уязвимости нужен локальный доступ к системе. Не обязательно физический, но в любом случае, система уже должна быть скомпрометирована.

И этого достаточно

Но и с этим ограничением возможности для эксплуатации остаются весьма солидными: злоумышленник может взять систему под полный контроль и проникнуть глубоко в локальную сеть без необходимости получать административный доступ к ней.

Патч вышел 9 февраля 2021 г. К настоящему моменту нет никаких свидетельств тоого, что уязвимость кто-то пытался эксплуатировать, однако в SentinelOne решили задержать публикацию сведений о проблеме до того момента, как патч разойдется по максимальному количеству систем в мире.

Причины многолетнего игнорирования

Одной из причин, по которой уязвимость не замечали долгие годы, стала особенность самого драйвера. Он не присутствует в системе постоянно, вместо этого его загружают из библиотеки динамического подключения (DLL) по мере надобности и сразу после использования он снова удаляется с диска.

Действительно, как напоминает Wired, в июле 2020 г. стало известно об уязвимости в службе Windows DNS, которая могла быть использована для распространения вредоносов-червей. Как выяснилось, этот баг, получивший 10 баллов угрозы из 10 возможных, появился в коде службы еще 17 лет назад. И никто за это время его так и не нашел.

Еще более древней оказалась уязвимость в компонентах macOS, отвечающих за подключение модемов; она появилась в 1999 г. в MacOS 9, и была унаследована более поздними версиями операционной системы Apple. Впрочем, после 2016 г. ее эксплуатация стала малоосуществимой.

«Можно назвать большой удачей, что SentinelOne были первыми, кто обнаружил проблему, — говорит Дмитрий Кирюхин, эксперт по информационной безопасности компании SEC Consult Services. — Эксплуатируя этот баг, злоумышленники действительно могли бы причинить немало вреда. На самом деле, у них и сейчас еще остается окно возможностей для этого: исправления вышли в минувший вторник, но понятно, что пройдет какое-то время, прежде чем они будут установлены повсеместно. Пользователям рекомендуется не затягивать с установкой и сохранять бдительность».

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