확인된 취약 Jenkins 서버 예시 (출처: ASEC) 국내 Jenkins 서버 취약점 노출 현황 | 국내 Jenkins 서버 대다수 취약점 노출
올해 초 공개된 CVE-2024-23897 취약점은 인증되지 않은 사용자가 Jenkins 서버
시스템의 임의 파일을 읽을 수 있는 취약점으로 CVSS 점수 9.8의 위험도가 매우 높은
취약점입니다. 최근 해당 취약점이 실제 공격에 악용되고 있다는 보고가 있으며, 해외
언론에서는 특정 기업이 해당 취약점을 악용한 공격으로 피해를 입었다고 합니다. 해당
취약점으로 대상 버전의 모든 Jenkins 서버에 공격이 가능할 것으로 파악됩니다.
최근 공개된 CVE-2024-43044 취약점 또한 기본 라이브러리의 특정 기능을 악용하
여 Agent 접근 권한을 가진 공격자가 서버의 임의 파일을 읽을 수 있는 취약점으로
CVSS 점수 8.8의 위험도가 높은 취약점입니다.
두 취약점 모두 PoC 코드가 GitHub, 블로그 등지에 공개되어 쉽게 찾을 수 있어 언제
든 공격에 악용될 수 있으므로 주의해야 합니다 |
파일 일부를 읽을 수 있는 명령어 사용 예시
※ 별다른 설정을 하지 않은 환경인 기본 권한 상태에서는 취약점으로 탈취 가능한 파일 내용이 일부 라인
으로 제한되나, SSH Key, Jenkins 암호화 키 등의 라인 구분이 없는 주요 파일은 전체 내용을 출력할 수
있습니다. | CVE-2024-23897
이 취약점은 Jenkins-CLI 툴을 통해 원격지에서 명령어와 인자를 전달받아 CLI
명령을 분석하는 과정에서 발생합니다. 명령 분석에 사용하는 Args4j
라이브러리에 ‘@’ 식별자 이후 문자열 경로의 파일을 읽어 인자로 설정하는
기능(expandAtFiles)이 있습니다. 명령에 대한 유효한 인자가 아닌 경우 에러가
발생하는데, 이 에러 메시지에 인자로 사용했던 문자열, 즉 파일 내용이 노출되는
취약점입니다. |
파일 전체를 읽을 수 있는 명령어 사용 예시 ※ 특정 설정 환경
- 익명 연결 기능을 사용한 경우 - 모든 사용자에 읽기 권한을 부여했을 경우 - 사용자 가입을 허용했을 경우 - Lagacy 모드를 사용할 경우 | 분석 결과, 취약점에 활용 가능한 에러 메시지를 출력하는 명령어는 일부 라인을 읽을 수 있는 명령어와 전체 라인을 읽을 수 있는 명령어로 나뉩니다. 인자를 사용 하지 않거나 제한된 개수의 인자를 사용하는 명령어의 경우 파일의 특정 라인을 읽 을 수 있는 반면, 인자 개수 제한이 없는 명령어의 경우 파일 라인 전체를 읽을 수 있습니다. 또한 권한에 따라 사용 가능한 명령어가 제한되는데, 모든 라인을 읽을 수 있는 명령어는 특정 설정 환경에서만 동작됩니다. |
해당 경로가 디렉토리일 경우 디렉토리 내부 파일 목록 해당 경로가 파일일 경우 파일 내용 | CVE-2024-43044
Jenkins 설치 시 기본으로 설치되는 Remoting 라이브러리에 대한 취약점입니다. 라
이브러리 자체는 기본으로 설치되지만, Jenkins에 Agent가 등록되어 있고 공격자가
Agent 접근 권한을 가질 경우 취약점을 사용할 수 있습니다.
해당 라이브러리는 Jenkins 서버와 Agent의 통신 기능을 구현하며, Agent가 서버에
요청한 JAVA 클래스를 실행할 수 있는 기능을 포함합니다. 서버 URL의 JAR 파일을
실행하는 목적으로 구현된 것으로 파악되지만, 파일 경로 및 타입을 검사하지 않기 때
문에 서버 시스템의 임의 파일을 읽어 Agent로 전송할 수 있습니다. 이 취약점을 통해
디렉토리 리스팅 및 임의 파일 읽기가 가능합니다.
분석 결과 RemoteClassLoader 클래스의 특정 메소드에 코드를 추가하는 것으로 취
약점을 구현할 수 있습니다. 파일 경로가 디렉토리일 경우 디렉토리 리스트를 응답하며,
파일일 경우 파일 내용 전체를 응답합니다. |
결론 CVE-2024-23897은 공개된 사이트에 다수의 PoC 코드가 존재하며, PoC 코드가 아니더라도 Jenkins 패키지에 기본으로 포함
된 CLI 접속 도구로 취약점 구현이 가능하기 때문에 누구든지 즉시 공격이 가능합니다. 해당 취약점의 대상 버전 사용자는 확인 즉
시 완화 버전으로 패치할 것을 권고하고 있습니다.
CVE-2024-43044도 마찬가지로 위험도 높은 취약점으로 설명되고 있으며, 제조사에서는 즉시 업데이트가 어려울 경우를 위해
문제가 되는 fetchJar 메소드 자체를 사용하지 못하도록 패치하는 프로그램을 제공하고 있습니다.
두 취약점은 구현 난이도가 낮고 서버의 중요한 파일 내용이 유출될 수 있으므로 악용될 경우 큰 피해가 예상됩니다. 취약한 버전으
로 지속 운영 시 공격 대상으로 노출될 수 있으므로, 피해 예방을 위하여 즉시 최신 패치를 적용해야 합니다.
해당 사례 외에도 공격자는 여러 유명 제품의 알려진 취약점을 악용하여 공격을 시도합니다. 사용 중인 서비스를 항상 최신 버전으
로 유지해야 하며 각종 보안 설정을 통해 공격자의 취약점 스캐닝 및 공격을 방어해야 합니다. 또한 국내외 보안 권고를 상시 확인
하여 대상 서비스를 운용 중인 경우 신속한 조치와 함께 피해 여부를 점검해야 합니다. |