Процесс сигнатурного анализа кода в нашем проекте PT Application Inspector разбит на следующие этапы:
- парсинг в зависимое от языка представление (abstract syntax tree, AST);
- преобразование AST в независимый от языка унифицированный формат;
- непосредственное сопоставление с шаблонами, описанными на DSL.
О первых двух этапах было рассказано в предыдущих статьях "Теория и практика парсинга исходников с помощью ANTLR и Roslyn" и "Обработка древовидных структур и унифицированное AST". Данная статья посвящена третьему этапу, а именно: различным способам описания шаблонов, разработке специализированного языка (DSL) для их описания, а также примерам шаблонов на этом языке.
Содержание
- Способы описания шаблонов
- Собственный язык описания шаблонов
- Целесообразность
- Синтаксис
- Примеры шаблонов
- Жестко заданный пароль (все языки)
- Слабый генератор случайных чисел (C#, Java)
- Утечка отладочной информации (PHP)
- Небезопасное SSL соединение (Java)
- Пароль в комментарии (все языки)
- SQL-инъекция (C#, Java, PHP)
- Куки без атрибута безопасности (PHP)
- Пустой блок обработки исключения (все языки)
- Небезопасный куки (Java)
- Перехват незакрытого курсора (PL/SQL, T-SQL)
- Чрезмерно расширенные полномочия (PL/SQL, T-SQL)
- Заключение