2012-02-24 2 views
0

몇 가지 매우 큰 프로젝트에서 Fortify (2.6.5)를 실행하고 있지만 실제로 중요한 몇 가지 주요 문제를 표시하지 못하고 있습니다. Fortify가 'password'와 같은 변수에 대해 패턴 매칭을 수행하여 데이터 흐름 분석을 수행하는 것처럼 보입니다. 이는 위대하며, 디버거에서 로거에 기록하는 등 민감한 데이터로 개인 정보 침해가 발생하지 않도록합니다.Fortify 360 - '비밀번호'별칭 추가 중?

이것은 모두 훌륭하지만, '신임장'과 같은 다른 변수 이름을 통해 암호가 시스템에 전달되는 경우와 동일한 수준의 엄격한 취급이 필요한 기타 기밀 정보가있는 경우가 있습니다. Fortify는 문자열 'password'가 포함 된 변수를 처리하므로!

이러한 키워드 목록을 추가/구성하여 Fortify가 '암호'처럼 작동하도록하는 쉬운 방법이 있습니까?

답변

1

"쉬운"은 사용자 정의 규칙에 따라 사용자의 편안함에 따라 다릅니다. CharacterizationRule을 사용하여 "credential"이라는 변수에 + PRIVATE taint 플래그 (개인 정보 보호 위반 규칙과 관련된 오염)를 추가 할 수 있습니다.

  VariableAccess va: va.variable.name matches "(?i).*credential.*" and 
           not va in [AssignmentStatement: lhs.location is va] 
           and 
           (va.variable.type.name == "java.lang.String" or 
           va.variable.type.name == "java.lang.StringBuffer" or 
           va.variable.type.name matches "byte.*" or 
           va.variable.type.name matches "char.*") 
+0

고마워! Fortify가 패스워드와 패스워드를 식별하는 방법이 얼마나 단순한지를 고려하면 모든 코드를 통과하고 모든 곳에서 Fortify 주석을 추가 할 필요없이 간단하고 쉬운 솔루션 일 것입니다. 해야 할 것. 나는 그것을 줄 것이다 ... –

0

AWB를 정의 규칙 마법사를 사용하여이 작업을 수행 할 수있는 쉬운 방법이있다 :

다음은 시작 당신이 얻을하는 데 필요한 구조 경기 규칙의 작은 예를 조각입니다. 규칙 유형 목록에서 "특성화 규칙"을 선택한 다음 "개인 원본의 특성화"를 선택하십시오.

변수 "credential"은 (는) 비밀 또는 개인 데이터의 출처가 될 것입니다. 마법사를 따라하면 지정한 정규식이있는 규칙이 만들어집니다. 표현식은 대소 문자를 구별하며 자바 정규 표현식을 따른다. http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

+0

이 기능은 버전 2.6.5에서 사용하지 못할 수있다. 현재 버전 3.40에서 사용 가능합니다. –