Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Автоматизация построения правил для Approof

Автоматизация построения правил для Approof

Доклад Дениса Ефремова (ИСП РАН), посвященный написанию правил для утилиты Approof, на PHDays VII.

Positive Development User Group

September 25, 2017
Tweet

More Decks by Positive Development User Group

Other Decks in Programming

Transcript

  1. Заголовок • Статический анализатор • Младший брат Application Inspector •

    Свободно доступен для использования «Без регистрации и смс» • https://approof.ptsecurity.ru/ • Движок FingerPrint – поиск известных версий библиотек с уязвимостями
  2. Заголовок • Метаинформация • Имя, версия, описание угрозы, уровень угрозы

    … • Паттерны • Строки, регулярные выражения • Условия сопоставления паттернов • Логическое условие на основе существующих паттернов и правил • http://yara.readthedocs.io/en/v3.6.0/ • Правила добавляются через меню "Add Yara rules” • Либо "%LOCALAPPDATA%\Approof\YaraRules\" Правила Yara для Approof (1)
  3. Заголовок •Описание уязвимости •http://cve.mitre.org/, http://vuldb.com, https://vulners.com/, … •Исходный код разных

    версий пакетов •https://api.metacpan.org/source •https://registry.npmjs.org/ •https://pypi.python.org/pypi/ •… Автоматизация (1) (Метаинформация)
  4. Заголовок •Имя пакета •package HTML::Scrubber; •"name": "dns-sync" •__title__ = ”requests"

    •Версия пакета •our $VERSION = '0.10'; •"version": "0.1.0" •__version__ = "1.0.0" Автоматизация (2) (Паттерны в исходных кодах)
  5. Заголовок • Perl • Нет проблем, всё шикарно • Python

    • setup.py не устанавливается • __init.py__ может ничего не содержать • __version__, __title__, __build__, __author__ ещё надо найти • Модуль может не содержать идентификаторов версий • Модуль может не содержать имя модуля в явном виде в файлах • Pyc, Pyo файлы • JavaScript • Когда есть package.json всё шикарно • … Проблемы при автоматизации
  6. Заголовок •Сопоставление по пути файла • Python (__init__.py и остальные

    файлы) • setup.py не устанавливается • Файлы пакета могут не содержать идентификатора имени пакета • JavaScript (package.json) •Сопоставления по нескольким файлам • Идентификаторы пакета и версий находятся в разных файлах Каких возможностей недостаёт?