2022년 1월 11일

SpotBugs Maven Plugin 을 이용한 Maven 프로젝트 정적 보안 취약점 분석

FindSecurityBugs

자바 웹 어플리케이션과 안드로이드 애플리케이션에 대한 보안 감사를 지원하는 StopBugs 플러그인이다. Command Injection, XPath Injection, SQL/HQL Injection, XXE 및 Cryptography 취약점을 포함하여 128개의 다른 취약점 유형을 탐지할 수 있다.


Spotbugs 는 AVA 언어를 대상으로 하지만 Groovy, Scala 및 Kotlin 에서도 작동하는 정적 분석도구이다.

Development 환경

HW : MacBook Pro 2019

  • 2.3Ghz 8Core Intel Corei9
  • 16GB 2667 Mhz DDR4
  • SSD 1TB
  • OS : macOS Monterey 12.0.1

SW :

  • JDK 14.0.2
  • Visual Studio Code 1.63.2
  • Maven 3.8.4

Maven

적용하려는 Maven 프로젝트  pom.xml 파일을 아래와 같이 ① SpotBugs Maven Plugin 을 설정을 추가한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
     
     
    <build>
        <plugins>
            <plugin>
                <groupid>org.apache.maven.plugins</groupid>
                <artifactid>maven-compiler-plugin</artifactid>
                <version>2.3.2</version>
                <configuration>
                    <source>${javac.src.version}
                    <target>${javac.target.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <!-- Integrate Find Security Bugs into spotbugs-maven-plugin -->
            <plugin>
                <groupid>com.github.spotbugs</groupid>
                <artifactid>spotbugs-maven-plugin</artifactid>
                <version>4.5.0.0</version>
                <configuration>
                    <includefilterfile>spotbugs-security-include.xml</includefilterfile>
                    <excludefilterfile>spotbugs-security-exclude.xml</excludefilterfile>
                    <plugins>
                        <plugin>
                            <groupid>com.h3xstream.findsecbugs</groupid>
                            <artifactid>findsecbugs-plugin</artifactid>
                            <version>1.10.1</version>
                        </plugin>
                    </plugins>
                </configuration>
            </plugin>
            <!-- ./Integrate Find Security Bugs into spotbugs-maven-plugin -->
        </plugins>
    </build>
</project>

다음으로 아래 ② 필터 파일 추가한다. ( 세부 설정은 매뉴얼 을 참고. 따로 설정하여 테스트 하지 않음)
  • spotbugs-security-include.xml
  • spotbugs-security-exclude.xml

spotbugs-security-exclude.xml
1
2
3
4
<!--xml version="1.0" encoding="UTF-8"?-->
<findbugsfilter>
<!--  in -->
</findbugsfilter>

spotbugs-security-include.xml
1
2
3
4
5
6
<!--xml version="1.0" encoding="UTF-8"?-->
<findbugsfilter>
    <match>
        <bug category="SECURITY">
    </bug></match>
</findbugsfilter>

취약점 검사 및 결과 확인

이제 다음 명령을 사용하여 취약점을 검사하고 결과를 보도록 하자.
1
2
mvn compile
mvn spotbugs:spotbugs
spotbugs:spotbugs 는 컴파일된 코드(target/classes)를 요구하기 때문에 반듯이 컴파일 이후에 실행해야한다.


이메 마지막으로 분석 결과를 확인해보자. 결과 확인인 아래와 같은 명령을 실행하여 GUI 도구를 통하여 확인할 수 있다.
1
mvn spotbugs:gui

GUI 도구는 검사된 보안  취약점 사항에 대한 결과를 아래와 같이 보여 준다. 영어로 되어 있지만 보안에 관한 기본적인 이해가 있다면 어렵지는 않다.



참고자료


댓글 없음:

댓글 쓰기