2009-10-12 3 views
0

저는 단기 계약 계약을 맺고 기존 코드의 일부 취약점을 패치하려고합니다. 내가하고있는 응용 프로그램은 Classic ASP (VBScript)와 .Net 2.0 (C#)의 조합입니다. 그들이 구입 한 도구 중 하나는 여기에누구나 Classic ASP에서 Fortify 360을 사용합니까? 헤더 조작 취약점 이야기

포티 360 인 응용 프로그램에서 현재 고전적인 ASP 페이지입니다 :

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

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

내가 알고, 내가 알고, 짧고 매우 위험합니다.

<%@ 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 
%> 

그리고 아직도 조작을 헤더에 깃발이 취약한를 요새화 :

그래서 우리는 몇 가지 (EN/DE) 코더 및 검증/검증 루틴을 썼다. 요새화가 정확히 어떻게 또는 무엇을 찾고 있습니까?

Fortify가 특정 키워드를 찾고 있다고 생각하는 이유는 .Net 측에서 Microsoft AntiXss 어셈블리를 포함하고 GetSafeHtmlFragmentUrlEncode과 같은 함수를 호출하고 Fortify가 만족 스럽다는 것입니다.

어떤 조언이 필요합니까?

답변

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> 
+0

참고 : 포티 SCA 2.6.5로, 클래식 ASP에 대한 사용자 정의 규칙이 지원되지 않습니다

규칙은 다음과 같이 될 것이다. 그럼에도 불구하고, 이것이 작동하도록하는 방법입니다. –

0

XDR (사이트 간 리디렉션) 및 잠재적으로 HTTP 응답 분할의 가능성에 대해 만족하지 않습니다. Fortify는 인코딩 루틴이 무엇을하는지 모르기 때문에 사용자가 지정한 변수가 리디렉션에 사용됩니다. btw, Cat.Net도 똑같습니다. 그리고 당신이 맞다고 생각합니다. AntiXSS가 행복하게 해줄 것입니다.

1

encode 메소드가 사용자 자신이거나 (또는 ​​Fortify가 인식하지 못하는) 사용자 정의 규칙 인 경우 더티 필드 (이 경우 var)가 실행 된 후에는 깨끗하다고 ​​알리는 사용자 정의 규칙을 작성해야합니다 Encode 메서드.

관련 문제