본문 바로가기

프로그래밍/Java

행안부 개발보안 가이드에서 누락된 SpotBugs Detector 정리

이번에 참여하는 프로젝트에서 SpotBugs와 FindSecurityBugs를 이용하는 보안탐지 작업을 진행하게 되었다. 그 과정에서 FindSecurityBugs에서는 탐지못하지만 SpotBugs 에서는 탐지할수 있는 탐지 룰(Detector)들이 몇몇 있는 것이 확인되었다. 탐지 룰들의 경우 대부분은 FindSecurityBugs에서 탐지 가능했으며 그중 일부는 SpotBugs 에서도 같이 탐지가 가능한 것들이었다. 그러나 개중 몇몇은 SpotBugs에서만 탐지 가능한 것들이 있었다. 이것들에 대한 정리가 별도로 되어 있질 않아서 이 부분만 정리해서 글을 작성했다. 참고로 이 글은 소프트웨어 개발보안 가이드(2017.1월).pdf 문서를 보고 작성한 것임을 알려둔다.

 

행안부 SW 보안약점 관련 Detector 비고
정수형 오버플로우 FindPuzzlers 이 Dector는 정수형 오버플로우 뿐만 아니라 기타 다른 보안약점들도 같이 검사하기 때문에 검사 결과로 나온것들중 정수형 오버플로우 항목에 해당되지 않는 것들도 나올 수 있다
메모리 버퍼 오버플로우 InfiniteRecursiveLoop  
경쟁조건: 검사시점과 사용시점(TOCTOU) SynchronizeOnClassLiteralNotGetClass  
종료되지 않는 반복문 또는 재귀함수 InfiniteRecursiveLoop  
부적절한 예외처리 RuntimeExceptionCapture  
널(Null) 포인터 역참조 FindNullDeref, FindUninitializedGet  
초기화되지 않은 변수 사용 FindUninitializedGet  
Public 메소드로부터 반환된 private 배열 FindReturnRef  
private 배열에 public 데이터 할당 FindReturnRef