CVE-2024-38807

서명 위조
영향
스프링 부팅
>=2.7.0, <=2.7.21 >=3.0.0, <=3.0.16 >=3.1.0, <=3.1.12 >=3.2.0, <=3.2.8 >=3.3.0, <=3.3.2
in
항목을 찾을 수 없습니다.
느낌표 아이콘
패치 사용 가능
이 취약점은 HeroDevs에서 제공하는 네버엔딩 지원(NES) 버전에서 수정되었습니다.

개요

Spring Boot는 바로 사용할 수 있는 Spring 플랫폼의 사전 구성을 제공하여 사용자가 Java 애플리케이션을 빠르게 개발할 수 있도록 합니다. 스프링 프레임워크를 활용하여 웹 애플리케이션 개발을 간소화하는 동시에 애플리케이션 구성, 데이터 액세스 및 보안을 관리할 수 있는 다양한 도구를 제공합니다.

스프링 부트에서 서명 위조 취약점 경로 통과 취약점(CVE-2024-38807)이 발견되었습니다. 이 취약점으로 인해 해커는 한 사용자가 서명한 것처럼 보이는 콘텐츠를 실제로는 다른 사용자가 서명한 것으로 만들 수 있습니다. 이는 스프링 부트 로더 또는 스프링 부트 로더 클래식을 사용하고 사용자 지정 코드를 사용하여 중첩된 용기의 서명 확인을 수행하는 애플리케이션에 영향을 줍니다.

This issue affects Spring Boot versions >=2.7.0 through <=2.7.21, >=3.0.0 through <=3.0.16, >=3.1.0 through <=3.1.12, >=3.2.0 through <=3.2.8, and >=3.3.0 through<=3.3.2.

세부 정보

모듈 정보

  • 제품: 제품: Spring Boot
  • 영향을 받는 패키지 및 버전: 일부 텍스트
    • spring-boot-loader – versions >=2.7.0 through <=2.7.21
    • spring-boot-loader-classic – versions: >=3.0.0 through <=3.0.16, >=3.1.0 through <=3.1.12, >=3.2.0 through <=3.2.8, and >=3.3.0 through<=3.3.2
  • GitHub 리포지토리: https://github.com/spring-projects/spring-boot 
  • 패키지 관리자: Maven

취약점 정보

이 중간 심각도 취약점은 위에 강조 표시된 버전의 Spring Boot의 spring-boot-loader spring-boot-loader-classic 패키지에서 발견됩니다.

이 취약점은 사용자 지정 코드를 활용하여 다른 jar에 중첩된 서명된 jar의 유효성을 검사하는 Spring Boot 기반 애플리케이션에 존재하므로 이전에 로드된 jar의 서명을 잘못 속성화할 수 있습니다.

이 취약점은 중첩된 Jar와 인증서가 런타임에 로드되고 처리되는 방법의 차이로 인해 발생합니다. 그 결과 동적 코드를 실행하기 전에 암호화 서명에 의존하는 애플리케이션이 서명되지 않았거나, 일치하지 않거나, 유효하지 않은 Jar를 서명한 것으로 유효성을 검사할 수 있습니다. 

재현 단계

서명이 누락되었거나 유효하지 않은 서명의 로딩을 재현하려면 다음 단계를 수행하면 됩니다:

  1. 항아리를 만들거나 선택하고 항아리에 서명하기 위해 jarsign 유틸리티를 사용하여 서명합니다.
  2. 별도로 컴파일된 클래스 파일(예: Foo.class)을 Jar(예: invalid.jar)에 추가합니다.
  3. jarsigner -verify invalid.jar가 실제로 유효하지 않은지 확인합니다.
  4. 유효하지 않은 항아리를 다른 항아리(예: parent.jar) 안에 중첩합니다.
  5. parent.j ar와 invalid.jar가 로드되도록 애플리케이션을 구성합니다 .
  6. 두 병 모두 경고 없이 로드된다는 점에 유의하세요. 

사용자 지정 서명 확인을 수행하는 애플리케이션도 영향을 받을 수 있다는 점에 유의하세요. 이 취약점을 재현하는 단계는 애플리케이션에 따라 크게 달라질 수 있으므로, 저희 팀은 문제를 재현하는 단계를 적절히 업데이트할 예정입니다. 프로젝트가 이러한 방식으로 영향을 받을 수 있다고 생각되면 히어로 개발팀에 연락하여 구체적인 프로젝트 상황에 대해 논의하세요.

완화

  • Spring Boot 3.2 및 3.3 사용자는 이 문제가 해결된 최신 커뮤니티 지원 소스 버전(각각 3.29 및 3.3.3 이상)으로 업데이트해야 합니다.  
  • 2.7을 포함한 다른 버전의 Spring Boot는 더 이상 커뮤니티에서 지원되지 않습니다. 커뮤니티 지원 버전에는 이 문제를 해결하기 위한 업데이트가 제공되지 않습니다. 자세한 내용은 여기를 참조하세요.
  • 서명 확인은 2.7.0에 도입되었으므로 2.6.x 이하의 Spring Boot 사용자는 이 취약점의 직접적인 영향을 받지 않지만, 이러한 버전에서는 여전히 잘못된 서명이 있는 Jars가 오류 없이 로드될 수 있습니다. 따라서 모든 프로젝트를 지원되는 버전의 Spring Boot로 업데이트하는 것이 좋습니다. 
  • 위험을 제한하고 런타임 오류를 방지하기 위해 모든 항아리가 적절하게 서명되고 유효한지 확인하세요.

마이그레이션할 시간이 필요한 사용자의 경우 HeroDevs와 같은 상용 지원 파트너를 통해 EOL 이후 보안 지원을 받을 수 있습니다.

신용

참조

취약점 세부 정보
ID
CVE-2024-38807
영향을 받는 프로젝트
스프링 부팅
영향을 받는 버전
>=2.7.0, <=2.7.21 >=3.0.0, <=3.0.16 >=3.1.0, <=3.1.12 >=3.2.0, <=3.2.8 >=3.3.0, <=3.3.2
게시 날짜
2024년 8월 23일
≈ 수정 날짜
2024년 9월 25일
다음에서 수정되었습니다.
심각도
Medium
카테고리
서명 위조