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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
jackson-check — jackson-databind + jackson-core 26개 보안 공지 자체 점검: 좌표별로 하나씩 교집합을 구해 실제로 안전한 버전을 제시(2.18.11/2.21.7/2.22.3/3.1.7/3.2.3, 2.21.6은 더 이상 충분하지 않음); 소스 코드를 스캔해 노이즈를 줄여 실제로 몇 개나 해당되는지 알려줌; GitHub 전역 라이브러리에 등재되지 않았고 Dependabot이 보고하지 않는 1건 포함(jackson-core 건으로, databind를 올려도 그대로 해당됨) CVE-2026-54515 / CVE-2026-54512 | Kitploit
도구/GitHubGitHub/xiaoqimikko/jackson-check
Vulnerability ScannersStatic Code Analysis (SAST)Vulnerability AnalysisDevSecOpsSupply Chain Security
GitHubxiaoqimikko/jackson-check

jackson-check

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
218일 전아직 검토되지 않음

소개

jackson-databind + jackson-core 26개 보안 공지 자체 점검: 좌표별로 하나씩 교집합을 구해 실제로 안전한 버전을 제시(2.18.11/2.21.7/2.22.3/3.1.7/3.2.3, 2.21.6은 더 이상 충분하지 않음); 소스 코드를 스캔해 노이즈를 줄여 실제로 몇 개나 해당되는지 알려줌; GitHub 전역 라이브러리에 등재되지 않았고 Dependabot이 보고하지 않는 1건 포함(jackson-core 건으로, databind를 올려도 그대로 해당됨) CVE-2026-54515 / CVE-2026-54512

공유

jackson-check

jackson-databind + jackson-core 총 26건의 보안 공지 자체 점검 도구. 의존성 없는 단일 jar, 네트워크 연결 없음.

Dependabot이 답할 수 없는 세 가지 질문에 답합니다:

  1. Dependabot에 등록되지 않은 그 항목, 나는 해당되는가? —— 2026-10-05 기준으로 jackson-core의 CVE-2026-68498 한 건만 남아 있습니다(「v0.3.0」 섹션 참조).
  2. 이 26건 중 나는 실제로 몇 건에 해당되는가? —— 소스 코드를 스캔하여 트리거 조건(@JsonView / 다형 타입 / 대소문자 구분 없는 매칭……)을 찾아, 「영향받는 버전이 설치됨」을 「실제로 그 기능을 사용함」으로 노이즈를 줄입니다.
  3. 도대체 어느 버전으로 올려야 하는가? —— 각 advisory가 제시하는 수정 버전이 서로 일치하지 않으므로, 항목별로 교집합을 구해야 답이 나옵니다.
java -jar jackson-check.jar ./target ./src

🔴 v0.4.0(2026-10-05): "한 번에 수정" 버전이 또 바뀌었다 —— 2.18.11 / 2.21.7 / 2.22.3 / 3.1.7 / 3.2.3

09-30과 10-01에 FasterXML이 또 4건의 high를 발표했다(모두 7.5, 모두 서비스 거부):

번호좌표주제트리거 조건
CVE-2026-91776jackson-databind알 수 없는 type id마다 프로세스 수명 주기 동안 캐시에 한 항목씩 남아 메모리가 늘기만 하고 줄지 않음@JsonTypeInfo(use = Id.NAME, defaultImpl = …) + 공격자가 type id를 제어 가능 + mapper를 장기간 재사용
CVE-2026-91777jackson-databind전방 참조를 역순으로 정의 보충할 때 비교 횟수가 약 N²/2(N=2000 → 2,003,000회)신뢰할 수 없는 JSON을 @JsonIdentityInfo가 붙은 컬렉션이나 Map으로 역직렬화
CVE-2026-89425jackson-core기형 token이 통째로 예외 메시지에 이어 붙여지며 maxErrorTokenLength 제한을 받지 않음createParser(DataInput) 경로만 해당; 공지에 완화 가능한 설정이 없다고 명시됨
CVE-2026-89407jackson-coreNumberInput.looksLikeValidNumber() 정규식의 이차 백트래킹(16만 문자 실측 74.4초)JSON의 문자열을 숫자 필드에 바인딩할 때(databind 기본 동작); 이 경로는 maxNumberLength(기본 1000)가 아니라 maxStringLength(기본 2000만)의 제약을 받음

두 좌표의 수정 버전은 동일 번호다: 2.18.11 / 2.21.7 / 2.22.3 / 3.1.7 / 3.2.3(Central에서 모두 다운로드 가능; 89407은 3.2 계열에서 3.2.2에서 수정, 89425는 3.2.3이 필요하므로 큰 쪽을 택함).

따라서 v0.2.0 / v0.3.0이 출력하던 2.18.10 / 2.21.6 / 2.22.2 / 3.1.6 / 3.2.2는 09-30부터 부족하다. 구버전 jar는 이 사실을 알지 못한다 —— v0.4.0으로 다시 스캔하라.

⚠️ 이 네 건은 Dependabot 사각지대가 아니다: 공개 당일 GitHub 전역 취약점 DB에 등재되었고, Dependabot이 정상적으로 경고한다. v0.4.0이 이들을 병합한 것은 "어느 버전으로 올려야 하는가"라는 답을 올바르게 유지하기 위해서일 뿐이다.

🔴 동시에 v0.2.0의 한 주장을 정정한다: 아래 "v0.2.0" 절에 쓰인 "그 4건은 GitHub 전역 취약점 DB에 수록되지 않아 Dependabot이 보고하지 않는다"는 09-14 기준으로는 성립했으나 2026-09-28부터 성립하지 않는다 —— 네 건 모두 전역 DB에 수록되었다 (gen_rules.py의 ASSERT2를 10-05에 재실행: databind 측 사각지대 4 → 0). 현재 유일하게 여전히 조회되지 않는 것은 jackson-core의 CVE-2026-68498이다.

🔴 v0.3.0(2026-09-21): jackson-core는 또 다른 좌표이며, databind를 스캔해도 찾을 수 없다

v0.2.x의 판정표 전체에는 artifactId가 jackson-databind 하나뿐이었다. 그래서 FasterXML이 jackson-core 저장소에서 발표한 7건의 공지를 이 도구는 하나도 스캔해내지 못한다 —— 그렇다고 해서 오류를 보고하지도 않고, 그저 모든 jackson-core-*.jar를 조용히 건너뛴다. "스캔되지 않음"과 "당신은 안전함"은 보고서에서 똑같이 보인다.

v0.3.0은 판정 단위를 advisory × groupId × 구간에서 **advisory × groupId × artifactId × 구간**으로 바꾸어, 판정, 교집합 계산, "이 좌표를 스캔하지 못함" 모두 완전한 좌표를 키로 삼는다.

가장 주의해야 할 항목 —— CVE-2026-68498(high 7.5, 2026-09-12): StreamReadConstraints.maxNameLength(기본 5만 문자)가 문자 입력 경로에서 적용되지 않았다. ReaderBasedJsonParser가 속성명을 누적할 때 호출하는 것은 문자열 길이 상한(기본 1억, 약 2000배)이며, 실제 name 검증은 전체 key를 다 스캔한 뒤에야 실행된다 —— 그때는 이미 약 200MB가 할당된 상태다. 초장문 JSON key 하나만으로도, 기본 설정에서 그대로 걸린다.

  • 영향 범위: >= 2.16.0, <= 2.18.9 → 2.18.10 · >= 2.19.0, <= 2.21.5 → 2.21.6 · >= 2.22.0, <= 2.22.1 → 2.22.2 · 3.x(tools.jackson.core) <= 3.1.5 → 3.1.6 · <= 3.2.1 → 3.2.2
  • 바이트 입력은 걸리지 않음: UTF8StreamJsonParser는 버퍼를 확장할 때마다 재검증한다. byte[] / InputStream에서 파싱하는 경우는 영향받지 않고, String / Reader / char[]에서 파싱하는 경우만 걸린다.
  • 바이트코드 실측 양방향: validateNameLength 호출은 수정 버전의 ReaderBasedJsonParser에만 존재하며, 취약 버전에는 없다(2.18.9→2.18.10 · 2.21.5→2.21.6 · 3.1.5→3.1.6 세 계열 모두 재현).

⚠️ 도구 능력의 경계, 오해를 피하기 위해 여기에 적어 둡니다: 이 도구는 jar 버전은 판별할 수 있지만, 당신의 호출 방식은 판별할 수 없습니다 —— readValue(someStringVariable, …) 같은 가장 흔한 작성 방식에서, 텍스트 스캔으로는 그 변수가 String인지 byte[]인지 알 수 없습니다. 따라서 「트리거 조건을 찾지 못함」은 당신이 영향을 받지 않는다는 뜻이 아닙니다. 보고서에도 그렇게 인쇄됩니다.

🔴 「Dependabot이 jackson-core에 전혀 눈이 멀었다」로 읽지 마세요: jackson-core의 7건 중 CVE-2026-68498 단 한 건만 GitHub 전역 취약점 데이터베이스에서 조회되지 않으며, 나머지 6건은 모두 등재되어 Dependabot이 정상적으로 경고합니다. 이 한 건은 gen_rules.py의 ASSERT-C2가 매번 재실행 시 재검증하며, 숫자가 바뀌면 생성을 거부합니다.

v0.2.0(2026-09-14): 08-21 / 09-01에 4건이 또 발표되었으나, 당시 GitHub 전역 취약점 데이터베이스에 등재되지 않음

🔴 이 절은 09-14의 기록이며, 두 곳이 이미 지났습니다(위의 「v0.4.0」 참조): ① 이 4건은 2026-09-28에 전역 데이터베이스에 등재되어, Dependabot이 이제 보고합니다. ② 「한 번에 수정」하는 버전은 더 이상 2.18.10 / 2.21.6 / 3.1.6이 아닙니다. 원문은 보존하며, 삭제하지 않습니다.

FasterXML이 자사 저장소의 Security 페이지에 4건을 새로 발표했습니다:

번호등급주제수정 버전
CVE-2026-68497high 7.5문자열을 javax.xml.datatype.Duration / XMLGregorianCalendar에 바인딩할 때 숫자 길이에 상한이 없음 → CPU DoS(기본 mapper로도 가능)2.18.10 / 2.21.6 / 2.22.2 / 3.1.6 / 3.2.2
CVE-2026-19032medium 5.3java.nio.file.Path 역직렬화 시 URI scheme을 제한하지 않아 임의의 등록된 FileSystemProvider를 구동할 수 있음상동
CVE-2026-83557medium 5.6기본 PolymorphicTypeValidator의 거부 목록에서 Comparable이 누락됨상동
CVE-2026-77310medium 5.3CVE-2026-54514 수정이 불완전함: InetAddress 분기가 여전히 즉시 DNS 조회를 수행함2.18.9 / 2.21.5 / 2.22.1 / 3.1.5 / 3.2.1

항목별 실측:

  • GitHub 전역 advisory 데이터베이스에서 GHSA 번호로 조회하면 전부 404, 좌표로 역조회해도 찾을 수 없음 —— Dependabot은 보고하지 않음. 대조: 이전 몇 건은 발표 후 511일 만에 전역 데이터베이스에 등재되었음(06-16 → 06-23, 07-10 → 07-21), 이 4건은 09-14 기준 이미 1324일 경과.
  • OSV에서 Maven 좌표로 조회해도 찾을 수 없음: 이 CVE 기록들은 Git 커밋 구간만 있을 뿐, jackson-databind:2.21.5 조회는 빈 결과를 반환.
  • 따라서 v0.1에서 제시한 「한 번에 수정」 버전 2.18.9 / 2.21.5 / 3.1.5로는 부족하며, 새로운 답은 2.18.10 / 2.21.6 / 2.22.2 / 3.1.6 / 3.2.2(Central에서 모두 다운로드 가능).
  • advisory 원문은 77310의 2.22 계열 수정 버전을 2.21.1로 적었으나(구간은 >= 2.22.0, < 2.22.1), 본 도구는 구간에 따라 2.22.1로 정정하고 생성 시 출력합니다.
# 照 v0.1 的建议已经升到 2.21.5 的项目
java -jar jackson-check.jar ./lib ./src
#   你的版本落在受影响区间内的:3 条
#   其中 Dependabot 会报的:0 条
#   🔴 其中 Dependabot 看不见的:3 条(GitHub 全局漏洞库还没收录,按 GHSA 号查 404)
#   现在 2.21.5  →  升到 2.21.6

트리거 조건 스캔 두 항목 추가:

  • CVE-2026-19032: advisory 원문은 JDK 내장 provider만 있을 때 결과가 무해하다고 말한다. 이 도구는 아티팩트 내의 META-INF/services/java.nio.file.spi.FileSystemProvider를 스캔하여 서드파티 provider를 나열한다(실측으로 jimfs를 인식함); 소스에 java.nio.file.Path가 있고 의존성에 서드파티 provider가 있어야만 「모두 성립」으로 판정한다.
  • CVE-2026-68497: javax.xml.datatype.Duration / XMLGregorianCalendar만 인식하고, java.time.Duration은 인식하지 않는다(그것은 어디에나 있어서 인식하면 노이즈 감소가 없는 것과 같다).

🔥 세 가지 실측 결론(v0.1, 2026-08-07; 버전 번호는 v0.2.0에서 업데이트됨)

一、advisory에 가장 많이 등장하는 그 버전으로 올려도 여전히 세 가지에 걸린다

2026년 이 11개 중 8개가 수정 버전을 2.21.4 / 2.18.8 / 3.1.4라고 적고 있다. 그대로 올린 사람들은 다 고쳤다고 생각했다.

실제로 항목별로 교집합을 구한 답은:

유지보수 브랜치advisory상 가장 흔한 버전실제로 완전한 버전
2.18.x2.18.82.18.9
2.21.x2.21.42.21.5
2.22.x—2.22.1
3.1.x3.1.43.1.5
3.2.x—3.2.1

목표를 가장 높이는 것은 이 세 가지다:

  • CVE-2026-54515 —— 대소문자 비구분 역직렬화 우회로 속성별 @JsonIgnoreProperties 무력화

  • CVE-2026-59889 —— @JsonView가 @JsonUnwrapped 컨테이너 속성에 대해 무효화됨

  • 🔴 GHSA-mhm7-754m-9p8w —— CVE 번호 없음, advisory 원문에 직접 적혀 있기를:

    해당 수정 사항은 2.21 또는 2.18로 백포트되지 않았습니다 … 공개된 권고에 따라 업그레이드한 2.21.4 및 2.18.8 사용자는 여전히 취약합니다

    이것은 패치 공백이다: 3.x 라인은 수정했지만 2.18 / 2.21 라인의 백포트가 누락되었다. CVE 번호가 없기 때문에 CVE 번호로는 검색할 수 없다.

한 번 실행하면 볼 수 있다:

# 已经升到 2.21.4 的项目
java -jar jackson-check.jar ./lib ./src
#   Dependabot 会报给你:3 条
#   🔥 注意:如果你照着 advisory 里出现最多的那个修复版升,以下 3 条仍然中

二、Jackson 3은 groupId를 변경했는데, advisory가 두 좌표의 버전 범위를 서로 뒤바꿔 붙였다

좌표Maven Central에 실제로 게시된 적 있음
com.fasterxml.jackson.core:jackson-databind2.x만
tools.jackson.core:jackson-databind3.x만

그리고 advisory의 구조화된 필드에는:

  • com.fasterxml.jackson.core에 3.x 구간 6건이 걸려 있고, 수정 버전 3.1.4 → 해당 좌표에서 HTTP 404
  • tools.jackson.core에 2.x 구간 1건이 걸려 있고, 수정 버전 2.21.4 → 마찬가지로 HTTP 404

advisory를 그대로 베끼는 도구는 존재하지 않는 것을 설치하라고 하게 된다. 이 도구는 판정표를 생성할 때 하나하나 HEAD 요청으로 실제 가져올 수 있는지 측정하고, 가져올 수 없는 것은 보고서에 표시하며 업그레이드 권고로 인쇄하지 않는다.

两个坐标的 artifactId 和 jar 文件名一模一样,只有 META-INF 里分得清 —— 所以本工具按坐标判定,不按文件名。

三、노이즈 감소: 11건 중 대부분은 해당 기능을 사용한 코드에서만 성립한다

도구 다운로드