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