1. Jenkins [1][2]
- CI/CD(Continuous Integration/Continuous Delivery) 중 하나
- 빌드, 테스트, 배포 프로세스를 자동화하여 소프트웨어 품질 및 개발 생산성 향상에 도움을 줌
2. 취약점
2.1 CVE-2024-23897 [3]
- 취약한 버전의 Jenkins에서 인증없이 임의의 파일 내용 일부(또는 전체)를 읽어낼 수 있는 취약점
> CLI 기능 구현을 위해 사용하는 args4j 라이브러리의 명령 인수 및 옵션 파싱 부분에서 취약점이 발생
> 명령 인수 구문 분석을 용이하게 하기 위한 기능인 @ 문자와 파일 경로를 파일 내용으로 자동으로 바꾸는 CLI 기능에서 발생
> 또한, "Allow anonymous read access" 기능이 활성화 되어있는 경우 취약
> 현재 45,000개의 Jenkins 서버가 공격에 노출되어 있는 상황
- 영향받는 버전
Jenkins 2.441 이전 및 LTS 2.426.2 이전 버전
- Jenkins는 다양한 인증 방법을 제공
> "누구나 무엇이든 할 수 있음", "로그인한 사용자가 무엇이든 할 수 있음", "익명 읽기 엑서스 허용" 등
> "익명 읽기 엑서스 허용" 옵션은 모든 사람에게 전체 읽기 권한을 부여
- 또한, Jenkins-CLI는 사용자 지정 명령을 실행할 수 있는 내장 명령줄 인터페이스를 사용자에게 제공 [5][6]
> CLI를 호출하는 방법은 jenkins-cli.jar(웹 소켓 사용), SSH 사용한 명령 호출, hxxp://jenkins/cli?remoting=false에 POST 요청 전송의 방법이 있음
> 그 중 ExpandAtFiles()는 인수가 "@"로 시작하는지 확인 후 @ 뒤 경로에서 파일을 읽고 출력
- [사진 2] 및 [사진 3]에 의해 공격자가 원하는 임의 파일에 접근해 내용을 볼 수 있음
> @/etc/passwd 파일을 요청할 경우 해당 파일의 내용을 반환
> 공격자가 “Overall/Read” 권한일 경우 취약 서버의 전체 파일을 읽을 수 있으며, 해당 권한이 없을 경우 파일의 처음 세 줄을 읽을 수 있음
- 공개된 PoC (hxxp://jenkins/cli?remoting=false URL 이용)와 jenkins-cli.jar를 이용한 결과 비교 [7]
> PoC의 경우 Timed Out 오류 발생(원인 불명), jenkins-cli.jar의 경우 파일 내용이 노출
> [사진 2]에서 "익명 읽기 엑세스 허용" 비활성화 시 Overall/Read 권한이 없다는 에러 출력
※ hxxp://localhost:8080/jnlpJars/jenkins-cli.jar에서 다운 가능
2.2 CVE-2024-23898
- jenkins-cli.jar를 사용해 CLI 명령 실행 시 원본 유효성 검증(Jenkins-crumb(CSRF 토큰) 또는 Origin 헤더)이 없어 발생하는 취약점
> 사이트 간 웹소켓 하이재킹(CSWSH) 취약성이 발생하여 공격자가 Jenkins 컨트롤러에서 CLI 명령을 실행
> [사진 5] 중 "jenkins-cli.jar (아래)" 참고
- 영향받는 버전
Jenkins 2.441 이전 및 LTS 2.426.2 이전 버전
3. 대응방안
- 벤더사 제공 패치 적용 [9]
> "expandAtFiles" 기능을 비활성화하는 보안 구성을 추가하여 CVE-2024-23897을 패치
> WebSocket 엔드포인트에 원본 확인 과정을 추가해 CVE-2024-23898을 패치
> 패치가 어려운 경우 CLI에 대한 엑세스를 비활성화
취약점 | 영향받는 버전 | 패치 버전 |
CVE-2024-23897 CVE-2024-23898 |
Jenkins 2.441 이전 및 LTS 2.426.2 이전 버전 | 2.442와 LTS 2.426.3 |
- Jenkins 서버 외부 노출 차단 및 취약점 모니터링
탐지 문자열 | URL: /cli?remoting=false HTTP Body: help, @ ※ [사진 6] 참고 |
4. 참고
[1] https://www.jenkins.io/
[2] https://onestone-note.tistory.com/38#7.%207.%C2%A0%20Jenkins%C2%A0%20%EC%8B%A4%EC%8A%B5
[3] https://www.sonarsource.com/blog/excessive-expansion-uncovering-critical-security-vulnerabilities-in-jenkins/?utm_medium=social&utm_source=twitter&utm_campaign=research&utm_content=blog-excessive-expansion-uncovering-critical-security-vulnerabilities-in-jenkins-240125-p1
[4] https://nvd.nist.gov/vuln/detail/CVE-2024-23897
[5] https://www.jenkins.io/doc/book/managing/cli/
[6] https://github.com/jenkinsci/jenkins/tree/master/core/src/main/java/hudson/cli
[7] https://github.com/Vozec/CVE-2024-23897
[8] https://nvd.nist.gov/vuln/detail/CVE-2024-23898
[9] https://www.jenkins.io/security/advisory/2024-01-24/#security-3314
[10] https://www.horizon3.ai/cve-2024-23897-assessing-the-impact-of-the-jenkins-arbitrary-file-leak-vulnerability/
[11] https://devhackdebug.com/2024/01/29/cve-2024-23897-jenkins-rce-vulnerabilities/
[12] https://medium.com/@red_darkin/how-to-replicate-jenkins-cve-2024-23897-arbitrary-file-read-vulnerability-260c8174dd94
[13] https://www.bleepingcomputer.com/news/security/45k-jenkins-servers-exposed-to-rce-attacks-using-public-exploits/
[14] https://www.bleepingcomputer.com/news/security/exploits-released-for-critical-jenkins-rce-flaw-patch-now/#google_vignette
[15] https://www.boannews.com/media/view.asp?idx=126195&kind=1&search=title&find=%C1%A8%C5%B2%BD%BA
[16] https://www.boannews.com/media/view.asp?idx=126273&kind=1&search=title&find=%C1%A8%C5%B2%BD%BA
'취약점 > Sensitive Data Exposure' 카테고리의 다른 글
CISA, F5 BIG-IP 쿠키 악용해 내부 네트워크 해킹에 대해 경고 (0) | 2024.10.13 |
---|---|
KeePass 마스터 비밀번호 탈취 취약점 (CVE-2023-3278) (0) | 2023.05.22 |
Confluence 무단 정보 공개 (CVE-2017-7415) (0) | 2023.01.05 |
IIS Server Name Spoof (CVE-2005-2678) (0) | 2022.12.14 |