본문 바로가기

보안/시큐어코딩

FindBugs와 FindSecurityBugs를 이용한 정적분석

FindBugs FindSecurityBugs를 이용한 정적분석


FindBugs 설치 URL  http://findbugs.cs.umd.edu/eclipse


FindSecurityBugs 다운로드 URL  

http://h3xstream.github.io/find-sec-bugs/download.htm


 findsecbugs-plugin-1.5.0.jar




FindBugs는 자바 바이트 코드(byte code)를 분석하여 버그 패턴을 발견하는 정적분석 공개소프트웨어이다(GNU LGPL 라이센스를 적용). 미국의 Maryland 대학에서 2006년에 개발하였으며 Java 프로그램에서 발생 가능한 100여개의 잠재적인 에러에 대해 4개등급( scariest, scary, troubling, concern)으로 구분하여 탐지하고, 그 결과를 XML 로 저장할 수 있도록 지원한다.

 

Linux, Windows, MacOSX 운영체제를 지원하며, GUI기반의 단독 실행(Stand alone) 응용프로그램 방식과 Eclipse, NetBeans, IntelliJ IDEA, Gradle, Hudson and Jenkins와 같은 IDE(통합개발환경)의 플러그인(Plug-in) 방식을 지원한다. FindBugs 설치를 위해서는 512MB 이상의 메모리와 Java 2 Standard Edition, 1.5 버전 이상이 요구되며, 공식 웹사이트(http://findbugs.sourceforge. net)에서 다운로드 받을 수 있다.

 

Bad practice, Correctness, Dodgy code, Experimental, Internationalization, Malicious code vulnerability, Multithreaded correctness, Performance, Security 등 9개 이상의 카테고리와 400개가 넘는 진단 규칙을 제공하며, 룰셋(ruleset)의 커스터마이징을 통해 각 기업의 소프트웨어를 진단하기위한 최적화를 수행할 수 있다.


  Find Bugs 3.0.1에서 제공하는 탐지유형


    번호

탐지 유형

사례   설명

 

1

 

Bad practice

 

클래스 명명규칙, null 처리 실수  개발자의 나쁜 습관을 탐지

 

2

 

Correctness

 

잘못된 상수, 무의미한 메소드 호출  문제의 소지가 있는 코드를 탐지

 

3

 

Dodgy code

 

int 곱셈결과를 long으로 변환하는  부정확하거나 오류를 발생시킬  있는 코드를 탐지

 

4

 

Experimental

 

메소드에서 생성된 stream이나 리소스가 해제하지 못한 코드를 탐지

 

5

 

Internationalization

 

Default 인코딩을 지정하지 않은 경우  지역특성을 고려하지 않은 코드 탐지

 

6

 

Malicious  codevulnerability

 

보안 코드에 취약한 가변적인 배열이나 콜렉션, Hashtable 탐지

 

       7

 

Multithreaded  correctness

 

멀티쓰레드에 안전하지 않은 객체 사용 등을 탐지

 

8

 

Performance

 

미사용 필드, 비효율적 객체생성  성능에 영향을 주는 코드를 탐지

 

9

 

Security

 

CSS, DB 패스워드 누락  보안에 취약한 코드를 탐지



 




FindSecurityBugs는 자바 웹 어플리케이션에 대한 보안 감사를 지원하는 FindBugs 의 플러그인으로, Philippe Arteau에 의해 만들어졌다.


Spring-MVC, Struts, Tapestry 등 다양한 SW 개발 프레임워크와 Eclipse, IntelliJ, Android Studio, NetBeans등 통합개발환경(IDE)도구, Jenkins와 SonarQube와 같은 CI(Continuous integration) 도구에서 활용가능하다.


200개 이상의 시그니처를 활용하여 OWASP TOP 10과 CWE를 커버하는 78개의 버그패턴(Bug Pattern)을 탐지할 수 있으며, 공식 홈페이지(http://find-sec-bugs.github.io)를 통해 사용방법과 소프트웨어를 다운로드 받을 수 있다.




FindSecurityBugs 탐지 유형


번호

탐지유형

사례  설명

 

1

 

부적절한 입력 탐지

 

Untrusted Servlet parameter, session Cookie, Query String 

 

2

 

SQL Injection 탐지

 

Hibernate, JDO, JPA, Spring JDBC,LDAP Injection 

 

3

 

XSS

 

JSP, Servlet, JavaScript(Android) XSS를 탐지

 

4

 

취약한 암호화 알고리즘

 

SHA-1, MD2/MD4/MD5 또는 NullCipher  취약한 암호화 함수를 탐지

 

5

 

취약한 URL Redirection

 

유효하지 않은 URL Redirection 취약점 탐지

 

6

 

기타

보안 플래그가 없는 쿠키, Regex DOS 취약점, 신뢰할  없는 Context-type 또는 헤더