2009-10-12 59 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)一旦运行就是干净的编码方法。