Fortify 360 - Добавление псевдонимов "пароль"?

Я запускаю Fortify (2.6.5) для нескольких очень больших проектов, но он не может пометить несколько ключевых проблем, которые он действительно должен. Кажется, будто Fortify выполняет какое-то сопоставление с образцом для переменных с именем что-то вроде "пароля", чтобы затем выполнить анализ потока данных. Это замечательно и помогает гарантировать, что нарушения конфиденциальности не происходят с такими конфиденциальными данными, такими как запись их в регистратор (при отладке).

Это все хорошо, но у нас есть случаи, когда пароли передаются в систему через другие имена переменных, такие как "учетные данные", а также другую конфиденциальную информацию, которая должна обрабатываться с тем же уровнем строгости в обработке, что и Fortify. делает с переменными, содержащими строку "пароль"!

Есть ли какой-нибудь простой способ добавить / настроить такой список ключевых слов, чтобы Fortify действовал на них так же, как и на "пароль"?

2 ответа

Решение

"Легко" зависит от вашего уровня комфорта с пользовательскими правилами. Вы можете определенно добавить флаг +PRIVATE taint (вред, связанный с правилами нарушения конфиденциальности) к переменным с именем "credential" с помощью CharacterizationRule.

Вот небольшой примерный пример правила структурного соответствия, с которым вам нужно начать:

            VariableAccess va: va.variable.name matches "(?i).*credential.*" and
                               not va in [AssignmentStatement: lhs.location is va]
                               and
                               ( va.variable.type.name == "java.lang.String" or
                                 va.variable.type.name == "java.lang.StringBuffer" or
                                 va.variable.type.name matches "byte.*" or
                                 va.variable.type.name matches "char.*")

Существует более простой способ сделать это с помощью мастера пользовательских правил AWB. В списке типов правил выберите "Правило характеристики", а затем "Характеристика для частного источника".

Ваша переменная "учетные данные" будет источником секретных или личных данных. Просто следуйте указаниям мастера, и он создает правило с указанным вами регулярным выражением. Выражение чувствительно к регистру и соответствует диалекту регулярных выражений Java: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

Другие вопросы по тегам