2009-10-12 21 views
0

我正在進行短期承包工作,試圖修補其遺留代碼中的一些漏洞。我正在處理的應用程序是經典ASP(VBScript)和.Net 2.0(C#)的組合。其中一個他們所購買的工具是Fortify的360有沒有人使用Fortify 360與經典ASP?標題操作漏洞報道

這裏是應用程序中的當前傳統的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程序集和調用函數,如GetSafeHtmlFragmentUrlEncode,Fortify很高興。

有什麼建議嗎?

回答

2

Jarret R是對的;您將需要使用規則構建器來創建Dataflow清理規則;指定函數名稱爲小寫字母,語言爲「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> 
+0

注:由於Fortify的SCA 2.6.5的,傳統的ASP自定義規則不被支持。不過,這是你如何才能使它工作。 – 2011-01-01 12:48:07

0

它對XDR(跨站點重定向)和潛在的HTTP響應分裂的潛力感到不高興。 Fortify可能不知道你的編碼例程會做什麼,因此它會標記它(用戶控制變量用於重定向)。 順便說一句,Cat.Net做同樣的事情。 我認爲你是正確的AntiXSS將使它感到高興。

1

如果編碼方法是你自己的(或者Fortify不能識別的),你必須編寫一個自定義規則來告訴它,髒字段(在這種情況下,var)一旦運行就是乾淨的編碼方法。