TA 팀이 “젠킨스 임의 파일 읽기”를 분석하여 작성한 취약점 보고서
이 취약점은 에이전트 접근이 가능한 공격자가 컨트롤러에 연결하여 컨트롤러의 모든 파일을 읽을 수 있는 Jenkins의 임의 파일 읽기 취약점으로, 이로 인해 RCE 공격으로 이어질 수 있습니다.
해당 취약점은 젠킨스 2.471, LTS 2.452.4, 2.462.1에서 패치되었으며, AIWAF는 관련 취약점을 지속적으로 모니터링하고 있습니다.
Tags: Jenkins, CVE-2024-43044, Arbitrary File Read, Remote Code Execution, Jenkins Remoting Library, Jenkins Agent, Jenkins Controller
1. 개요
Jenkins는 소프트웨어 빌드, 테스트, 배포와 같은 작업을 자동화하는 데 사용되는 도구로, 해당 도구에서 발생한 파일 읽기 취약점인 CVE-2024-43044에 대한 분석을 진행하였습니다.
2. 공격 유형
Jenkins의 아키텍처를 살펴보면 Jenkins Agent와 해당 Agent들을 관리, 작업 스케줄링 및 모니터링등의 작업을 조율하는 Controller로 구성되어 있습니다. 이때 Jenkins Agent와 Controller 간 통신은 자체 프로토콜 혹은 SSH를 통해 통신하는 Remoting 라이브러리를 사용합니다.
https://blog.convisoappsec.com/en/analysis-of-cve-2024-43044/
이 취약점은 Agent가 Controller 내 임의 파일에 접근 및 읽기가 가능하도록 하는 취약점으로, Controller 내 함수 중 일부 코드에서 Agent가 Controller 파일 시스템에 필요한 파일을 요청할 때 해당 요청 경로를 제한하지 않기 때문에 발생합니다.
따라서 공격자는 agent.jar 파일을 얻거나 remoting.jar 파일을 통해 자격 증명을 유출시켜 agent name 및 secret 정보를 확보하여 Agent에 접근, 통신 라이브러리인 Remoting 라이브러리를 사용해 Controller와 연결하고 취약한 인스턴스인 hudson.remoting.RemoteClassLoader를 호출하여 임의 파일에 접근합니다.
해당 취약점을 활용하여 특정 사용자에 대한 정보를 탈취하여 그 정보를 토대로 Remomber-Me 쿠키를 생성, Jenkins Scripting Engine에 액세스하여 악성 명령을 실행할 수 있습니다.
3. 대응 방안
해당 취약점의 경우 Jenkins 2.471, LTS 2.452.4 및 2.462.1에서 패치 되었으며, Jenkins에서는 불가피하게 수정 사항을 적용하지 못한 Jenkins Controller를 위한 수정된 Agent 파일들도 제공하였습니다.
해당 취약점의 경우 자체 프로토콜 혹인 SSH 통신 환경에서 발생하는 취약점으로 AIWAF에서 패턴으로 대응 가능한 영역이 아닌 것으로 보여집니다.
https://github.com/jenkinsci/remoting/blob/master/docs/protocols.md
4. 결론
Jenkins에서 발생한 파일 읽기 취약점은 어떠한 방법으로든 Agent에 접근할 수만 있다면 해당 취약점을 손쉽게 사용할 수 있으며, 2024-09-24 기준 516,000개가 넘는 Jenkins 서버가 노출되어 있는 만큼 해당 취약점에 대한 영향력이 높기에 Jenkins를 항상 최신 버전으로 패치를 진행하여야 합니다.
ZoomEye에서 "Jenkins"를 검색한 결과
저희 AIWAF 제품에서는 Jenkins에서 발생하는 취약점들에 대해 지속적으로 모니터링하고 있으며, 앞으로도 발견되는 관련 취약점들에 대해서도 신속하게 대응할 예정입니다.