[Docker/Java] Java 기반 Docker 이미지에서 SQLite 관련 취약점 제거 방법 (CVE-2025-6965)

2025. 8. 15. 02:07·개발 (Development)/Docker

문제 상황

adoptopenjdk/openjdk11:jre 이미지를 기반으로 자바 애플리케이션 Docker 이미지를 빌드하던 중, 보안 스캐너에서 CRITICAL 등급의 SQLite 관련 취약점(CVE)이 지속적으로 발견되었습니다.

보안 점검 도구(Trivy 등)로 스캔한 결과, libsqlite3-0 라이브러리에서 발생하는 취약점이 주기적으로 보고되었고, 빌드 파이프라인이 이를 이유로 차단되는 상황이었습니다.

원인 분석

adoptopenjdk/openjdk11:jre는 Debian/Ubuntu 계열 기반으로 제작되어 있으며, 기본적으로 sqlite3와 libsqlite3-0 패키지를 포함하고 있습니다.

문제는 다음과 같습니다.

  • 해당 이미지는 최신 보안 패치 적용 주기가 느립니다.
  • 저희 애플리케이션에서는 SQLite를 전혀 사용하지 않음에도 불구하고, 불필요하게 포함되어 있었습니다.
  • 이로 인해 사용하지 않는 패키지에서 취약점이 발생하고, 보안 검사에 계속 걸렸습니다.

해결 방법

SQLite를 사용하지 않는 환경이므로, Dockerfile에 불필요한 SQLite 관련 패키지를 제거하는 명령을 추가했습니다.

RUN apt-get -y purge sqlite3 libsqlite3-0 || true \
 && apt-get -y autoremove --purge || true

명령 설명

  • apt-get -y purge sqlite3 libsqlite3-0
    SQLite 실행 파일과 라이브러리를 완전히 삭제합니다.
  • apt-get -y autoremove --purge
    더 이상 사용하지 않는 의존성 패키지도 함께 삭제합니다.
  • || true
    패키지가 없을 경우에도 빌드가 실패하지 않도록 예외 처리합니다.

적용 전/후 비교

적용 전 (취약점 발견)

libsqlite3-0  3.31.1-4ubuntu0.3  CRITICAL
CVE-2025-XXXX ... (설명)

적용 후 (취약점 제거)

No vulnerabilities found

적용 후 효과

  1. SQLite 관련 CRITICAL 취약점이 모두 제거되었습니다.
  2. 사용하지 않는 라이브러리를 삭제해 이미지 크기가 소폭 감소했습니다.
  3. 빌드 파이프라인 보안 검사 통과율이 향상되었습니다.

추가 권장 사항

  • SQLite를 사용하는 경우라면 제거 대신 최신 보안 패치 버전으로 업그레이드해야 합니다.
  • 장기적으로는 Eclipse Temurin이나 Distroless와 같이 보안 패치가 신속히 적용되는 베이스 이미지로 교체하는 것이 좋습니다.
  • CI/CD 파이프라인에 Trivy, Grype 같은 보안 스캐너를 포함시켜 주기적으로 취약점을 점검하는 습관을 들이는 것이 필요합니다.
반응형

'개발 (Development) > Docker' 카테고리의 다른 글

[Docker] Docker 환경에서 yarn 설치 시 인증서 오류 해결  (0) 2025.06.01
[Docker] on-premise 환경에서 Docker Compose의 Build 문제 해결  (0) 2025.06.01
[Docker] Alpine 이미지 SSL 인증 오류 해결 (certificate verify failed)  (0) 2025.06.01
[Docker] Docker 컨테이너 생성과 삭제 이력 추적하는 방법  (0) 2025.04.26
[Docker] Dockerfile에서 chown이 동작하지 않을 때, 의외의 원인과 해결법  (0) 2025.04.19
'개발 (Development)/Docker' 카테고리의 다른 글
  • [Docker] Docker 환경에서 yarn 설치 시 인증서 오류 해결
  • [Docker] on-premise 환경에서 Docker Compose의 Build 문제 해결
  • [Docker] Alpine 이미지 SSL 인증 오류 해결 (certificate verify failed)
  • [Docker] Docker 컨테이너 생성과 삭제 이력 추적하는 방법
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (216)
      • 개발 (Development) (151)
        • Algorithm (1)
        • Angular (1)
        • AWS (4)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (30)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (6)
        • PostgreSQL (37)
        • Python (26)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (10)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (10)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    데이터분석
    timescaledb
    백준알고리즘
    백준
    MyBatis
    JSON
    Linux master
    리눅스 마스터 2급
    java
    springboot
    javascript
    자바
    PostgreSQL
    typescript
    백준자바
    DevOps
    AWS
    Linux
    JPA
    python
    리눅스 마스터 2급 2차
    docker
    백준온라인저지
    ADsP
    deepseek
    Kubernetes
    오답노트
    Kafka
    Vue.js
    pandas
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Docker/Java] Java 기반 Docker 이미지에서 SQLite 관련 취약점 제거 방법 (CVE-2025-6965)
상단으로

티스토리툴바