Jenkins Stapler 웹 프레임워크 원격 코드 실행(RCE) 취약점 분석 및 대응 가이드 (CVE-2018-1000861)
실무자 핵심 요약 (Executive Summary)
SECOPS ASSESSMENTJenkins 주 버전 2.153 이하 및 LTS 버전 2.138.3 이하에서 사용되는 Stapler 웹 프레임워크.
인증되지 않은 원격 공격자가 특수하게 조작된 URL을 전송하여 대상 Java 객체의 임의 메서드를 호출하고, 최종적으로 시스템 권한으로 원격 코드 실행(RCE)을 수행할 수 있습니다.
Jenkins 주 버전을 2.154 이상으로, LTS 버전을 2.138.4 이상으로 즉시 업그레이드하십시오.
영향받는 제품 및 버전 범위
권장 패치 및 임시 완화(Workaround) 가이드
패치 및 우회 명령어1. 공식 보안 패치 및 버전 업그레이드 명령어
가장 확실한 해결책은 취약점이 해결된 최신 안정 버전으로 Jenkins를 업그레이드하는 것입니다.
# Debian/Ubuntu 계열 Jenkins 업그레이드
sudo apt-get update
sudo apt-get --only-upgrade install jenkins
# RedHat/CentOS 계열 Jenkins 업그레이드
sudo yum update jenkins
# Docker 기반 Jenkins 사용 시 최신 LTS 이미지로 재빌드
docker pull jenkins/jenkins:lts
docker stop jenkins-container
docker run -d --name jenkins-new -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts2. 패치 전 임시 완화(Workaround) 및 접근 제어 설정
즉각적인 패치가 어려운 경우, 리버스 프록시(Nginx)를 사용하여 외부로부터의 비정상적인 URL 요청 패턴을 차단하고 Jenkins 관리 콘솔에 대한 접근을 신뢰할 수 있는 IP 대역으로 제한해야 합니다.
# Nginx 리버스 프록시 설정 예시 (비정상적인 경로 탐색 차단)
server {
listen 80;
server_name jenkins.internal.local;
location / {
# 특정 내부 IP 대역만 허용
allow 10.0.0.0/8;
deny all;
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}3. 침해 흔적(IoC) 및 로그·버전 점검 스크립트
현재 구동 중인 Jenkins의 버전을 확인하고, 액세스 로그에서 Stapler 취약점 악용 시도 패턴을 탐지하는 스크립트입니다.
# Jenkins 실행 버전 확인
curl -sI http://localhost:8080 | grep -i 'X-Jenkins'
# Jenkins 액세스 로그에서 Stapler 악용 의심 패턴(예: descriptorByName, bypass 등) 검색
grep -Ei '(descriptorByName|securityRealm|classLoader)' /var/log/jenkins/jenkins.log내 GitHub/GitLab 레포지토리에 이 취약한 패키지가 숨어 있는지 30초 만에 스캔하세요
간접 의존성(Transitive Dependency)에 포함된 취약점은 수동 확인이 불가능합니다. Git 연동 한 번으로 취약 버전 탐지부터 호환성을 유지하는 최소 버전 업그레이드 PR까지 자동 생성하세요.
취약점 발생 원리 및 공격 메커니즘
1. 취약점 개요 및 발생 원인 (Root Cause)
본 취약점은 Jenkins의 핵심 요청 라우팅 엔진인 Stapler 웹 프레임워크의 MetaClass.java에서 발생합니다. Stapler는 URL 경로를 Java 객체의 메서드 호출로 매핑하는 리플렉션(Reflection) 메커니즘을 사용합니다. 이 과정에서 적절한 접근 제어 및 메서드 필터링 검증이 결여되어, 개발자가 외부 노출을 의도하지 않은 내부 Java 객체의 민감한 메서드들이 특정 URL 구조를 통해 직접 호출될 수 있는 바인딩 취약점이 존재합니다.
2. 공격 메커니즘 및 익스플로잇 시나리오
공격자는 인증을 거치지 않은 상태에서 Jenkins 서버에 특수하게 조작된 HTTP 요청(URL)을 전송합니다. Stapler의 URL 해석기(Dispatcher)는 경로 세그먼트를 순차적으로 분석하며 Java 클래스의 게터(Getter) 및 액션 메서드를 탐색합니다. 이때 공격자는 클래스 로더(ClassLoader)나 시스템 내부 API에 접근할 수 있는 체인을 구성하여, 임의의 Java 객체를 인스턴스화하거나 시스템 명령어를 실행하는 메서드를 강제로 트리거합니다. 이는 전형적인 역직렬화(Deserialization) 및 객체 그래프 내비게이션 취약점(CWE-502)의 변종으로 분류됩니다.
3. 비즈니스 및 인프라 파급 영향
본 취약점은 CVSS 9.8의 치명적(Critical) 등급으로 평가되었으며, CISA KEV(Known Exploited Vulnerabilities) 목록에 등재되어 실제 야생(In-the-wild)에서 적극적으로 악용되고 있음이 확인되었습니다. 공격자가 이 취약점을 성공적으로 악용할 경우, Jenkins 마스터 노드의 운영체제 권한을 완전히 장악할 수 있습니다. 이는 CI/CD 파이프라인 내의 소스 코드, 자격 증명(Credentials), API 토큰 탈취로 이어지며, 공급망 공격(Supply Chain Attack)의 교두보가 될 수 있습니다.
공식 보안 권고문 및 참조 링크
A code execution vulnerability exists in the Stapler web framework used by Jenkins 2.153 and earlier, LTS 2.138.3 and earlier in stapler/core/src/main/java/org/kohsuke/stapler/MetaClass.java that allows attackers to invoke some methods on Java objects by accessing crafted URLs that were not intended to be invoked this way.
자주 묻는 실무 질문 (FAQ — CVE-2018-1000861)
FAQQ1. CVE-2018-1000861 취약점의 위험도와 실제 악용 가능성은 어느 정도입니까?
CVE-2018-1000861의 기본 점수는 CVSS 9.8 (CRITICAL)이며, 향후 30일 내 실제 악용 확률을 나타내는 EPSS 점수는 98.3%입니다. 현재 미국 CISA KEV(실제 악용이 확인된 취약점 카탈로그)에 등재되어 있으므로 최우선 긴급 패치가 필요합니다.
Q2. CVE-2018-1000861에 영향을 받는 벤더와 제품은 무엇입니까?
주요 영향 벤더는 jenkins, stapler이며, 대상 컴포넌트는 jenkins, stapler입니다. 상세 영향 범위: Jenkins 주 버전 2.153 이하, LTS 버전 2.138.3 이하 (Stapler 웹 프레임워크 내장 버전)
Q3. 서버 재기동이나 정규 패치 전 즉시 적용할 수 있는 완화 조치(Workaround)는 무엇입니까?
[권장 조치] Jenkins 주 버전을 2.154 이상으로, LTS 버전을 2.138.4 이상으로 즉시 업그레이드하십시오. 본문의 패치 및 우회 명령어 섹션과 자가 점검 체크리스트를 참고하여 외부 노출 포트를 차단하거나 WAF 탐지 규칙을 선적용하십시오.
CVE-2018-1000861 사내 보안 패치 공지문 · CISO 경영진 보고서 초안 자동 생성
클릭 한 번으로 사내 이메일·노션·결재 문서에 바로 붙여넣을 수 있는 공식 보고서 양식을 생성합니다.
🔗 함께 점검해야 할 동일 벤더·스택 연관 취약점 (jenkins)
동일 카테고리 전체 보기 →Apache MINA 3.0 JavaNativeMessageDecoder 역직렬화 원격 코드 실행(RCE) 취약점 (CVE-2026-118636)
[영향 대상] Apache MINA 3.0.0 비활성 브랜치 및 해당 코덱 모듈을 사용하는 Java 애플리케이션
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 미만) 버전
GitLab CE/EE 미인증 임의 파일 읽기 취약점 보안 권고 (CVE-2026-85706)
[영향 대상] GitLab CE/EE 18.7 버전부터 19.3.1 버전 사이의 특정 릴리즈 사용자
Google Brotli 디코더 원격 코드 실행(RCE) 및 메모리 손상 취약점 보안 권고 (CVE-2026-111497)
[영향 대상] Google Brotli 라이브러리 버전 1.0.3 ~ 1.2.0을 사용하는 모든 웹 서버, 브라우저, Node.js 및 백엔드 애플리케이션
일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독
보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.