Эксперты Check Point проверили разные модели нечеткого тестирования старого компонента Office MSGraph и нашли сразу четыре опасных бага. Последний из них был исправлен 8 июня 2021 г.
Один компонент, четыре уязвимости
Эксперты компании Check Point выявили в офисном пакете Microsoft четыре уязвимости, которые позволяют начинять документы Office вредоносным содержимым.
Уязвимости получили следующие индексы: CVE-2021-31179 — уязвимость, позволяющая производить запуск удаленного кода, CVE-2021-31174 — вывод информации из Excel, CVE-2021-31178 — уязвимость вывода информации в китайской версии MSOffice, CVE-2021-31939 — уязвимость использования памяти после ее освобождения (use-after-free).
Все эти уязвимости выявлены в компонент MSGraph COM для отображения различных графиков и диаграмм. Компонент довольно старый — в Microsoft Office он присутствует с версии 2003. MSGraph и поныне применяется в нескольких версиях Office, включая Excel под Windows, OfficeOnlineServer и Excel под OSX.
«В плане поверхности атаки MSGraph похож на Microsoft Equation Editor 3.0. Однако в отличие от Equation Editor, MSGraph обновляется с каждым патчем к Office и получает новейшие защитные функции (такие как ASLR и DEP), что значительно затрудняет их эксплуатацию», — говорится в исследовании Check Point.
Информация об уязвимостях была передана в Microsoft 28 февраля 2021 г. После этого 11 мая были исправлены три из перечисленных уязвимостей, а 8 июня — залатана последняя (CVE-31939).
Нечеткое тестирование, явные результаты
В документе также указывается, что целью исследования MSGraph была отработка методики нечеткого тестирования (fuzzing), при этом компоненты Office по архитектурным причинам представляют собой крайне сложную мишень для таких опытов.
«MSGraph — бессимвольная программа, использующая в некоторых частях кода модель Windows COM, — поясняют исследователи. — Это уже делает нечеткое тестирование ее нетривиальной задачей. Сверх того, MSGraph в частности и Office в целом использует и запускает огромное количество других компонентов и внешних DLL, что делает процесс обратной инженерии еще сложнее».
«Если уязвим компонент, используемый сразу в нескольких разработках Microsoft, то, как правило, уязвимы и конечные продукты, если в них нет специальных механизмов, нейтрализующих проблему, — говорит Алексей Водясов, технический директор компании SEC Consult Services. — Компонент MSGraph — очень старый, и как справедливо пишут исследователи, редко привлекавший внимание экспертов по безопасности. Закономерным образом улов оказался велик».