Как подавить ложные срабатывания в Fortify

У меня есть два вопроса относительно Fortify.

1. Допустим, у меня есть приложение Windows Forms, которое запрашивает имя пользователя и пароль, а имя текстового поля для пароля — texboxPassword. Итак, в файле дизайнера у вас есть следующее, созданное дизайнером.

// 
// texboxPassword
// 
this.texboxPassword.Location = new System.Drawing.Point(16, 163);
this.texboxPassword.Name = "texboxPassword";
this.texboxPassword.Size = new System.Drawing.Size(200, 73);
this.texboxPassword.TabIndex = 3;

Fortify помечает это как пароль в комментариях. Как я могу подавить это, создав собственное правило? Я не хочу скрывать всю проблему, потому что я все еще хотел бы улавливать определенные шаблоны (например, пароль, за которым следует = или : в комментариях), но общий поиск, когда любая строка, содержащая пароль, помечается, создает так много ложных срабатываний. Я изучил создание структурного правила, но не смог понять, как удалить связанный тег (где я могу найти тег для пароля в комментарии?)

2 - Допустим, у меня есть настраиваемый элемент управления пользовательского интерфейса. Этот контрольный html кодирует все, и в моем контексте этого достаточно, чтобы избежать XSS. Излишне говорить, что Fortify помечает это. Как я могу подавить XSS, когда у меня есть определенный тип элемента управления в моем пользовательском интерфейсе, и все его методы безопасны для XSS (они дезинфицируют) в моем контексте? Я попробовал DataflowCleanseRule (с меткой только для проверки концепции) и хотел пометить get_Text() и set_Text() как функции дезинфицирующего средства, но это не имело значения, и Fortify по-прежнему помечал его для XSS.

<DataflowCleanseRule formatVersion="3.16" language="dotnet">
                <RuleID>0D495522-BA81-440E-B191-48A67D9092BE</RuleID>
                <TaintFlags>+VALIDATED_CROSS_SITE_SCRIPTING_REFLECTED,+VALIDATED_CROSS_SITE_SCRIPTING_PERSISTENT,+VALIDATED_CROSS_SITE_SCRIPTING_DOM,+VALIDATED_CROSS_SITE_SCRIPTING_POOR_VALIDATION</TaintFlags>
                <FunctionIdentifier>
                    <NamespaceName>
                        <Pattern>System.Web.UI.WebControls</Pattern>
                    </NamespaceName>
                    <ClassName>
                        <Pattern>Label</Pattern>
                    </ClassName>
                    <FunctionName>
                        <Pattern>_Text</Pattern>
                    </FunctionName>
                    <ApplyTo implements="true" overrides="true" extends="true"/>
                </FunctionIdentifier>
                <OutArguments>return</OutArguments>
            </DataflowCleanseRule>

Заранее спасибо за вашу помощь


person freud    schedule 04.10.2013    source источник


Ответы (2)


  1. Это анализируется с использованием регулярных выражений. Если вы не думаете, что можете создать регулярное выражение, которое может правильно анализировать человеческий язык, я бы оставил его в покое и просто проверил его как не проблему.

  2. Тег Pattern использует регулярное выражение Java в теле, поэтому его следует использовать, как предложил пользователь 2867433. Однако вы заявили

Этот контрольный html кодирует все, и в моем контексте этого достаточно, чтобы избежать XSS.

Если вы собираетесь использовать пользовательское правило, это должно предполагать, что оно будет работать в КАЖДОМ контексте, например, в будущем кто-то напишет фрагмент кода, который использует get_Text, а затем поместит его непосредственно в фрагмент JavaScript, кодировка html будет НИЧЕГО не делайте, чтобы остановить проблему XSS здесь. Я бы посоветовал еще раз проверить это как не проблему или ложное срабатывание из-за используемой проверки и объяснить, почему это достаточно хорошо в этом контексте.

person lavamunky    schedule 28.11.2013
comment
Спасибо, в итоге я оставил их в покое и проверял как не выдает - person freud; 28.11.2013
comment
Всем привет! Что, если не проблема станет слишком много (огромная кодовая база и каждый раз, когда мы развертываем, это действительно пустая трата времени, чтобы снова повторить все старое не проблема)? Есть ли способ сделать элементы, помеченные как не являющиеся проблемой, навсегда? - person Pitto; 07.01.2020

Внутри «Шаблона» вы можете использовать Java-Regex. Так что это должно работать, если вы используете [gs]et_Text

person user2867433    schedule 10.10.2013
comment
Спасибо за ваш вклад - person freud; 28.11.2013