Jenkins CLI 인자 파서 취약점을 악용한 임의 파일 읽기 및 원격 코드 실행 취약점 (CVE-2024-23897)
실무자 핵심 요약 (Executive Summary)
SECOPS ASSESSMENTJenkins 주 버전 2.441 이하 및 LTS 버전 2.426.2 이하
인증되지 않은 공격자가 Jenkins 컨트롤러 파일 시스템 내의 임의 파일을 읽을 수 있으며, 특정 조건 하에서 원격 코드 실행(RCE)으로 이어질 수 있습니다
Jenkins 주 버전을 2.442 이상으로, LTS 버전을 2.426.3 이상으로 즉시 업그레이드하거나 CLI 액세스를 비활성화하십시오
영향받는 제품 및 버전 범위
권장 패치 및 임시 완화(Workaround) 가이드
패치 및 우회 명령어1. 공식 보안 패치 및 버전 업그레이드 명령어
가장 확실한 해결책은 Jenkins를 최신 안전 버전(주 버전 2.442 이상, LTS 2.426.3 이상)으로 업그레이드하는 것입니다.
Debian/Ubuntu 계열 환경에서의 업그레이드 예시:
# 패키지 리스트 업데이트 및 Jenkins 업그레이드
sudo apt-get update
sudo apt-get --only-upgrade install jenkins
# Jenkins 서비스 재시작 및 상태 확인
sudo systemctl restart jenkins
sudo systemctl status jenkins2. 패치 전 임시 완화(Workaround) 및 접근 제어 설정
즉각적인 업그레이드가 어려운 경우, Jenkins CLI로의 접근을 완전히 차단하여 취약점 노출을 방지해야 합니다. Jenkins 관리 콘솔(Script Console)에서 아래 스크립트를 실행하여 CLI를 비활성화하십시오.
// Jenkins 관리 -> 스크립트 콘솔(Script Console)에서 실행
import jenkins.model.Jenkins
import java.util.logging.Logger
def logger = Logger.getLogger('cli-disable-workaround')
def instance = Jenkins.get()
try {
instance.getDescriptor('jenkins.CLI').getApi().disableCLI()
logger.info('Jenkins CLI has been successfully disabled as a temporary workaround.')
} catch (Exception e) {
logger.severe('Failed to disable CLI: ' + e.getMessage())
}3. 침해 흔적(IoC) 및 로그·버전 점검 스크립트
서버 내 Jenkins CLI 요청 로그에서 '@' 문자가 포함된 비정상적인 요청이 유입되었는지 점검합니다.
# Jenkins 액세스 로그에서 CLI 엔드포인트 및 '@' 문자 사용 흔적 검색
# (로그 경로 및 포맷은 환경에 따라 다를 수 있습니다)
grep -i '/cli' /var/log/jenkins/jenkins.log | grep '@'
# 현재 실행 중인 Jenkins 버전 확인
curl -sI http://localhost:8080 | grep -i 'X-Jenkins'내 GitHub/GitLab 레포지토리에 이 취약한 패키지가 숨어 있는지 30초 만에 스캔하세요
간접 의존성(Transitive Dependency)에 포함된 취약점은 수동 확인이 불가능합니다. Git 연동 한 번으로 취약 버전 탐지부터 호환성을 유지하는 최소 버전 업그레이드 PR까지 자동 생성하세요.
취약점 발생 원리 및 공격 메커니즘
1. 취약점 개요 및 발생 원인 (Root Cause)
본 취약점은 Jenkins CLI(Command Line Interface)의 명령 인자 파서인 args4j 라이브러리의 기본 기능 오설정으로 인해 발생합니다. args4j는 인자 값 중 '@' 문자 뒤에 파일 경로가 오는 경우(예: '@filename'), 해당 파일의 내용을 읽어 인자 값으로 치환하는 확장 기능을 제공합니다. Jenkins는 이 기능을 비활성화하지 않은 채 CLI 명령을 처리하도록 방치하여, 공격자가 컨트롤러 파일 시스템의 임의 파일 내용을 CLI 명령의 인자로 주입할 수 있는 취약점이 존재합니다.
2. 공격 메커니즘 및 익스플로잇 시나리오
인증되지 않은 공격자는 Jenkins CLI 엔드포인트(일반적으로 HTTP 포트 또는 SSH 포트)를 통해 특정 CLI 명령을 전송하면서 '@' 문자를 사용해 민감한 파일 경로(예: '/etc/passwd', 'credentials.xml')를 인자로 전달합니다. Jenkins CLI 파서는 해당 파일의 내용을 읽어 명령의 인자로 확장하려 시도합니다. 이 과정에서 명령 구문 오류가 발생하거나 인자 유효성 검증에 실패하면, Jenkins는 에러 메시지에 해당 파일의 내용을 포함하여 클라이언트에 반환하게 됩니다. 이를 통해 공격자는 인증 없이도 컨트롤러 내부의 기밀 데이터를 탈취할 수 있습니다.
3. 비즈니스 및 인프라 파급 영향
이 취약점은 CVSS 9.8의 치명적인(Critical) 등급으로 분류되며, CISA KEV(Known Exploited Vulnerabilities) 목록에 등재되어 실제 공격에 활발히 악용되고 있습니다. 공격자가 Jenkins 암호화 키, 자격 증명(Credentials) 파일, 소스 코드 또는 세션 토큰을 탈취할 경우, CI/CD 파이프라인 전체를 장악하고 빌드 아티팩트에 악성코드를 주입하는 공급망 공격(Supply Chain Attack)으로 이어질 수 있습니다. 또한, 특정 조건 하에서 암호화 키를 획득한 공격자는 역직렬화 공격 등을 통해 완전한 원격 코드 실행(RCE) 권한을 획득할 수 있습니다.
공식 보안 권고문 및 참조 링크
Jenkins 2.441 and earlier, LTS 2.426.2 and earlier does not disable a feature of its CLI command parser that replaces an '@' character followed by a file path in an argument with the file's contents, allowing unauthenticated attackers to read arbitrary files on the Jenkins controller file system.
자주 묻는 실무 질문 (FAQ — CVE-2024-23897)
FAQQ1. CVE-2024-23897 취약점의 위험도와 실제 악용 가능성은 어느 정도입니까?
CVE-2024-23897의 기본 점수는 CVSS 9.8 (CRITICAL)이며, 향후 30일 내 실제 악용 확률을 나타내는 EPSS 점수는 100.0%입니다. 현재 미국 CISA KEV(실제 악용이 확인된 취약점 카탈로그)에 등재되어 있으므로 최우선 긴급 패치가 필요합니다.
Q2. CVE-2024-23897에 영향을 받는 벤더와 제품은 무엇입니까?
주요 영향 벤더는 jenkins이며, 대상 컴포넌트는 jenkins입니다. 상세 영향 범위: Jenkins 주 버전 2.441 이하, LTS 버전 2.426.2 이하의 모든 설치 환경
Q3. 서버 재기동이나 정규 패치 전 즉시 적용할 수 있는 완화 조치(Workaround)는 무엇입니까?
[권장 조치] Jenkins 주 버전을 2.442 이상으로, LTS 버전을 2.426.3 이상으로 즉시 업그레이드하거나 CLI 액세스를 비활성화하십시오 본문의 패치 및 우회 명령어 섹션과 자가 점검 체크리스트를 참고하여 외부 노출 포트를 차단하거나 WAF 탐지 규칙을 선적용하십시오.
CVE-2024-23897 사내 보안 패치 공지문 · CISO 경영진 보고서 초안 자동 생성
클릭 한 번으로 사내 이메일·노션·결재 문서에 바로 붙여넣을 수 있는 공식 보고서 양식을 생성합니다.
🔗 함께 점검해야 할 동일 벤더·스택 연관 취약점 (jenkins)
동일 카테고리 전체 보기 →GitLab CE/EE 미인증 임의 파일 읽기 취약점 보안 권고 (CVE-2026-85706)
[영향 대상] GitLab CE/EE 18.7 버전부터 19.3.1 버전 사이의 특정 릴리즈 사용자
JFrog Artifactory 경로 이탈 취약점(CVE-2026-66384) 보안 권고: 원격 저장소 Docker 캐시 경로 임의 파일 쓰기
[영향 대상] 특정 원격 저장소(Remote Repository) 설정이 활성화된 JFrog Artifactory 자가 관리형(Self-Managed) 인스턴스
sevenz-rust2 라이브러리 경로 탐색 및 임의 파일 덮어쓰기 취약점 보안 권고 (CVE-2026-61725)
[영향 대상] 0.21.1 미만 버전의 sevenz-rust2 라이브러리를 사용하는 Rust 기반 애플리케이션
GitLab CE/EE 미인증 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-97229)
[영향 대상] GitLab CE/EE 19.2(19.2.8 미만), 19.3(19.3.5 미만), 19.4(19.4.2 미만) 버전
일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독
보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.