Исследователи безопасности разработали инструмент для выявления ошибок в том, как Microsoft Word и Adobe Acrobat обрабатывают JavaScript. Инструмент оказался очень эффективным, поскольку ему удалось обнаружить 134 проблемы, и 59 из них были настолько серьезными, что вендоры даже выпустили исправления. 33 уязвимостям были присвоены идентификаторы CVE, а за 17 даже было заплачено вознаграждение на общую сумму в $22 тыс.
Инструмент получил название Cooper по названию используемой им техники «Cooperative mutation».
В ходе презентации инструмента на конференции Black Hat Asia в Сингапуре один из его авторов Су Пен из Академии наук КНР пояснил, что приложения наподобие Word и Acrobat принимают входные данные от скриптовых языков. К примеру, Acrobat разрешает JavaScript манипулировать PDF-файлами.
Для этого необходимо, чтобы PDF и определял собственные PDF-объекты, и проводил синтаксический анализ JavaScript-кода. Собственные объекты обрабатываются модулями Acrobat, а скрипты – встроенным JavaScript-движком. Перевод осуществляется на «уровне привязки».
По словам создателей Cooper, связующий код «склонен к непоследовательной семантике и пробелам в безопасности, что приводит к серьезным уязвимостям».
Как пояснил Су, Cooper способен находить эти уязвимости, поскольку используемая им техника cooperative mutation «одновременно модифицирует код скрипта и связанные объекты документа с целью поиска различных путей для связующего кода». Такой подход отличается от других защитных техник для поиска уязвимостей в скриптах.
Как сообщается на GitHub-странице инструмента, он содержит три компонента:
Кластеризация объекта – вначале Cooper осуществляет синтаксический анализ заданного образца документа с целью извлечения собственных объектов. Для уменьшения пространства поиска объекта Cooper разделяет объекты на разные классы в зависимости от их атрибутов;
Вывод о связях – затем Cooper производит большое количество документов, комбинируя разные классы объектов и групп API, и записывает результаты выполнения встроенных скриптов. В зависимости от степени успеха выполнения скрипта и распределения классов объектов инструмент делает вывод о связях между группами API и классами объектов;
Мутация, управляемая отношениями – и наконец, Cooper использует выводы о связях для руководства по выбору объекта, генерирования скрипта и мутации объекта.
Таким образом, Cooper в некотором роде является сложным инструментом фаззинга. Вывод о связях управляет процессом поиска условий, при которых скрипты, приложения и уровень привязки приводят к нежелательному и/или опасному поведению.
Нажимая на кнопку, я даю Согласие на обработку персональных данных в соответствии с Политикой обработки.