Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/daehyuh/cve-2026-47883
Vulnerability AnalysisExploitationWeb Application ExploitationWeb Security
GitHubdaehyuh/cve-2026-47883

CVE-2026-47883

Minimal proof-of-concept for Spring Framework UrlHandlerFilter open redirect (CVE-2026-47883), demonstrating crafted double-slash requests produce attacker-controlled Location headers.

저장소 보기
2일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-47883: Spring Framework UrlHandlerFilter Open Redirect PoC

이 저장소는 Spring 공식 보안 권고문으로 공개된 CVE-2026-47883의 최소 재현 PoC입니다.

  • 공식 권고문: https://spring.io/security/cve-2026-47883/
  • 공식 제목: Spring Framework Open Redirect in UrlHandlerFilter
  • 심각도: Medium
  • CVSS v3.1: 5.4 (AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N)
  • CWE: CWE-601 — URL Redirection to Untrusted Site (Open Redirect)
  • 공개일: 2026-08-20

취약점 요약

Spring Framework의 UrlHandlerFilter를 매우 광범위한 패턴과 redirect 모드로 설정하면, 외부 origin으로 연결되는 Location 헤더가 만들어져 open redirect가 발생할 수 있습니다. Spring 공식 권고문은 Spring MVC와 Spring WebFlux의 필터 변형 모두를 영향 범위로 명시합니다.

이 PoC의 Servlet 경로에서 redirect 위치는 요청 URI의 trailing slash를 제거한 뒤 응답 헤더에 사용됩니다.

root@kitploit:~
String location = trimTrailingSlash(request.getRequestURI());
response.setHeader(HttpHeaders.LOCATION, location);

raw request URI가 //attacker.example/이면 결과는 //attacker.example입니다. RFC 3986 §4.2에서 //attacker.example은 network-path reference이므로, 브라우저는 이를 현재 scheme을 유지한 외부 주소(예: https://attacker.example)로 해석할 수 있습니다.

발생 조건

이 PoC는 다음 조건을 사용합니다.

  • 영향받는 Spring Framework 버전을 사용합니다.
  • UrlHandlerFilter가 redirect 모드로 등록되어 있습니다.
  • /**처럼 매우 광범위한 패턴이 적용되어 있습니다.
  • 공격자가 //로 시작하는 raw request target을 서버까지 전달할 수 있습니다.
root@kitploit:~
UrlHandlerFilter.trailingSlashHandler("/**")
    .redirect(HttpStatus.PERMANENT_REDIRECT)
    .build();

영향 범위

공식 권고문 기준 영향 artifact:

  • org.springframework:spring-webmvc
  • org.springframework:spring-webflux

영향 버전:

  • Spring Framework 7.0.0 - 7.0.8
  • Spring Framework 6.2.0 - 6.2.19

수정 버전:

수정 버전제공 범위
7.0.9OSS
7.0.8.1Enterprise Support Only
6.2.20Enterprise Support Only

이 PoC가 보여주는 것

UrlHandlerFilterBootServletIntegrationTest (주요 재현)

실제 Spring Boot + embedded Tomcat 애플리케이션을 시작하고 다음 필터를 등록합니다.

root@kitploit:~
UrlHandlerFilter.trailingSlashHandler("/**")
    .redirect(HttpStatus.PERMANENT_REDIRECT)
    .build();

HTTP 클라이언트가 // 경로를 미리 정규화하지 못하도록 raw TCP socket으로 요청을 전송합니다.

  1. embeddedServletContainerEmitsNetworkPathReferenceForDoubleSlashPath
    • GET //attacker.example/ HTTP/1.1을 전송합니다.
    • 308 Permanent Redirect와 Location: //attacker.example을 확인합니다.
    • 브라우저에서 외부 origin으로 해석될 수 있는 취약 동작을 입증합니다.
  2. embeddedServletContainerKeepsExpectedSameOriginRelativeLocationForOrdinaryPath
    • 정상 대조군으로 GET /account/ HTTP/1.1을 전송합니다.
    • Location: /account가 유지되는 것을 확인합니다.

UrlHandlerFilterOpenRedirectTest (보조 테스트)

Servlet 필터 API를 mock 객체로 직접 검증하고 정상 경로 대조군을 확인합니다.

Reactive 보조 테스트에서는 MockServerHttpRequest로 만든 특정 URI가 /attacker.example로 정규화되는 동작을 확인합니다. 그러나 이는 raw WebFlux request-target의 end-to-end 재현이 아니며, WebFlux가 영향받지 않는다는 의미가 아닙니다. Spring 공식 권고문의 영향 범위는 Spring MVC와 Spring WebFlux 모두입니다.

실행 방법

Windows:

root@kitploit:~
.\mvnw.cmd test

macOS/Linux:

root@kitploit:~
./mvnw test

취약 버전 기준 기대 결과:

root@kitploit:~
UrlHandlerFilterBootServletIntegrationTest: Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
UrlHandlerFilterOpenRedirectTest: Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS

테스트 성공은 "취약 동작이 재현되었다"는 의미입니다. 주요 통합 테스트에서는 crafted raw request가 외부 origin으로 해석될 수 있는 Location 값을 생성하며, 정상 요청은 same-origin 상대 경로를 유지합니다.

사용한 의존성

이 저장소는 다음 조합을 사용합니다.

root@kitploit:~
Spring Boot 3.5.14
Spring Framework 6.2.18
Apache Tomcat 10.1.54
Java 17+

Spring Boot와 Tomcat은 PoC 실행 환경이며, 공식 영향 제품은 Spring Framework입니다. PoC에서 사용한 Spring Framework 6.2.18은 공식 영향 범위인 6.2.0 - 6.2.19에 포함됩니다.

왜 위험한가

공격자는 사용자가 신뢰하는 애플리케이션의 URL을 이용해 외부 사이트로 이동하도록 유도할 수 있습니다. 이는 피싱, 신뢰 관계 악용, 후속 자격증명 탈취 시나리오에 사용될 수 있습니다.

공식 CVSS 벡터는 사전 권한이 필요하지 않지만 사용자 상호작용이 필요하며, 기밀성과 무결성 영향을 Low, 가용성 영향을 None으로 평가합니다.

완화 방법

Spring 공식 권고에 따라 사용 중인 지원 채널에 맞는 수정 버전으로 업그레이드해야 합니다. 공식 권고문은 업그레이드 후 별도의 추가 완화 조치가 필요하지 않다고 명시합니다.

Credit

Spring 공식 권고문에는 다음과 같이 기재되어 있습니다.

  • Daehyun Kang (@daehyuh)

참고 링크

  • Spring 공식 권고문: https://spring.io/security/cve-2026-47883/
  • CWE-601: https://cwe.mitre.org/data/definitions/601.html
  • RFC 3986 §4.2: https://www.rfc-editor.org/rfc/rfc3986#section-4.2
  • CVSS v3.1 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N&version=3.1
도구 다운로드