Check Component Vulnerabilities Using OWASP Dependency-Check

1. 개요

애플리케이션 개발 중에 일반적으로 프로젝트에 일부 서드파티 라이브러리나 프레임워크를 추가해야 합니다. 이러한 서드파티 라이브러리는 개발 노력을 덜어주지만, 그 취약성으로 인해 보안 위험을 초래할 수 있습니다.

이 튜토리얼에서는 애플리케이션에서 알려진 취약성을 식별하는 데 도움이 되는 플러그인을 소개합니다.

2. 의존성 점검

우리가 채택할 플러그인은 OWASP Dependency-Check입니다. 이 플러그인은 응용 프로그램의 의존성을 분석하는 도구로서, 그것을 공통 플랫폼 열거(Common Platform Enumeration, CPE) 식별자 및 공통 취약성 및 노출(Common Vulnerability and Exposure, CVE) 항목과 상관관계하여 알려진 취약성이 있는 의존성을 식별합니다.

CPE는 소프트웨어나 패키지에 대한 구조적 명명 체계이며, CVE는 공개적으로 알려진 취약성과 노출에 대한 참조를 제공합니다.

이 플러그인은 미 국립 표준 기술 연구소(NIST)에서 제공하는 국가 취약성 데이터베이스(NVD) 데이터 피드를 통해 이러한 항목을 자동으로 업데이트합니다. Maven 플러그인 외에도 Gradle과 같은 다른 통합 플러그인도 제공합니다.

3. Maven 설정

이 튜토리얼에서는 애플리케이션과의 Maven 통합을 살펴보겠습니다. 먼저, pom.xml 파일의 plugins 섹션에 Dependency-Check 플러그인을 포함시켜야 합니다:

<plugin>
    <groupId>org.owasp</groupId>
    <artifactId>dependency-check-maven</artifactId>
    <version>11.1.1</version>
    <configuration>
        <failBuildOnCVSS>7</failBuildOnCVSS>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>

이 플러그인을 포함한 후에는 verify 단계에서 호출합니다. 이는 기본적으로 통합되어 있기 때문입니다:

$ mvn verify

또는 다음과 같이 직접 호출할 수 있습니다:

$ mvn dependency-check:check

애플리케이션에 취약성이 있을 경우, Maven은 콘솔을 통해 어떤 패키지가 취약성을 포함하고 있는지를 나타내는 메시지를 보여줄 것입니다. 예를 들어:

[WARNING]

One or more dependencies were identified with known vulnerabilities in dependency-check:

logback-core-1.5.6.jar (pkg:maven/ch.qos.logback/logback-core@1.5.6, cpe:2.3:a:qos:logback:1.5.6:*:*:*:*:*:*:*) : CVE-2024-12798, CVE-2024-12801

또한, 플러그인은 발견된 취약성의 세부 사항을 포함하는 HTML 보고서를 생성합니다. 파일 이름은 dependency-check-report.html이며, 빌드 폴더 아래에서 찾을 수 있습니다:

4. CVSS 점수

보고서로 넘어가서 구성 요소 취약성의 세부 사항을 살펴보겠습니다. 각 취약성은 공통 취약성 점수 체계(Common Vulnerability Scoring System, CVSS) 점수와 연관되어 있습니다:

CVSS는 취약성의 심각성을 측정하는 표준입니다. 점수는 0에서 10까지 범위이며, 높은 점수는 더 심각한 취약성을 나타냅니다.

Maven 플러그인에는 failBuildOnCVSS라는 옵션이 있으며, 이를 구성하여 구성 요소의 CVSS 점수가 임계값을 초과할 경우 빌드가 실패하도록 설정할 수 있습니다. 본 예제에서는 7을 사용하여 현재 의존성 세트가 실패하지 않도록 합니다. 점수가 7 이상일 경우 일반적으로 높은 심각도로 간주됩니다.

이전 보고서에서 본 가장 높은 CVSS 점수는 5.9입니다. 이제 failBuildOnCVSS 옵션을 5.0으로 업데이트하고 플러그인을 다시 실행해 보겠습니다. 그러면 Maven은 이번에 빌드에 실패합니다:

[ERROR] Failed to execute goal org.owasp:dependency-check-maven:11.1.1:check (default-cli) on project dependency-check:
[ERROR]
[ERROR] One or more dependencies were identified with vulnerabilities that have a CVSS score greater than or equal to '5.0': 
[ERROR]
[ERROR] logback-core-1.5.6.jar: CVE-2024-12798(5.900000095367432)
[ERROR]
[ERROR] See the dependency-check report for more details.

이것은 CVSS 점수가 주어진 임계값을 초과할 경우 빌드를 실패하도록 설정하는 것이 우리에게 중요할 수 있습니다. 이렇게 하면 높은 심각성을 가진 취약성이 포함된 의존성을 가진 애플리케이션을 배포하지 않게 됩니다.

5. 결론

서드파티 라이브러리를 통합하는 것은 애플리케이션 개발 속도를 높일 수 있지만, 취약성을 도입할 수 있습니다. OWASP Dependency-Check 플러그인은 CPE 및 CVE 데이터를 기반으로 취약한 의존성을 식별하는 데 도움을 줄 수 있습니다.

우리는 Maven에 이를 통합하여 자동으로 취약한 구성 요소를 찾고, 심각한 CVSS 점수가 있는 의존성이 있으면 빌드를 실패하게 할 수 있습니다.

항상 그렇듯이 전체 예제는 GitHub에서 확인할 수 있습니다.

원본 출처

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다