2012-02-24 2 views
0

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

Все это хорошо, но у нас есть случаи, когда пароли передаются в систему через другие имена переменных, такие как «учетные данные», а также другую конфиденциальную информацию, которая должна рассматриваться с одинаковым уровнем строгости в как Fortify делает с переменными, содержащими строку «пароль»!

Есть ли простой способ добавить или настроить такой список ключевых слов, чтобы Fortify действовал на них, как на «password»?

ответ

1

«Простой» зависит от вашего уровня комфорта с пользовательскими правилами. Вы можете определенно добавить флаг + PRIVATE taint (taint, связанный с правилами конфиденциальности), в переменные с именем «credential» с CharacterificationRule.

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

  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.*") 
+0

Спасибо! Не совсем простое решение, которое можно было бы надеяться, учитывая, насколько просто сопоставление, по-видимому, связано с тем, как Fortify определяет, что такое пароль, а что нет (без необходимости использовать ВСЕ код и добавлять аннотации Fortify везде), но это будет делать. Я дам ему выстрел ... –

0

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

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

+0

Эта функция может быть недоступна в версии 2.6.5. Он определенно доступен в текущей версии 3.40. –

Смежные вопросы