2010-06-09 3 views
2

보안 정책을 조사하고 적용하는 데 필요한 Java 소스 코드가 있습니다. CWE 적용] 나는 AST를 사용하고 나무를 통해 여행을하는 데 처음으로 몇 가지 아이디어를 가지고있다. 기타 정규 표현식 사용도 포함됩니다. AST 나 regex 이외의 다른 옵션이 있습니까?자바 소스 코드를 묻습니다.

답변

2

AST는 정규 표현식보다 훨씬 더 좋은 선택이다.

수많은 Java 파서를 사용할 수 있습니다. ANTLR's java grammar이 하나의 예입니다.

당신은 또한 javac compiler from OpenJDK.

의 소스 코드를 적용 할 수 있습니다 당신은 많은 작업없이 많은 검사를 수행 할 수 있도록 할 PMD 지원 사용자 정의 규칙 같은 일부 정적 분석 도구를 제공합니다.

+0

감사합니다. 나는 ANTLR을 잊었다. PMD를 확장하여 내 정책을 포함시키려는 생각 이었지만 PMD를 배우는 것을 주저했습니다. 어쨌든이 모든 것을 검사 할 것입니다. 덕분에 – VibeofBoston

0

많은 정적 소스 코드 분석 (SCA) 도구는 코드 어쩌면 취약한를 감지하는 정규 표현식의 컬렉션을 사용합니다. SCA tools for Java이 많으며 가장 좋은 오픈 소스를 모릅니다. 나는 Coverity이 내가 사용했던 최고의 Java SCA 도구를 만든다고 말할 수 있습니다.이 도구는 경쟁 조건도 감지 할 수 있기 때문에 정규 표현식보다 훨씬 더 고급입니다. 내가 말할 수있는 것

이 접근 방식은 잘못된 반응과 거짓 네거티브를 많이 생산하는 것입니다 것입니다. CWE 시스템은 다양한 취약점으로 인해 많은 수의 정보를 포함하고 있으며 이들 모두를 포괄하는 것은 완전하고 완전히 불가능합니다.

+0

나는 동의한다. CWE를 모두 구현하려고하면 거짓 pos/negs에 끝날 수도 있습니다 ..하지만 나는 여전히 그 ok 때문에 그 중 하나가 없기 때문에 추측합니다. 나는 coviserty를 들여다 보겠습니다. – VibeofBoston

+0

@VibeofBoston SQL 주입과 같은 cve의 가장 단순한 방법으로 false pos/neg를 얻으려고합니다. 아무 공구도 (Coverity조차) 모든 cwe의 5 %조차 커버하지 않습니다. 나는 어떤 도구도 그 이상을 얻을 수 있다고 생각하지 않는다. 일부 vuls 들어 수동 코드 분석을 할 수 있습니다. – rook

+0

실제로 소스 코드를 가져 와서 CWE를 구현하려고하면 올바른 결과를 얻지 못할 것입니다. 하지만 누군가가 찾고자하는 것과 같은 메타 정보를 제공한다면, 패턴은 구현하기가 더 쉽습니다. – VibeofBoston

0

은 당신이 요구하는 무엇의 일부 또는 전부를 수행 기존의 도구가 있습니다. 일부는 소스 코드 수준에서, 일부는 바이트 코드를 구문 분석하여. CheckStyle - - FindBugs -

는 에서 찾아 보게 PMD

이들 모두는, 어떤 식 으로든에서 확장됩니다 당신은 아마 당신이 많은뿐만 아니라 검사 할 것을 확인하기 위해 그들을 얻을 수 있습니다 표준 검사는 당신 하나가 당신에게 관심의 취약성에 초점을 맞춘 기존의 정적 분석 도구를 얻으려면

+0

사실 저는 이미 checkstyle, findbugs, pmd를 알고 있습니다. 제가 의도 한 것은 조금 더 복잡합니다. (그러나이 도구들에 의해 매우 잘 지원 될 수도 있습니다.) CWE의 보안 정책을 적용 할 계획입니다. – VibeofBoston

0

을 가지고, 또는 사용자 정의 분석을 구축하기위한 강력한 토대와 도구를 싶어.

그냥하는 AST를 구문 분석하는 분석을하고 당신에게 많은 지원을하지 않습니다. 발생하는 기호의 의미 (예 : 범위, 기호 표, 유형 확인)를 알고 있어야하며 시스템을 구성하는 소프트웨어 요소에서 정보가 어떻게 흐르고 있는지 알고 있어야합니다. ANTLR과 같은 도구는 이것을 제공하지 않습니다. 그들은 파서 파서입니다.

Java에서이 정보를 사용할 수있는 도구 기초는 DMS Software Reengineering ToolkitJava Front End입니다.