SpotBugs
더 많은 작업
SpotBugs는 컴파일된 자바 바이트코드를 정적 분석해 버그 패턴과 보안 약점을 찾아 주는 공개 소프트웨어 도구로, 개발이 멈춘 FindBugs 를 이어받은 후속 프로젝트이다.
SpotBugs 는 프로그램을 실행하지 않고 클래스 파일(바이트코드)을 읽어 문제가 될 만한 코드 모양을 찾는 정적 분석 도구이다. 소스코드가 아니라 바이트코드를 보므로 컴파일만 되면 분석할 수 있고, 어떤 자바 버전으로 컴파일한 프로그램이든 다룰 수 있다. 공식 사이트는 SpotBugs 가 정적 분석으로 자바 코드의 버그를 찾는 LGPL 자유 소프트웨어이며, 버려진 FindBugs 를 포크해 그 자리에서 이어 가는 프로젝트이고, 400개가 넘는 버그 패턴을 검사한다고 소개한다. Ant, Maven, Gradle, Eclipse, IntelliJ IDEA, SonarQube 와 함께 쓸 수 있다.[1]
기본 검사기는 널 포인터 역참조, 닫지 않은 자원, 잘못된 equals·hashCode 구현, 동기화 오류 같은 코드 품질 결함을 찾는다. 보안 약점은 플러그인 Find Security Bugs(find-sec-bugs)가 맡는다. 이 플러그인의 버그 패턴 목록에는 다음 같은 항목이 있다.[2]
- 크로스사이트 스크립트(XSS) - 서블릿·JSP 에서 검증 없이 출력되는 값
- HTTP 응답 분할(HTTP_RESPONSE_SPLITTING) - 헤더에 들어가는 CR·LF
- 경로 탐사(PATH_TRAVERSAL_IN/OUT) - 파일 경로에 들어가는 외부 입력 → 디렉토리 트래버설
- 하드코드된 비밀번호·키(HARD_CODE_PASSWORD, HARD_CODE_KEY)
- SQL·명령어·LDAP 인젝션, 검증 없는 리다이렉트, 취약한 암호 알고리즘(DES 등), 예측 가능한 난수
이 항목들은 행정안전부·KISA 소프트웨어 개발보안 기준의 구현단계 보안약점과 많이 겹쳐, 공공 정보화사업에서 보안약점 진단의 보조 도구로도 쓰인다 → 시큐어 코딩
| 도구 | 분류 | 무엇을 대상으로 하는가 |
|---|---|---|
| SpotBugs | 정적 분석(SAST) | 자바 바이트코드의 버그·보안 약점 |
| ModSecurity | 웹 방화벽(WAF) | 운영 중인 웹 서버로 들어오는 HTTP 요청을 검사·차단 |
| OpenVAS | 취약점 스캐너 | 네트워크로 접속해 호스트·서비스의 알려진 취약점 점검 |
| OllyDbg | 디버거 | 윈도우 실행 파일을 실행하며 기계어 수준으로 분석 |
정적 분석은 소스나 바이트코드를 읽고, 취약점 스캐너는 실행 중인 시스템을 밖에서 찔러 보며, 웹 방화벽은 운영 중 공격을 막는다는 점이 다르다.
- ↑ 「SpotBugs - Find bugs in Java Programs」, SpotBugs 프로젝트, https://spotbugs.github.io/, 확인일: 2026-11-04.
- ↑ 「Bug Patterns」, Find Security Bugs, https://find-sec-bugs.github.io/bugs.htm, 확인일: 2026-11-04.