Разыскиваются инструменты статического анализа кода на разных языках программирования, предназначенные для поиска уязвимостей путём анализа потоков данных, в особенности для веб-приложений.

Для понятности приведу пример одного такого известного мне инструмента – Pixy.

Вкратце, суть работы таких инструментов в том, что инструмент сканирует исходный код и пытается строить графы потоков данных. И затем по этому графу прослеживается путь данных, которые поступают извне программы – от пользователя, из базы данных, от какого-нибудь внешнего плагина и т.п. Если такие данные без проверок и преобразований доходят до SQL-запроса – имеем уязвимость типа SQL injection. Если они добираются до вывода в HTML-код – извольте получить XSS.

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

Инструмент Pixy работает с языком PHP, и неплохо работает, но для полноты картины хочу найти аналогичные инструменты для других языков – Perl, Python, Ruby, Java, .Net или хотя бы понять, есть ли такие, сделал ли уже кто-нибудь или ниша пока открыта.

Инструменты для “обычного” статического анализа, которые анализируют только поток управления, не предлагать, я просмотрел большинство из них, они неплохо справляются с поиском низкоуровневых проблем типа неинициализированных переменных или дедлоков. А хочется найти инструменты, работающие на более высоком уровне абстракции. Именно поэтому меня интересуют именно те, которые умеют работать с потоками данных.

Кросспост с личного блога