Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
scc-check — Spring Cloud Config CVE-2026-40982용 오프라인 체커 — 사용 중인 버전 계열에 OSS 수정 사항이 전혀 있는지 알려줍니다(3.1.x/4.1.x/4.2.x: 없음) | Kitploit
도구/GitHubGitHub/xiaoqimikko/scc-check
Static AnalysisVulnerability ScannersVulnerability AnalysisDevSecOpsSupply Chain Security
GitHubxiaoqimikko/scc-check

scc-check

Spring Cloud Config CVE-2026-40982용 오프라인 체커 — 사용 중인 버전 계열에 OSS 수정 사항이 전혀 있는지 알려줍니다(3.1.x/4.1.x/4.2.x: 없음)

저장소 보기
1개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

scc-check

Spring Cloud Config CVE-2026-40982 오프라인 점검 도구 —— 의존성 제로, 단일 jar, 네트워크 불필요.

이 도구가 답하는 것은 「내가 영향을 받는가」가 아니라, 그 더 괴로운 질문입니다:

내 이 버전 라인은, Maven Central에 올라온 안전한 업그레이드 버전이 대체 있는가?

3.1.x / 4.1.x / 4.2.x 세 라인에 대한 답은 없다입니다.


왜 필요한가

공식 advisory(spring.io/security/cve-2026-40982)에서 제시한 수정 버전:

버전 라인공식 수정 버전가용성Maven Central에서 해당 라인의 최고 버전업그레이드 가능 여부
3.1.x3.1.14Enterprise Support Only3.1.10❌
4.1.x4.1.10Enterprise Support Only4.1.7❌
4.2.x4.2.7Enterprise Support Only4.2.4❌
4.3.x4.3.3OSS4.3.4✅
5.0.x5.0.3OSS5.0.4✅

그 세 수정 버전은 공개 저장소에 없습니다. 누구나 검증할 수 있습니다:

curl -sI https://repo1.maven.org/maven2/org/springframework/cloud/spring-cloud-config-server/4.2.7/
# HTTP/1.1 404 Not Found

그리고 자동화 도구는 이 사실을 알려주지 않는다 —— GitHub advisory의 구조화된 데이터에서, 이 세 가지 라인의 first_patched_version은 바로 null이다:

{"range": "<= 3.1.13",          "first_patched_version": null}
{"range": ">= 4.1.0, <= 4.1.9", "first_patched_version": null}
{"range": ">= 4.2.0, <= 4.2.6", "first_patched_version": null}
{"range": ">= 4.3.0, <= 4.3.2", "first_patched_version": "4.3.3"}
{"range": ">= 5.0.0, <= 5.0.2", "first_patched_version": "5.0.3"}

Dependabot / OSV가 소비하는 것이 바로 이 데이터입니다. 업그레이드 대상이 없으면 업그레이드 제안을 할 수 없습니다.


사용법

java -jar scc-check.jar <目录或 jar/war 路径>

# 中文乱码时(Windows 控制台代码页与 Java 判断常常对不上):
java -jar scc-check.jar target/ --utf8

**Java 17+**가 필요합니다. 런타임 의존성이 전혀 없어 오프라인 환경에 그대로 넣어 사용할 수 있습니다.

종료 코드: 2 버전 라인이 올라갈 수 없음 · 1 영향받지만 업그레이드 가능 / 판정 불가 · 0 미발견 · 3 사용법 또는 경로 오류

검사 대상

  • .jar / .war 파일 이름
  • Spring Boot fat jar 및 war의 내장 의존성(BOOT-INF/lib/, WEB-INF/lib/)
  • jar 내부 Maven 메타데이터(META-INF/maven/.../pom.properties) — jar 이름이 바뀌어도 인식 가능
  • pom.xml

의도적으로 하지 않는 세 가지

1. 클라이언트를 영향받는 것으로 계산하지 않음. 이 CVE는 서버 측 spring-cloud-config-server에만 영향을 줍니다. spring-cloud-starter-config (클라이언트)를 참조한 프로젝트는 영향받지 않으며, 도구가 이를 명확히 알려주어 괜히 긴장하지 않도록 합니다.

2. 4.0.x에 대해서는 판정을 내리지 않음. 공식 advisory의 어떤 구간도 4.0.x를 포함하지 않습니다(4.0.0 > 3.1.13, 하한이 없는 구간에 속하지 않음). 도구는 "공식 커버리지 범위 밖"이라고만 보고하며, CRITICAL로 보고하지 않습니다 — 추측으로 판정표를 채우면 잘못된 결정을 내리게 됩니다.

3. 버전을 읽을 수 없을 때는 "판정 불가"라고 명시하며, 절대 안전으로 처리하지 않음. Spring Cloud는 release train으로 버전을 통합 관리하므로 pom.xml에 <version>이 아예 없는 경우가 많습니다. 이 경우 도구는 문제를 찾지 못한 척하지 않고 빌드 산출물을 스캔하라고 알려줍니다. 마찬가지로 scope가 test / provided인 의존성은 사용자에게 전이되지 않으므로 노출면으로 계산하지 않으며, XML 주석으로 감싸인 의존성은 제거됩니다.


판정표는 생성되는 것이지, 손으로 옮겨 적는 것이 아님

tools/gen_rules.py는 두 개의 1차 데이터 소스로부터 RuleTable.java를 컴파일합니다:

  • GitHub advisory GHSA-6g23-24mc-hx6x → 영향받는 구간 + 공식 수정 버전
  • repo1.maven.org의 maven-metadata.xml → 공개 저장소에 실제로 존재하는 버전

그리고 네 가지 단언을 포함합니다: 구간 수 ≥5, first_patched=null인 것 ≥3, 버전 라인 ≥5, ENTERPRISE_ONLY로 판정된 것 ≥3. 하나라도 충족되지 않으면 즉시 중단하고 파일을 생성하지 않습니다 — 그렇지 않으면 파싱이 한 번 실패할 때 빈 표가 생성되고, 단위 테스트는 빈 표를 상대로도 그대로 통과하게 됩니다.

python tools/gen_rules.py     # 重新生成判定表
mvn test                      # 31 个测试

면책

이 도구는 버전 비교만 수행하며, 당신의 Config Server가 실제로 공인 인터넷에 노출되어 있는지, WAF가 있는지, 다른 방식으로 이미 완화되었는지는 검사하지 않습니다. 판정 결과는 점검의 출발점일 뿐, 보안 결론이 아닙니다. 공식 advisory를 기준으로 삼으십시오.

License

MIT


더 깊은 점검이 필요하신가요?

이 도구가 답하는 것은 「내가 당했는가」입니다. 아래 항목들은 이 도구가 답할 수 없으니, 필요하시면 저에게 의뢰하실 수 있습니다:

  • 의존성이 shade / relocate 되었거나, 빌드 산출물을 아예 확보할 수 없는 경우
  • 판정해야 할 것이 「이 CVE가 우리 호출 체인 상에서 실제로 트리거되는가」인지, 단순 버전 일치 여부가 아닌 경우
  • 여러분의 빌드 프로세스나 내부망 환경에 맞춰 커스터마이징하고 기존 파이프라인에 연동해야 하는 경우
  • 다른 컴포넌트의 동종 문제를 다루고 있는데 아직 기성 도구가 없는 경우

📮 [email protected] —— 상황을 설명해 주시면 24시간 이내에 한 페이지 분량의 서면 답변을 드립니다: 가능한지, 어디가 어려운지, 대략 얼마나 걸리는지. 이 단계는 무료이며, 먼저 무엇을 약속하실 필요도 없습니다.

종료 코드

코드의미
0스캔이 끝났고, 모든 파일을 실제로 읽어 들였으며, 조치가 필요한 발견 사항이 없음
4읽을 수 없는 파일이 있음 —— zip이 아니거나, 내용이 잘렸거나, 읽기에 실패함

🔴 4는 2026-09-09에 추가되었으며, 추가한 이유는 분명히 밝힐 가치가 있습니다. 그 이전에는 읽을 수 없는 파일이 출력에 한 줄 안내만 남기고 종료 코드는 그대로 0 이었습니다 —— 흔적은 사람이 보는 것이고, CI와 스크립트가 보는 것은 종료 코드이므로, 자동화에서는 「내가 그것을 읽지 못했다」가 「통과」와 같았습니다. 손상되었거나 암호화되었거나 다운로드가 불완전한 jar는 조용히 「문제를 발견하지 못함」이라는 한 줄이 되어버렸습니다.

「나는 그것을 읽을 수 없다」와 「당신은 안전하다」는 반드시 서로 다른 말이어야 합니다.

⚠️ 정상적인 빈 jar는 읽을 수 없는 것으로 간주하지 않습니다(22바이트짜리 EOCD 레코드는 진짜 빈 zip입니다), 4를 트리거하지 않습니다 —— 거짓 경보가 많아지면 진짜 경보를 아무도 보지 않게 됩니다.

나머지 종료 코드의 의미는 위의 각 판정 등급 및 사용 설명을 참조하십시오.

도구 다운로드