
Spring 라이브러리의 새로운 취약점: 위험에 처해 있는지 확인하는 방법과 취해야 할 조치
최근 Java 커뮤니티에서 가장 인기 있는 라이브러리 중 하나인 Spring 라이브러리가 원격 코드 실행(RCE)과 관련된 두 가지 취약점을 공개했습니다. 사용자가 취약점 위험에 노출되었는지 여부와 취해야 할 조치를 보다 쉽게 파악할 수 있도록, "Spring4Shell" 및 "Spring Cloud Function"의 알려진 세부 정보를 정리했습니다.
취약점 1-“Spring4Shell” (CVE-2022-22965)
2022년 3월 29일, 해당 커뮤니티는 Spring Core(SC)의 취약점에 대한 개념 증명 스크린샷을 포함한 일련의 트윗을 발견했습니다. 이 취약점은 최근 출시된 버전 5.3.17을 포함한 모든 버전의 Spring Core 코드를 원격으로 실행할 수 있게 합니다.
어떤 애플리케이션이 위험에 노출되어 있나요?
현재, Tomcat에 호스팅된 애플리케이션만이 이 새로운 취약점에 노출될 위험이 있는 것으로 확인되었습니다. 임베디드 Tomcat 서블릿 컨테이너나 기타 Tomcat이 아닌 호스팅 환경의 애플리케이션을 대상으로 한 공격이 성공한 사례는 아직 확인되지 않았지만, 향후 이러한 프레임워크에서 위협이 성공적으로 활용될 가능성을 배제할 수는 없습니다.
봄에 해당 취약점에 대한 공식 성명을 발표했으며, 현재까지 파악된 바에 따르면 이 취약점은 공격을 받기 위해 다음 조건이 충족되어야 함을 밝혔습니다:
- JDK 9 이상
- Apache Tomcat은 서블릿 컨테이너입니다.
- 전통적인 WAR 파일로 패키징(Spring Boot 실행 파일 jar와는 반대)
- Spring-webmvc 또는 spring-webflux 의존성
- Spring Framework 버전 5.3.0부터 5.3.17, 5.2.0부터 5.2.19 및 이전 버전
"Spring4Shell" 취약점은 어떻게 작동하는가?
이 취약점은 메서드 서명에서 일반적인 오래된 Java 객체(POJO)를 사용하는 요청에서 "데이터 바인딩"(org.springframework.web.bind.Web.bind.WebDataBinder)을 사용하는 것에 의존합니다:

Foo 클래스는 POJO 클래스로, 다음과 같이 정의할 수 있습니다. 실제 클래스는 중요하지 않으며, 클래스 로더에 의해 로드되기만 하면 됩니다.

이러한 방식으로 요청이 처리될 때, 클래스 로더는 해당 클래스를 파싱하는 데 사용됩니다. 클래스 로더는 실행 시점에 클래스를 로드하는 역할을 하며, 모든 가능한 유형을 미리 메모리에 로드할 필요가 없습니다. 새로운 클래스를 사용할 때 로드해야 할 .jar 파일을 계산합니다.
이 취약점에 대한 최신 및 심층 정보는 Spring 블로그 게시물에서직접 확인하실 수 있으며, 여기에는 잠재적인 수정 방법이나 우회 방법이 포함됩니다.
취약점 2-Spring Cloud 함수 (CVE-2022-22963)
2022년 3월 27일, Cyber Kendra는 Spring Cloud Functions의 패치되지 않은 0일 원격 코드 실행(RCE) 취약점에 대한 세부 정보를 공개했습니다. 이 취약점은 CVE-2022-22963: Spring 표현식 리소스 접근 취약점으로지정되었습니다.
어떤 애플리케이션이 위험에 노출되어 있나요?
이 취약점은 다음 조건에서 실행되는 애플리케이션에 영향을 미칩니다:
- JDK 9 이상
- Spring Cloud Functions 버전 3.1.6(또는 그 이하 버전), 3.2.2(또는 그 이하 버전) 또는 지원되지 않는 모든 버전
착취는 어떻게 작동하는가?
Spring Cloud Function은 개발자가 속성 spring.cloud.function.routing-expression을 통해 라우팅 처리 방식을 구성할 수 있게 합니다. 일반적으로 구성 또는 코드를 통해 이루어집니다. 이는 "Spring 표현식 언어"(SpEL)의 강력한 기능을 활용합니다. 이 0일 취약점을 통해 해당 속성이 요청의 HTTP 헤더를 통해 설정될 수 있다는 점이 확인되었습니다. 이는 공격자가 RoutingFunction 엔드포인트의 HTTP 요청에 SpEL 코드를 직접 삽입하여 임의의 코드를 실행할 수 있음을 의미합니다.
사용자는 위험을 줄이기 위해 어떤 조치를 취해야 합니까?
봄에는 버전 3.1.7 및 3.2.3을 출시하여 HTTP 헤더를 통해 이 속성을 설정하는 것을 허용하지 않음으로써 이 문제를 해결하고 취약점을 완화했습니다. 해당 버전 중 하나로 업그레이드한 후에는 추가 조치가 필요하지 않습니다.
개발자가 더 안전한 코드를 작성하도록 지원하는 방법에 대해 자세히 알아보고 싶으신가요?데모 예약하거나 무료 보안 코딩 가이드인 '안전한 코드 코치'를 살펴보세요.
자료 출처
- https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/
- https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/


최근, Java 커뮤니티에서 가장 인기 있는 라이브러리 중 하나인 Spring 라이브러리가 원격 코드 실행(RCE)과 관련된 두 가지 취약점을 공개했습니다. 우리는 "Spring4Shell"과 "Spring Cloud Function"에 대해 알려진 세부 사항을 분석하여 여러분이 위험에 처해 있는지, 그리고 위험이 존재할 경우 어떻게 해야 하는지 이해하는 데 도움을 드리고자 합니다.

Secure Code Warrior는 조직이 소프트웨어 개발 생명주기 전반에 걸쳐 코드를 보호하고 사이버 보안을 최우선으로 하는 문화를 조성하도록 지원합니다. 앱 보안 관리자, 개발자, 최고정보보안책임자(CISO) 또는 보안 관련 업무를 수행하는 모든 분들에게, 저희는 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.
데모 예약

최근 Java 커뮤니티에서 가장 인기 있는 라이브러리 중 하나인 Spring 라이브러리가 원격 코드 실행(RCE)과 관련된 두 가지 취약점을 공개했습니다. 사용자가 취약점 위험에 노출되었는지 여부와 취해야 할 조치를 보다 쉽게 파악할 수 있도록, "Spring4Shell" 및 "Spring Cloud Function"의 알려진 세부 정보를 정리했습니다.
취약점 1-“Spring4Shell” (CVE-2022-22965)
2022년 3월 29일, 해당 커뮤니티는 Spring Core(SC)의 취약점에 대한 개념 증명 스크린샷을 포함한 일련의 트윗을 발견했습니다. 이 취약점은 최근 출시된 버전 5.3.17을 포함한 모든 버전의 Spring Core 코드를 원격으로 실행할 수 있게 합니다.
어떤 애플리케이션이 위험에 노출되어 있나요?
현재, Tomcat에 호스팅된 애플리케이션만이 이 새로운 취약점에 노출될 위험이 있는 것으로 확인되었습니다. 임베디드 Tomcat 서블릿 컨테이너나 기타 Tomcat이 아닌 호스팅 환경의 애플리케이션을 대상으로 한 공격이 성공한 사례는 아직 확인되지 않았지만, 향후 이러한 프레임워크에서 위협이 성공적으로 활용될 가능성을 배제할 수는 없습니다.
봄에 해당 취약점에 대한 공식 성명을 발표했으며, 현재까지 파악된 바에 따르면 이 취약점은 공격을 받기 위해 다음 조건이 충족되어야 함을 밝혔습니다:
- JDK 9 이상
- Apache Tomcat은 서블릿 컨테이너입니다.
- 전통적인 WAR 파일로 패키징(Spring Boot 실행 파일 jar와는 반대)
- Spring-webmvc 또는 spring-webflux 의존성
- Spring Framework 버전 5.3.0부터 5.3.17, 5.2.0부터 5.2.19 및 이전 버전
"Spring4Shell" 취약점은 어떻게 작동하는가?
이 취약점은 메서드 서명에서 일반적인 오래된 Java 객체(POJO)를 사용하는 요청에서 "데이터 바인딩"(org.springframework.web.bind.Web.bind.WebDataBinder)을 사용하는 것에 의존합니다:

Foo 클래스는 POJO 클래스로, 다음과 같이 정의할 수 있습니다. 실제 클래스는 중요하지 않으며, 클래스 로더에 의해 로드되기만 하면 됩니다.

이러한 방식으로 요청이 처리될 때, 클래스 로더는 해당 클래스를 파싱하는 데 사용됩니다. 클래스 로더는 실행 시점에 클래스를 로드하는 역할을 하며, 모든 가능한 유형을 미리 메모리에 로드할 필요가 없습니다. 새로운 클래스를 사용할 때 로드해야 할 .jar 파일을 계산합니다.
이 취약점에 대한 최신 및 심층 정보는 Spring 블로그 게시물에서직접 확인하실 수 있으며, 여기에는 잠재적인 수정 방법이나 우회 방법이 포함됩니다.
취약점 2-Spring Cloud 함수 (CVE-2022-22963)
2022년 3월 27일, Cyber Kendra는 Spring Cloud Functions의 패치되지 않은 0일 원격 코드 실행(RCE) 취약점에 대한 세부 정보를 공개했습니다. 이 취약점은 CVE-2022-22963: Spring 표현식 리소스 접근 취약점으로지정되었습니다.
어떤 애플리케이션이 위험에 노출되어 있나요?
이 취약점은 다음 조건에서 실행되는 애플리케이션에 영향을 미칩니다:
- JDK 9 이상
- Spring Cloud Functions 버전 3.1.6(또는 그 이하 버전), 3.2.2(또는 그 이하 버전) 또는 지원되지 않는 모든 버전
착취는 어떻게 작동하는가?
Spring Cloud Function은 개발자가 속성 spring.cloud.function.routing-expression을 통해 라우팅 처리 방식을 구성할 수 있게 합니다. 일반적으로 구성 또는 코드를 통해 이루어집니다. 이는 "Spring 표현식 언어"(SpEL)의 강력한 기능을 활용합니다. 이 0일 취약점을 통해 해당 속성이 요청의 HTTP 헤더를 통해 설정될 수 있다는 점이 확인되었습니다. 이는 공격자가 RoutingFunction 엔드포인트의 HTTP 요청에 SpEL 코드를 직접 삽입하여 임의의 코드를 실행할 수 있음을 의미합니다.
사용자는 위험을 줄이기 위해 어떤 조치를 취해야 합니까?
봄에는 버전 3.1.7 및 3.2.3을 출시하여 HTTP 헤더를 통해 이 속성을 설정하는 것을 허용하지 않음으로써 이 문제를 해결하고 취약점을 완화했습니다. 해당 버전 중 하나로 업그레이드한 후에는 추가 조치가 필요하지 않습니다.
개발자가 더 안전한 코드를 작성하도록 지원하는 방법에 대해 자세히 알아보고 싶으신가요?데모 예약하거나 무료 보안 코딩 가이드인 '안전한 코드 코치'를 살펴보세요.
자료 출처
- https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/
- https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/

최근 Java 커뮤니티에서 가장 인기 있는 라이브러리 중 하나인 Spring 라이브러리가 원격 코드 실행(RCE)과 관련된 두 가지 취약점을 공개했습니다. 사용자가 취약점 위험에 노출되었는지 여부와 취해야 할 조치를 보다 쉽게 파악할 수 있도록, "Spring4Shell" 및 "Spring Cloud Function"의 알려진 세부 정보를 정리했습니다.
취약점 1-“Spring4Shell” (CVE-2022-22965)
2022년 3월 29일, 해당 커뮤니티는 Spring Core(SC)의 취약점에 대한 개념 증명 스크린샷을 포함한 일련의 트윗을 발견했습니다. 이 취약점은 최근 출시된 버전 5.3.17을 포함한 모든 버전의 Spring Core 코드를 원격으로 실행할 수 있게 합니다.
어떤 애플리케이션이 위험에 노출되어 있나요?
현재, Tomcat에 호스팅된 애플리케이션만이 이 새로운 취약점에 노출될 위험이 있는 것으로 확인되었습니다. 임베디드 Tomcat 서블릿 컨테이너나 기타 Tomcat이 아닌 호스팅 환경의 애플리케이션을 대상으로 한 공격이 성공한 사례는 아직 확인되지 않았지만, 향후 이러한 프레임워크에서 위협이 성공적으로 활용될 가능성을 배제할 수는 없습니다.
봄에 해당 취약점에 대한 공식 성명을 발표했으며, 현재까지 파악된 바에 따르면 이 취약점은 공격을 받기 위해 다음 조건이 충족되어야 함을 밝혔습니다:
- JDK 9 이상
- Apache Tomcat은 서블릿 컨테이너입니다.
- 전통적인 WAR 파일로 패키징(Spring Boot 실행 파일 jar와는 반대)
- Spring-webmvc 또는 spring-webflux 의존성
- Spring Framework 버전 5.3.0부터 5.3.17, 5.2.0부터 5.2.19 및 이전 버전
"Spring4Shell" 취약점은 어떻게 작동하는가?
이 취약점은 메서드 서명에서 일반적인 오래된 Java 객체(POJO)를 사용하는 요청에서 "데이터 바인딩"(org.springframework.web.bind.Web.bind.WebDataBinder)을 사용하는 것에 의존합니다:

Foo 클래스는 POJO 클래스로, 다음과 같이 정의할 수 있습니다. 실제 클래스는 중요하지 않으며, 클래스 로더에 의해 로드되기만 하면 됩니다.

이러한 방식으로 요청이 처리될 때, 클래스 로더는 해당 클래스를 파싱하는 데 사용됩니다. 클래스 로더는 실행 시점에 클래스를 로드하는 역할을 하며, 모든 가능한 유형을 미리 메모리에 로드할 필요가 없습니다. 새로운 클래스를 사용할 때 로드해야 할 .jar 파일을 계산합니다.
이 취약점에 대한 최신 및 심층 정보는 Spring 블로그 게시물에서직접 확인하실 수 있으며, 여기에는 잠재적인 수정 방법이나 우회 방법이 포함됩니다.
취약점 2-Spring Cloud 함수 (CVE-2022-22963)
2022년 3월 27일, Cyber Kendra는 Spring Cloud Functions의 패치되지 않은 0일 원격 코드 실행(RCE) 취약점에 대한 세부 정보를 공개했습니다. 이 취약점은 CVE-2022-22963: Spring 표현식 리소스 접근 취약점으로지정되었습니다.
어떤 애플리케이션이 위험에 노출되어 있나요?
이 취약점은 다음 조건에서 실행되는 애플리케이션에 영향을 미칩니다:
- JDK 9 이상
- Spring Cloud Functions 버전 3.1.6(또는 그 이하 버전), 3.2.2(또는 그 이하 버전) 또는 지원되지 않는 모든 버전
착취는 어떻게 작동하는가?
Spring Cloud Function은 개발자가 속성 spring.cloud.function.routing-expression을 통해 라우팅 처리 방식을 구성할 수 있게 합니다. 일반적으로 구성 또는 코드를 통해 이루어집니다. 이는 "Spring 표현식 언어"(SpEL)의 강력한 기능을 활용합니다. 이 0일 취약점을 통해 해당 속성이 요청의 HTTP 헤더를 통해 설정될 수 있다는 점이 확인되었습니다. 이는 공격자가 RoutingFunction 엔드포인트의 HTTP 요청에 SpEL 코드를 직접 삽입하여 임의의 코드를 실행할 수 있음을 의미합니다.
사용자는 위험을 줄이기 위해 어떤 조치를 취해야 합니까?
봄에는 버전 3.1.7 및 3.2.3을 출시하여 HTTP 헤더를 통해 이 속성을 설정하는 것을 허용하지 않음으로써 이 문제를 해결하고 취약점을 완화했습니다. 해당 버전 중 하나로 업그레이드한 후에는 추가 조치가 필요하지 않습니다.
개발자가 더 안전한 코드를 작성하도록 지원하는 방법에 대해 자세히 알아보고 싶으신가요?데모 예약하거나 무료 보안 코딩 가이드인 '안전한 코드 코치'를 살펴보세요.
자료 출처
- https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/
- https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/
최근 Java 커뮤니티에서 가장 인기 있는 라이브러리 중 하나인 Spring 라이브러리가 원격 코드 실행(RCE)과 관련된 두 가지 취약점을 공개했습니다. 사용자가 취약점 위험에 노출되었는지 여부와 취해야 할 조치를 보다 쉽게 파악할 수 있도록, "Spring4Shell" 및 "Spring Cloud Function"의 알려진 세부 정보를 정리했습니다.
취약점 1-“Spring4Shell” (CVE-2022-22965)
2022년 3월 29일, 해당 커뮤니티는 Spring Core(SC)의 취약점에 대한 개념 증명 스크린샷을 포함한 일련의 트윗을 발견했습니다. 이 취약점은 최근 출시된 버전 5.3.17을 포함한 모든 버전의 Spring Core 코드를 원격으로 실행할 수 있게 합니다.
어떤 애플리케이션이 위험에 노출되어 있나요?
현재, Tomcat에 호스팅된 애플리케이션만이 이 새로운 취약점에 노출될 위험이 있는 것으로 확인되었습니다. 임베디드 Tomcat 서블릿 컨테이너나 기타 Tomcat이 아닌 호스팅 환경의 애플리케이션을 대상으로 한 공격이 성공한 사례는 아직 확인되지 않았지만, 향후 이러한 프레임워크에서 위협이 성공적으로 활용될 가능성을 배제할 수는 없습니다.
봄에 해당 취약점에 대한 공식 성명을 발표했으며, 현재까지 파악된 바에 따르면 이 취약점은 공격을 받기 위해 다음 조건이 충족되어야 함을 밝혔습니다:
- JDK 9 이상
- Apache Tomcat은 서블릿 컨테이너입니다.
- 전통적인 WAR 파일로 패키징(Spring Boot 실행 파일 jar와는 반대)
- Spring-webmvc 또는 spring-webflux 의존성
- Spring Framework 버전 5.3.0부터 5.3.17, 5.2.0부터 5.2.19 및 이전 버전
"Spring4Shell" 취약점은 어떻게 작동하는가?
이 취약점은 메서드 서명에서 일반적인 오래된 Java 객체(POJO)를 사용하는 요청에서 "데이터 바인딩"(org.springframework.web.bind.Web.bind.WebDataBinder)을 사용하는 것에 의존합니다:

Foo 클래스는 POJO 클래스로, 다음과 같이 정의할 수 있습니다. 실제 클래스는 중요하지 않으며, 클래스 로더에 의해 로드되기만 하면 됩니다.

이러한 방식으로 요청이 처리될 때, 클래스 로더는 해당 클래스를 파싱하는 데 사용됩니다. 클래스 로더는 실행 시점에 클래스를 로드하는 역할을 하며, 모든 가능한 유형을 미리 메모리에 로드할 필요가 없습니다. 새로운 클래스를 사용할 때 로드해야 할 .jar 파일을 계산합니다.
이 취약점에 대한 최신 및 심층 정보는 Spring 블로그 게시물에서직접 확인하실 수 있으며, 여기에는 잠재적인 수정 방법이나 우회 방법이 포함됩니다.
취약점 2-Spring Cloud 함수 (CVE-2022-22963)
2022년 3월 27일, Cyber Kendra는 Spring Cloud Functions의 패치되지 않은 0일 원격 코드 실행(RCE) 취약점에 대한 세부 정보를 공개했습니다. 이 취약점은 CVE-2022-22963: Spring 표현식 리소스 접근 취약점으로지정되었습니다.
어떤 애플리케이션이 위험에 노출되어 있나요?
이 취약점은 다음 조건에서 실행되는 애플리케이션에 영향을 미칩니다:
- JDK 9 이상
- Spring Cloud Functions 버전 3.1.6(또는 그 이하 버전), 3.2.2(또는 그 이하 버전) 또는 지원되지 않는 모든 버전
착취는 어떻게 작동하는가?
Spring Cloud Function은 개발자가 속성 spring.cloud.function.routing-expression을 통해 라우팅 처리 방식을 구성할 수 있게 합니다. 일반적으로 구성 또는 코드를 통해 이루어집니다. 이는 "Spring 표현식 언어"(SpEL)의 강력한 기능을 활용합니다. 이 0일 취약점을 통해 해당 속성이 요청의 HTTP 헤더를 통해 설정될 수 있다는 점이 확인되었습니다. 이는 공격자가 RoutingFunction 엔드포인트의 HTTP 요청에 SpEL 코드를 직접 삽입하여 임의의 코드를 실행할 수 있음을 의미합니다.
사용자는 위험을 줄이기 위해 어떤 조치를 취해야 합니까?
봄에는 버전 3.1.7 및 3.2.3을 출시하여 HTTP 헤더를 통해 이 속성을 설정하는 것을 허용하지 않음으로써 이 문제를 해결하고 취약점을 완화했습니다. 해당 버전 중 하나로 업그레이드한 후에는 추가 조치가 필요하지 않습니다.
개발자가 더 안전한 코드를 작성하도록 지원하는 방법에 대해 자세히 알아보고 싶으신가요?데모 예약하거나 무료 보안 코딩 가이드인 '안전한 코드 코치'를 살펴보세요.
자료 출처
- https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/
- https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/




%20(1).avif)
.avif)
