12 лет спустя
Microsoft устранила уязвимость в своем антивирусе Microsoft Defender, которую не могли обнаружить в течение 12 лет. В конце концов ее все-таки выявили эксперты компании SentinelOne.
Как выяснилось, она затаилась в драйвере, отвечающем за удаление локальных данных и прочей инфраструктуры, которую могут создавать вредоносные программы. Антивирус создает на месте удаленного файла другой, безвредный, в качестве промежуточной «заглушки». Однако, как установили исследователи, он не производит последующей проверки нового файла и его местоположения.
У злоумышленников возникает возможность подставлять стратегически важные ссылки, так что антивирус перезаписывает не следы жизнедеятельности вредоносов, а какой-либо системный файл или даже сам запускает вредоносный код.
Возможность такой манипуляции могла бы превратить Defender из защитного инструмента в великолепное подспорье хакерам, и по целому ряду причин. Во-первых, это штатный антивирус Windows, соответственно, его распространенность сопоставима с распространенностью самой операционной системы. Во-вторых, и сам антивирус, и, в частности, его уязвимый драйвер пользуются высшим уровнем доверия в контексте операционной системы. Это означает, что с помощью определенных манипуляций можно заставить антивирус беспрепятственно удалить ключевые файлы операционной системы, выведя ее из строя, а также запустить произвольный код и перехватить контроль над системой полностью.
В SentinelOne отмечают, что баг позволяет повышать системные привилегии до административных, что также может быть очень полезно для вредоносных программ.
Есть, правда, одно существенное ограничение, которое и позволило Microsoft присвоить баг статус опасного, но не критичного: для эксплуатации уязвимости нужен локальный доступ к системе. Не обязательно физический, но в любом случае, система уже должна быть скомпрометирована.
И этого достаточно
Но и с этим ограничением возможности для эксплуатации остаются весьма солидными: злоумышленник может взять систему под полный контроль и проникнуть глубоко в локальную сеть без необходимости получать административный доступ к ней.
Патч вышел 9 февраля 2021 г. К настоящему моменту нет никаких свидетельств тоого, что уязвимость кто-то пытался эксплуатировать, однако в SentinelOne решили задержать публикацию сведений о проблеме до того момента, как патч разойдется по максимальному количеству систем в мире.
Причины многолетнего игнорирования
Одной из причин, по которой уязвимость не замечали долгие годы, стала особенность самого драйвера. Он не присутствует в системе постоянно, вместо этого его загружают из библиотеки динамического подключения (DLL) по мере надобности и сразу после использования он снова удаляется с диска.
Действительно, как напоминает Wired, в июле 2020 г. стало известно об уязвимости в службе Windows DNS, которая могла быть использована для распространения вредоносов-червей. Как выяснилось, этот баг, получивший 10 баллов угрозы из 10 возможных, появился в коде службы еще 17 лет назад. И никто за это время его так и не нашел.
Еще более древней оказалась уязвимость в компонентах macOS, отвечающих за подключение модемов; она появилась в 1999 г. в MacOS 9, и была унаследована более поздними версиями операционной системы Apple. Впрочем, после 2016 г. ее эксплуатация стала малоосуществимой.
«Можно назвать большой удачей, что SentinelOne были первыми, кто обнаружил проблему, — говорит Дмитрий Кирюхин, эксперт по информационной безопасности компании SEC Consult Services. — Эксплуатируя этот баг, злоумышленники действительно могли бы причинить немало вреда. На самом деле, у них и сейчас еще остается окно возможностей для этого: исправления вышли в минувший вторник, но понятно, что пройдет какое-то время, прежде чем они будут установлены повсеместно. Пользователям рекомендуется не затягивать с установкой и сохранять бдительность».
«Уязвимости многолетней выдержки — не такая редкая вещь, — продолжает Кирюхин. — Любое ПО — это сложная система, которая использует большое количество сторонних компонентов, написанных в разное время людьми с очень разной квалификацией. Ошибки могут сидеть глубоко в коде, ничем особо себя не выдавая. Поэтому до их обнаружения иногда проходят годы».