0

私は短期間の契約ギグを行っており、レガシーコードのいくつかの脆弱性にパッチを当てようとしています。私が取り組んでいるアプリケーションは、Classic ASP(VBScript)と.Net 2.0(C#)の組み合わせです。彼らが購入したツールの1つは、Fortify360です。

アプリケーションの現在のクラシックASPページは次のとおりです。

<%@ Language=VBScript %>
<%
Dim var

var = Request.QueryString("var")
' do stuff
Response.Redirect "nextpage.asp?var=" & var
%>

私は知っています、私は知っています、短くて非常に危険です。

そこで、いくつかの(en / de)コーダーと妥当性確認/妥当性確認ルーチンを作成しました。

<%@ Language=VBScript %>
<%
Dim var

var = Decode(Request.QueryString("var"))
' do stuff
if isValid(var) then 
    Response.Redirect "nextpage.asp?var=" & Encode(var)
else
   'throw error page
end if
%> 

それでも、Fortifyは、これをヘッダー操作に対して脆弱であるとフラグを立てます。Fortifyはどのように、または正確に何を探していますか?

Fortifyが特定のキーワードを探していると思う理由は、.Net側では、Microsoft AntiXssアセンブリを含めて、GetSafeHtmlFragmentandUrlEncodeやFortifyなどの関数を呼び出すことができるからです。

何かアドバイス?

4

3 に答える 3

2

ジャレット R は正しいです。ルール ビルダーを使用して Dataflow Cleanse ルールを作成する必要があります。関数名を小文字、言語を「vb」として指定します。

ルールは次のようになります。

        <DataflowCleanseRule formatVersion="3.10" language="vb">
            <RuleID>12345-67890-BABE-CAFE</RuleID>
            <TaintFlags>-XSS,+VALIDATED_CROSS_SITE_SCRIPTING</TaintFlags>
            <FunctionIdentifier>
                <NamespaceName>
                    <Pattern/>
                </NamespaceName>
                <ClassName>
                    <Pattern/>
                </ClassName>
                <FunctionName>
                    <Pattern CaseInsensitive="true">(?i)decode</Pattern>
                </FunctionName>
                <ApplyTo implements="true" overrides="true" extends="true"/>
            </FunctionIdentifier>
            <OutArguments>return</OutArguments>
        </DataflowCleanseRule>
于 2010-07-22T23:43:28.730 に答える
1

独自のエンコード メソッド (または Fortify が認識しないメソッド) の場合、カスタム ルールを記述して、ダーティ フィールド (この場合は var) が Encode メソッドによって実行されるとクリーンであることを伝える必要があります。

于 2009-11-10T20:52:31.020 に答える
0

XDR (クロスサイトリダイレクト) の可能性と HTTP 応答分割の可能性については満足していません。Fortify はおそらく、エンコーディング ルーチンが何を行っているかを認識していないため、フラグを立てます (ユーザーが制御する変数がリダイレクトで使用されます)。ところで、Cat.Net は同じことを行います。そして、私はあなたが正しいと思います AntiXSS はそれを幸せにします。

于 2009-10-13T00:28:00.993 に答える