CVE-2024-23897 정리

Hae_To·2025년 5월 8일

1. CVE-2024-23897

  • **Arbitrary file read vulnerability through the CLI can lead to RCE
  • SECURITY-3314 / CVE-2024-23897
  • Severity (CVSS):** Critical

    개요

    SECURITY-3314 및 CVE-2024-23897는 Jenkins CLI에서 임의 파일 읽기 취약점(Arbitrary File Read)이 존재하며, 이를 가장 최악의 상황으로 악용하면 원격 코드 실행(RCE)이 발생할 가능성이 있다. Jenkins의 명령줄 인터페이스(이하 CLI)를 악용하여 공격자가 Jenkins 컨트롤러에서 파일을 읽어내고, 특정 조건에서 원격 코드 실행 등의 공격을 수행할 수 있다.

    본론

    1. 취약점 개요:

      • Jenkins는 명령 구문 분석을 위해 args4j라이브러리를 사용하며, 이때 명령 인수에서 “@” 문자를 포함하는 파일 경로 뒤에 오는 파일의 내용을 인자로 대체하는 기능이 기본적으로 활성화되어 있다.
      • Jenkins 2.441 이하 및 LTS 2.426.2 이하에서는 이를 비활성화할 수 없다. 공격자는 이것을 악용하여 컨트롤러 파일 시스템에서 임의의 파일을 읽을 수 있다.
      • 공격자가 읽을 수 있는 파일의 범위는 권한에 따라 달라지며, 전체/읽기 권한이 없는 경우에도 파일의 첫 몇 줄은 읽을 수 있다.
    2. 원격 코드 실행 (RCE) 공격 방법:

      • 리소스 루트 URL을 통한 RCE: WebSocket 지원이 활성화되고 특정 조건이 충족되면 공격자가 바이너리 파일의 암호화 키를 이용해 원격 코드 실행이 가능하다.
      • "Remember me" 쿠키를 통한 RCE: 공격자가 위조된 "Remember me" 쿠키를 사용하여 Jenkins 관리자 권한으로 로그인할 수 있으며, 이로 인해 스크립트 콘솔에 접근하여 코드를 실행할 수 있다.
      • XSS(크로스 사이트 스크립팅)를 통한 RCE: 빌드 로그에 악성 JavaScript 코드를 주입하여 원격 코드 실행 공격을 할 수 있다.
      • CSRF(사이트 간 요청 위조) 보호 우회를 통한 RCE: 공격자는 CSRF 토큰을 위조하여 Jenkins에 악의적인 요청을 보내 원격 코드를 실행할 수 있다.
    3. 임의 파일 읽기 취약점의 영향:

      • 공격자는 바이너리 파일에서 암호화된 비밀을 포함한 데이터를 읽을 수 있고 이는 Jenkins 인스턴스의 기밀성, 무결성, 가용성에 심각한 영향을 미칠 수 있다.
      • UTF-8 인코딩을 사용하는 대부분의 Linux 및 Mac OS X 시스템에서 바이너리 파일의 절반 정도가 읽히지 않지만, Windows 시스템에서는 이에 대한 제한이 상대적으로 적다.
    4. 수정 및 해결 방법:
      - Jenkins 2.442, LTS 2.426.3 및 LTS 2.440.1 버전에서 취약점을 해결하기 위한 수정이 이루어졌다. 이 버전들은 args4j라이브러리의 취약한 기능을 비활성화하여 CLI 명령 구문에서 파일 경로 뒤의 문자를 파일 내용으로 대체하는 기능을 차단했다.
      - Jenkins CLI 액세스를 완전히 비활성화하거나 최신 버전으로 업데이트하는 것이 최선의 해결책이며 해당 해결책을 적용하기 위해서는 시스템을 재시작할 필요는 없다.

      결론

      Jenkins의 임의 파일 읽기 취약점은 공격자가 시스템에 접근하여 파일을 읽고, 여러 방법으로 원격 코드 실행(RCE)을 수행할 수 있는 심각한 보안 문제이다. 이를 방지하기 위해서는 Jenkins를 최신 버전으로 업그레이드하거나 CLI를 비활성화하는 것이 필요합니다. 해당 취약점은 기밀성, 무결성, 가용성에 모두 영향을 미치기에 가능한 빠르게 조치를 취하는 것이 중요하다.


  • **Cross-site WebSocket hijacking vulnerability in the CLI 
  • SECURITY-3315 / CVE-2024-23898
  • Severity (CVSS):** High

    개요

    SECURITY-3315CVE-2024-23898는 Jenkins의 WebSocket 엔드포인트를 통한 CLI 접근과 관련된 크로스 사이트 WebSocket 하이재킹(CSWSH) 취약점. 이 취약점은 Jenkins의 CLI WebSocket 엔드포인트에서 출처 검증을 수행하지 않아 발생하며, 이를 통해 공격자가 CLI 명령어를 실행하여 관리자 권한으로도 원격 코드 실행(RCE) 등의 공격을 수행할 수 있다.

    본론

    1. 취약점 설명:

      • Jenkins 2.217부터 LTS 2.222.1 이상에서는 CLI에 WebSocket을 통해 접근할 수 있는 기능이 추가되었다. 이 기능은 Jenkins가 WebSocket을 지원하는 Jetty 버전에서 실행될 때 활성화됩니다.
      • Jenkins 2.2172.441 및 LTS 2.222.12.426.2 버전에서는 WebSocket 엔드포인트의 출처(origin) 검증이 이루어지지 않아 CSWSH 공격에 노출된다.
      • 또한, Jenkins는 SameSite 속성을 명시적으로 설정하지 않은 세션 쿠키를 사용하므로, 이로 인해 교차 사이트 요청에서 세션 쿠키가 사용될 수 있다. 이는 최신 웹 브라우저에서 SameSite 속성이 기본값으로 "Lax"로 설정되어 있어 제한적이지만, 익명 사용자나 특정 브라우저에서는 이 취약점을 악용할 수 있다.
    2. 공격 시나리오:

      • 익명 사용자의 권한에 따라 공격자는 Jenkins CLI 명령을 실행할 수 있다.
      • 익명 사용자가 권한이 없으면 제한된 정보만 얻을 수 있지만, 익명 사용자에게 권한이 부여된 경우에는 Groovy 스크립팅을 통한 임의 코드 실행이 가능하다.
      • SameSite 속성 설정이 "Lax"가 아닌 경우에는 피해자가 로그인이 된 상태로 공격을 당할 수 있다.
      • 공격자는 피해자의 권한을 사용하여 CLI 명령을 실행할 수 있습니다. Jenkins 관리자의 경우, 이로 인해 임의 코드 실행이 발생할 수 있다.
    3. 수정 및 해결 방법:

      • Jenkins 2.442, LTS 2.426.3 및 LTS 2.440.1 버전에서는 CLI WebSocket 엔드포인트에 대한 출처 검증이 추가되어 이 취약점이 해결되었다.
      • 이 수정 사항이 문제가 될 경우, Java 시스템 속성 hudson.cli.CLIAction.ALLOW_WEBSOCKETtrue로 설정하여 변경 사항을 비활성화할 수 있다.
    4. 대체 해결책:
      - CLI 비활성화: CLI에 대한 접근을 비활성화하면 이 취약점이 완전히 방지되며, 이는 업데이트가 불가능한 관리자를 위한 권장 해결책.
      - 역방향 프록시 설정: 역방향 프록시를 사용하는 경우, 프록시를 구성하여 WebSocket을 통한 CLI 접근을 차단할 수 있다.

      결론

    • SECURITY-3315 (CVE-2024-23898)WebSocket 기반 CLI 접근에서 발생하는 출처 검증 부족으로 인해 발생하는 취약점.
    • 공격자가 Jenkins에서 원격 코드 실행을 할 수 있는 위험이 있으며 이 문제를 해결하기 위해 Jenkins를 2.4422.426.3 등의 최신 버전으로 업데이트하거나, CLI WebSocket 기능을 비활성화하여 공격을 방지하는 것이 필요하다.
profile
진인사대천명

0개의 댓글