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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
fad-checker — 빌드 없이 동작하는 의존성 감사 도구로, 10개 생태계를 오프라인으로 스캔하여 CISA KEV와 EPSS로 우선순위가 지정된 CVE, EOL 패키지, 라이선스, 커밋된 키, 바이너리를 보고하며 SBOM 및 SARIF 내보내기를 지원합니다. | Kitploit
도구/GitHubGitHub/9pings/fad-checker
Defensive ToolsStatic AnalysisVulnerability ScannersVulnerability AnalysisCode AnalysisConfiguration AuditingDevSecOpsSecret DetectionSupply Chain Security
GitHub9pings/fad-checker

fad-checker

빌드 없이 동작하는 의존성 감사 도구로, 10개 생태계를 오프라인으로 스캔하여 CISA KEV와 EPSS로 우선순위가 지정된 CVE, EOL 패키지, 라이선스, 커밋된 키, 바이너리를 보고하며 SBOM 및 SARIF 내보내기를 지원합니다.

1323일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

fad-checker

npm version npm downloads license node CI

Formidable Auditor's Dependency Checker
일명 Fuckin' Autonomous Dependency Checker

fad-checker는 모든 소스 트리에서 Maven · Gradle · npm · Yarn · pnpm · Composer · PyPI · NuGet · Go · Ruby, 벤더링된 JavaScript, 커밋된 네이티브 바이너리, 그리고 암호화 자료(인증서 및 개인/공개 키)를 감사합니다. 멀티 모듈, 모노레포, 폴리글랏을 지원하며, 자체 완결형 HTML + Word 보고서(EPSS + CISA KEV로 우선순위가 지정된 CVE, EOL, 폐기됨, 구버전, 라이선스)와 CycloneDX SBOM / CSAF VEX / SARIF / JSON 내보내기를 생성합니다. 빌드 도구, Docker, 네트워크가 필요 없습니다; 디스크에서 직접 lockfile과 매니페스트를 읽습니다.

🌐 프로젝트 사이트 및 문서 →

fad-checker animated terminal demo: an offline Maven audit — dependencies absent from Maven Central flagged as private/internal, the 15-step vulnerability-database checklist, then findings coloured by severity

기능

  • 한 번에 10개 생태계; Maven, Gradle, npm/Yarn/pnpm, Composer, PyPI, NuGet, Go, Ruby — 그리고 벤더링된 JS, 커밋된 네이티브 바이너리(체크섬으로 식별), 내장 JAR(fat-jar/war/ear, 메모리에서 열림).
  • 빌드 도구 불필요; 매니페스트와 lockfile을 디스크에서 읽습니다. mvn/gradle/npm install/pip/dotnet restore/go build 없음, node_modules/ 없음. Maven 그래프는 Maven이 해석하는 방식대로 해석됩니다. → 방법
  • CVE, 병합 및 우선순위 지정; CVEProject + OSV.dev + NVD, CPE/버전 교차 검증으로 오탐 감소, CISA KEV → EPSS → CVSS 순으로 순위 지정.
  • CVE 그 이상; EOL 및 활성 지원 종료 프레임워크, deprecated/abandoned/yanked, 릴리스 날짜가 있는 구버전, SPDX 라이선스, 그리고 비공개/내부 패키지 — 구성된 레지스트리가 모르는 모든 좌표, 모든 생태계에서.
  • 암호화 자료; 커밋된 인증서(만료, 취약한 키, 취약한 서명, 자체 서명), PEM/OpenSSH/PuTTY/PGP 및 JKS/PKCS#12 키스토어 전반의 개인 키 vs 공개 키. 오프라인으로 파싱, 네트워크 불필요.
  • 에어갭; --offline에서 네트워크 제로, 회귀 테스트 및 unshare -rn에서 재현 가능. Maven에서 네트워크 인터페이스 없이 OSV-Scanner의 결과 을 복구하며, 다른 도구들은 45 / 40 / 37입니다. → ·

📖 사용법 및 모든 플래그 · 아키텍처 · 다른 도구와의 비교 · 데이터 소스

코드 감사에 fad-checker를 사용하는 이유

다른 도구들이 하지 않는, 감사를 위해 수행하는 작업. docs/COMPARISON.md와 동일한 열 구성 및 소싱 규율 — ⚠️는 부분적이며 어떻게 그런지 명시하고, 셀은 검증 가능하도록 설계되었습니다.

¹ mvn/go/npm/pip/dotnet 없음 — 매니페스트를 디스크에서 파싱, 아무것도 설치하거나 실행하지 않음. 한 번에 105 × pom.xml: 790 쌍 vs OSV-Scanner의 657, 133개는 fad 전용, 버전은 평탄화되지 않고 모듈별로 중재됨.

² unshare -rn 하에서 OSV-Scanner의 온라인 Maven 결과 657 중 657 — 네트워크 인터페이스 없음. 트립와이어 테스트됨; 공개 좌표만이 엔클레이브를 떠남.

³ 챕터 0은 모든 구성된 레지스트리가 404를 반환한 모든 좌표를 나열합니다 — Maven, npm, PyPI, NuGet, Composer, Go 및 RubyGems — 이를 선언한 매니페스트와 함께. 타임아웃되거나 오류가 발생한 레지스트리는 절대 집계되지 않습니다: 결정적이지 않은 응답은 그렇지 않으면 프록시가 불안정했다는 이유로 클라이언트가 내부 패키지를 배포한다고 비난할 것이기 때문입니다. 그런 다음 -e <regex>로 이를 제외합니다.

⁴ -t <dir>: 정규화된 POM과 모든 비-Maven lockfile이 미러링되고, 비공개 좌표는 제거됨. 아카이브 가능하며, 무엇이든 스캔 가능 — --snyk 포함.

⁵ endoflife.date, 직접 vs 전이로 분리하여 어떤 의존성을 올려야 하는지 알 수 있음, 그리고 deprecated / abandoned / yanked 및 구버전 포함. Trivy는 OS 배포판만 커버; Snyk의 패키지 상태는 웹 전용.

⁶ 인벤토리 및 판정: 만료, RSA<2048, MD5/SHA1, 자체 서명; 개인 키 vs 공개 키; JKS/PKCS#12. 오프라인 파서. Trivy의 시크릿 규칙은 파일을 찾지, 결함을 찾지 않음.

⁷ deps.dev + CIRCL을 통한 해시로 식별 → 선언되어야 함 / 이름≠체크섬 / 알 수 없음 / 악성. Syft의 패턴은 버전을 명명하지, 정체성을 명명하지 않음.

⁸ 챕터 0은 이 스캔이 도달할 수 없었던 것(누락된 lockfile, BOM 전용 버전, Yarn Berry, 결정 불가능한 PHP 런타임)을 표시; 챕터 6.3은 도구가 절대 평가하지 않는 것을 명시. 다른 곳에서는 첫 번째는 감사가 결코 보지 못하는 로그 라인이고, 두 번째는 기록되지 않음.

⁹ 출처 매니페스트: 13개 소스 모두에 대한 도구, 런타임, 모드, 실행 구성 및 캐시 신선도. Grype와 Dependency-Check는 실행이 아닌 한 소스의 날짜만 담음.

¹⁰ 경영 요약과 수정 레시피가 있는 챕터 0→6, 자체 완결형 HTML과 Word .doc 쌍둥이. 다른 어떤 도구도 Word를 출력하지 않음.

¹¹ 네 개의 인라인 SVG 차트 — 최악 심각도별 CWE, 루트 의존성당 취약한 전이 의존성, 가장 취약한 모듈(단일 모듈 프로젝트에서 직접 vs 전이), 수정 우선순위 밴드 — .doc에도 렌더링되며, PNG로 원클릭 복사(또는 테이블을 리치 HTML로)하면 서식이 유지된 채 Word에 붙여넣어짐. 모든 CVE는 드릴다운 뒤에 CVSS 벡터, CWE, 참조, CPE 구성 및 경유 경로를 유지하며, 외부 자산이 전혀 없음.

¹² --baseline은 Δ 챕터(신규 / 수정됨 / 변경 없음)를 추가; --fail-on-new는 새로운 발견 사항만으로 게이트. Snyk는 이를 로컬 diff가 아닌 자사 플랫폼에서 추적.

약점 — 컨테이너/OS 패키지, 자동 수정 PR, 그리고 Snyk의 큐레이션된 피드 대비 CVE 커버리지 → docs/COMPARISON.md · 측정된 격차.

의도적으로 목표가 아닌 것: 도달 가능성. 발견 사항은 의존성 그래프상의 취약한 버전이며, 보고서는 호출 경로를 추측하는 대신 정확히 그렇게 명시합니다(6.3장). 취약한 코드가 이 애플리케이션에서 도달 가능한지 결정하는 것은 어떤 스캐너도 가질 수 없는 애플리케이션 컨텍스트를 가지고 내리는 감사자의 판단입니다.

[!WARNING] fad-checker는 새로 나왔으며 (드물게) 버그가 여전히 있을 수 있습니다. 출력을 강력한 1차 점검으로 취급하고, 중요한 것은 무엇이든 재확인하시고, 이슈를 보고해 주세요; 빠르게 수정됩니다.

빠른 시작```bash

npm install -g fad-checker fad-checker -s ./my-project # → ./fad-checker-report/cve-report.html

root@kitploit:~
무료 [NVD API 키](https://nvd.nist.gov/developers/request-an-api-key)(즉시 발급)를 사용하면 10배 더 빠른 보강이 가능합니다: `fad-checker --set-nvd-key YOUR_KEY`. 몇 가지 일반적인 실행 방법은 다음과 같으며, 전체 목록은 `fad-checker --help` 또는 [docs/USAGE.md](https://github.com/9pings/fad-checker/blob/main/docs/USAGE.md)에서 확인할 수 있습니다:```bash
fad-checker -s ./proj -e "^com\.acme\."                        # exclude private libs (coord regex)
fad-checker -s ./proj -t ../clean -e "^com\.acme\."            # extract only: normalised descriptors, private modules flagged
fad-checker -s ./proj -t ../clean -e "^com\.acme\." -a snyk   # same extraction + scan + merge Snyk
fad-checker -s ./proj --offline                                # fully offline (zero network, needs a warmed cache)
fad-checker -s ./proj -a osv-db,typosquat                      # offline-complete OSV + typosquat
fad-checker -s ./proj -a licenses --fail-on high               # license chapter + CI gate
fad-checker -s ./proj --report-json --baseline last.json --fail-on-new   # differential audit: fail CI on NEW findings
fad-checker diff last.json this.json                           # standalone diff of two findings JSONs

-t <dir>가 실제로 하는 일. 이것은 추출 단계이지 Snyk 어댑터가 아니다. 이 단계는 정규화된 의존성 디스크립터의 병렬 트리를 작성한다. 즉, 모든 pom.xml을 의존성 관련 노드(좌표, properties, dependencyManagement, dependencies, modules)로 축소하고, 리액터 부모를 실제 트리 내 relativePath로 재연결하며, 좌표 내 ${…}를 해석한다. 그리고 모든 비-Maven lockfile/manifest를 동일한 상대 경로에 미러링한다(package-lock/yarn.lock/pnpm-lock, composer.lock, poetry/Pipfile//, /, /, , 그리고 나 같은 동반 파일). 온라인에서는 또한 하고 그곳에 존재하지 않는 것들 — 즉 — 을 보고하며, 가 재작성된 POM에서 이를 제거한다. 그런 다음 한다. , , 또는 을 함께 전달하지 않는 한 CVE/EOL 검사도 보고서도 없다. 얻게 되는 것은 빌드 없이 정제된 의존성 인벤토리로, 감사 증거로 보관하거나, 고객이나 법률 검토에 전달하거나, 어떤 스캐너든 가리킬 수 있다 — 를 통한 Snyk도 그중 하나다.

[!IMPORTANT] --offline은 캐시를 읽을 뿐, 대체하지 않는다. 콜드 캐시에서는 대조할 대상이 없으므로, 오프라인 첫 실행이 0 CVE / 0 EOL / 0 outdated를 보고하는 것은 정당하다. 그것은 빈 캐시이지 깨끗한 프로젝트가 아니다. 한 번 워밍한 후(어떤 프로젝트에서든 일반 온라인 실행, 또는 --import-cache), --offline은 네트워크 호출 없이 전체 결과 집합을 반환한다. 에어갭 머신은 --export-cache / --import-cache를 통해 캐시를 얻는다.

단일 자체 포함 바이너리(Node 불필요), 소스 설치 및 셸 완성은 → docs/USAGE.md에 있다.

무엇을 찾아내는가

보고서는 루트 챕터(각각 관련 하위 챕터를 묶음)로 구성된다:

HTML 보고서는 모든 브라우저에서 열리며, 모든 세부 정보(CVSS 벡터, 참조, 전체 설명, CPE 구성, 전이적 의존성의 via-path)를 담고 있으며 Word 호환 .doc 쌍둥이를 제공한다. 모든 매치는 복합 우선순위(KEV 악용 > EPSS 가능성 > CVSS 심각도)를 가지며, 실행은 추가로 CycloneDX 1.6 SBOM(--report-sbom, 취약점 인라인)과 CSAF 2.0 VEX(--report-csaf)를 다운스트림 도구용으로 출력할 수 있다.

fad-checker HTML report; executive summary with severity tiles and a detailed CVE table with CWE, descriptions and fix versions

커버리지, 솔직하게: Snyk가 보고하고 fad-checker가 하지 않는 쌍

어떤 도구도 모든 것을 찾지 못한다. fad-checker는 **908쌍 합집합의 87%**에서 앞서며, 131쌍은 Snyk에서 반환되었고 이 도구에서는 나오지 않았다. OSV에 대해 하나씩 판정한 결과, 어느 것도 재현율 버그가 아니다:

3분의 2가 공개 기록과 모순되므로, 이를 보고한다는 것은 오탐을 배포한다는 뜻이다. CVE-2023-6481이 명확한 예시다. [email protected]에 대해 주장되지만, 실제로는 logback-core의 [1.2.12, 1.2.13)에 결부된다 — 잘못된 아티팩트이며, 그 버전은 결함이 존재하기 전에 게시되었다.

범위. 131개 모두 Snyk의 것이다. OSV-Scanner, Trivy, Grype+Syft는 각각 다른 누구도 갖지 못한 발견 사항을 0개 기여했다. 그리고 모두 Maven 대상에 있다 — Maven 밖에서는 그래프가 lockfile에 있고, 모든 스캐너가 동일한 입력을 읽으며, 벤치마크는 npm, RubyGems, Composer에서 동일한 발견 집합을 측정한다.

이것이 --snyk가 존재하는 이유다. fad-checker는 snyk test 출력을 입력으로 받아 병합하므로, 편을 선택하는 대신 합집합을 얻는다. 교정이 아니라 커버리지 선택이다.

방법, 주의 사항 및 쌍별 판정 → docs/BENCHMARK.md; scripts/adjudicate-gap.js로 재현.

에어갭 감사

제로 데이터 전송 보장. --offline에서는 fad-checker가 어떠한 네트워크 호출도 하지 않는다; 워밍된 ~/.fad-checker/ 캐시만 읽고 의존성, 경로, 발견 사항을 머신 밖으로 절대 전송하지 않는다. 이는 회귀 테스트되며(test/offline-guarantee.test.js, 건드리면 예외를 던지는 트립와이어 fetcher), 감사자가 재현할 수 있다: unshare -rn node fad-checker.js -s ./proj --offline …는 네트워크 인터페이스가 없는 네임스페이스에서 실행하며 바이트 단위로 동일한 발견 사항을 산출한다. 주류 OSS 스캐너와 달리, fad는 Maven 전이 그래프도 오프라인으로 해석한다. 따라서 에어갭 다중 모듈 프로젝트에서 그들이 찾지 못하는 전이적 CVE를 찾아낸다.

감사 대상 시스템이 오프라인 / 기밀(규제 또는 에어갭 감사의 전형)일 때는 OSV / NVD / Maven Central / npm에 도달할 수 없다. 보안 인클레이브 밖으로 어떠한 환경 정보도 내보내지 않으면서 작업을 여러 머신에 분할한다: 익명화된 디스크립터는 공개 패키지 좌표만 담는다; 파일시스템 경로도, 레지스트리 URL도, 호스트명/사용자명도 없다; 그리고 상세 보고서는 오프라인 머신에서 다시 생성된다.

전송은 fad-checker 캐시의 한 가지 속성에 의존한다: 캐시는 좌표 또는 취약점 id로 키가 지정되며 결코 경로로 키가 지정되지 않으므로 머신 독립적이다. 온라인 단계는 단지 캐시를 워밍할 뿐이고, 오프라인 단계는 스캔을 재생하여 캐시 히트를 얻는다.```bash

── Phase 1; OFFLINE (audited machine): export the anonymized descriptor ──

Exclude private/internal packages with -e (offline we can't tell private from public).

fad-checker -s ./proj -e "^(client|internal)." --export-anonymized deps.json

→ deps.json: public coordinates only. Review it before it leaves the enclave.

── Phase 2; ONLINE (any machine, no source needed): warm the caches ──

fad-checker --import-anonymized deps.json # scans coordinates → OSV/NVD/CVE/registry/EOL + retire signatures fad-checker --export-cache fad-cache.tar.gz # bundle the warmed ~/.fad-checker/

── Phase 3; OFFLINE (audited machine): full report, all local context ──

fad-checker --import-cache fad-cache.tar.gz # merged into the enclave's own cache fad-checker -s ./proj --offline # re-collect locally (real paths) + cache hits

→ full HTML/.doc report with manifests & structure, generated inside the enclave.

root@kitploit:~
디스크립터(`fad-deps/1`)가 포함하는 것과 버리는 것:

| 유지 (스캔에 필요) | 버림 (환경) |
| --- | --- |
| ecosystem, ecosystemType | manifest 경로 / pom 경로 |
| namespace, name | 확인된 레지스트리 URL |
| version, versions | 무결성 해시 |
| scope, isDev | 부모 체인, lockfile 유형 |

온라인 단계 보고서 자체는 경로가 없으며, vendored-JavaScript(retire.js) 발견 사항은 retire가 실제 `.js` 파일을 필요로 하므로 **3단계에서 오프라인으로** 생성됩니다. retire의 시그니처 DB는 온라인(2단계)에서 준비되며 `--export-cache`로 전달됩니다. 전체 오프라인/캐시 제어 → [`docs/USAGE.md`](https://github.com/9pings/fad-checker/blob/main/docs/USAGE.md).

## 문서

- [`docs/USAGE.md`](https://github.com/9pings/fad-checker/blob/main/docs/USAGE.md); 모든 플래그와 워크플로: 오프라인/캐시 제어, 프라이빗 레지스트리, 설정 파일, 레시피, 안전 장치.
- [`docs/ARCHITECTURE.md`](https://github.com/9pings/fad-checker/blob/main/docs/ARCHITECTURE.md); 내부 구조: 코덱, 수집, 매칭, 보고서 파이프라인.
- [`docs/COMPARISON.md`](https://github.com/9pings/fad-checker/blob/main/docs/COMPARISON.md); OSV-Scanner / Trivy / Grype / OWASP DC / Snyk와의 비교, 그리고 빌드 없이 유지되는 방식.
- [`docs/BENCHMARK.md`](https://github.com/9pings/fad-checker/blob/main/docs/BENCHMARK.md) — 공개 105개 모듈 프로젝트에서 OSV-Scanner와 비교한 재현 가능한 에어갭 리콜 벤치마크.
- [`docs/DATA-SOURCES.md`](https://github.com/9pings/fad-checker/blob/main/docs/DATA-SOURCES.md); fad-checker가 사용하는 공개 데이터셋과 그 라이선스.
- [`docs/SPEC-audit-pro.md`](https://github.com/9pings/fad-checker/blob/main/docs/SPEC-audit-pro.md); 감사 등급 기능(출처, 차등 감사, 방법론/무결성)과 각 기능이 그렇게 만들어진 이유.
- [`CHANGELOG.md`](https://github.com/9pings/fad-checker/blob/main/CHANGELOG.md) · [`CLAUDE.md`](https://github.com/9pings/fad-checker/blob/main/CLAUDE.md); 릴리스 이력 · 기여자를 위한 코드 수준 안내.

## 기여

신생 스캐너에 가장 유용한 기여는 **어디가 틀렸는지 알려주는 것**입니다: 실제 프로젝트에서 실행해 보고, 문제를 일으킨 좌표와 manifest 스니펫을 포함하여 [거짓 양성 / 거짓 음성 보고서](https://github.com/9pings/fad-checker/issues/new?template=false_positive.yml)를 제출하세요. 개발 환경 설정, 기본 규칙, 코덱 확장 지점 → [`CONTRIBUTING.md`](https://github.com/9pings/fad-checker/blob/main/CONTRIBUTING.md). fad-checker 자체의 취약점 → [`SECURITY.md`](https://github.com/9pings/fad-checker/blob/main/SECURITY.md) (비공개로 보고해 주세요).

**AI 지원에 관하여:** 이 코드베이스는 Claude Code를 많이 활용하여 작성되었습니다; 저장소 루트의 [`CLAUDE.md`](https://github.com/9pings/fad-checker/blob/main/CLAUDE.md)는 이름 그대로입니다. 이 코드베이스가 충족해야 하는 기준은 직접 확인할 수 있는 것입니다: **847개 테스트**(`npm test`), 트립와이어 테스트로 강제되고 `unshare -rn`에서 재현 가능한 제로 네트워크 보장, 그리고 주장이 아닌 Snyk 기준선에 대해 측정된 커버리지 수치. `fad-checker` 자체는 런타임에 **LLM을 사용하지 않습니다**; 발견 사항은 공개 취약점 데이터베이스와 결정적 파서에서 나오며, 보고서 텍스트는 생성되지 않습니다. 리뷰가 실제로 잘못된 발견 사항을 잡아낸 사례를 포함한 전체 성명 → [`AI_POLICY.md`](https://github.com/9pings/fad-checker/blob/main/AI_POLICY.md). 코드가 그 기준을 충족하지 못하는 곳이 있다면, 그것은 제가 원하는 버그 보고서입니다.

## 라이선스

MIT; [`LICENSE`](https://github.com/9pings/fad-checker/blob/main/LICENSE) 참조.
도구 다운로드
온라인
657/657
벤치마크
에어갭
  • 공급망 위험; 알려진 악성 권고(항상 CI 게이트를 차단) 및 의심되는 타이포스쿼팅(--typosquat).
  • 감사 등급; 모든 보고서에는 출처 매니페스트와 방법론 및 한계 챕터가 포함됩니다. 아티팩트에는 SHA256SUMS가 함께 제공됩니다. 차분 감사는 이전 실행과 비교(--baseline)하며 CI는 새로운 발견 사항만으로 게이트할 수 있습니다.
  • 화면에 맞는 --help; 스위치의 긴 꼬리는 네 개의 플래그로 접힙니다 — -d eol,nvd는 기능을 끄고, -a licenses,snyk는 기본적으로 꺼져 있는 것을 켜고, -r html,json은 출력을 선택하고, -o는 위치를 지정합니다. 개별 플래그도 여전히 작동하며 --help-all이 이를 나열합니다.
  • 영어 또는 프랑스어 보고서 (--lang fr)
  • 출력 및 CI; 기본적으로 HTML + findings JSON(--report-doc 시 Word .doc), CycloneDX 1.6 SBOM, CSAF 2.0 VEX, SARIF 2.1.0, JSON; --fail-on으로 게이트, --ignore/--vex로 트리아지. 모든 생태계에 대한 비공개 레지스트리.
  • 감사자가 실제로 해야 하는 일fadOSVTrivyGrype+SyftOWASP DCSnyk
    툴체인 설치 없이 100개 모듈 폴리글랏 모노레포를 한 명령으로 감사 ¹✅ 105개 모듈⚠️ 리액터 건너뜀⚠️ ~/.m2 필요⚠️ 옵트인⚠️ Java 빌드⚠️ mvn 빌드
    전이 의존성을 누락하지 않고 오프라인/에어갭 스캔 ²✅ 657/657❌⚠️ ~/.m2⚠️ 옵트인⚠️ 미러❌
    대규모 프로젝트 전반에서 비공개/내부 의존성 식별 ³✅❌❌❌❌❌
    정제된 의존성 디스크립터를 외부 디렉터리로 추출 ⁴✅ -t❌❌❌❌❌
    EOL / deprecated 프레임워크 및 의존성 보고, 전이 의존성 포함 ⁵✅⚠️ deprecated만⚠️ OS 배포판만❌❌⚠️ 웹 UI만
    커밋된 키 및 인증서 보고 ⁶✅❌⚠️ 키 규칙❌❌❌
    커밋된 바이너리 발견(.dll, .exe, …) 및 체크섬 대조 ⁷✅❌⚠️ 일부⚠️ 패턴❌❌
    스캔되지 않은 것을 명확히 나열 — 클라이언트가 묻기 전에 ⁸✅ ch. 0 + 6.3⚠️ 로그⚠️ 로그⚠️ 로그⚠️ 로그⚠️ 로그
    6개월 후 "무엇을 기준으로?"에 답변 ⁹✅❌❌⚠️ DB 날짜⚠️ NVD 날짜❌
    JSON 덤프가 아닌 보고서 전송 ¹⁰✅ HTML + .doc⚠️ HTML 목록⚠️ 템플릿❌⚠️ HTML 목록⚠️ snyk-to-html
    차트, CVE별 드릴다운, 붙여넣기 가능한 Word 사본 ¹¹✅❌❌❌❌❌
    변경된 것만 보여주는 델타 보고서 생성 ¹²✅ --baseline❌❌❌❌⚠️ 클라우드
    uv
    pdm
    *.csproj
    packages.lock.json
    go.mod
    go.sum
    Gemfile.lock
    Directory.Packages.props
    nuget.config
    구성된 Maven 저장소에 대해 모든 좌표를 프로브
    사설/내부 모듈
    -e <regex>
    중단
    --snyk
    --report-<type>
    --fail-on*
    --baseline
    --snyk
    챕터출처무엇을 잡아내는가
    0. 경고 (상단)로컬 휴리스틱누락된 lockfile, 해석되지 않은 Maven 버전(BOM 관리), Maven Central에 없는 사설 라이브러리
    Δ. 베이스라인 이후 변경 (상단, --baseline 사용 시)이전 JSON과의 diff카테고리별 신규 / 수정 / 미변경 발견 사항 + 신규 프로덕션 CVE 목록; 반복 감사 및 --fail-on-new CI 게이팅용
    1. CVE (X 직접, Y 간접, Z dev)CVEProject + OSV.dev + NVD + CPE1.1 프로덕션; 프로덕션 의존성의 공개 CVE / GHSA, 에코시스템별, manifest별, CISA KEV + EPSS + CVSS로 우선순위 지정 · 1.2 벤더링된 JS 취약점 (retire.js) · 1.3 Dev (test/provided, dev/optional/peer) · 1.4 오탐 가능성 (CPE 필터링)
    2. 관리되지 않거나 버전이 없는 컴포넌트deps.dev + CIRCL (체크섬 기준), retire.js, 내장 X.5092.1 임베디드 바이너리; 커밋된 .jar/.war/.ear 내부에 포함된 라이브러리의 CVE(fat-jar, shaded uber-jar) · 2.2 네이티브 바이너리 (.dll/.exe/.so/.dylib) 해시로 식별, should-be-managed / name≠checksum / unknown / malicious 플래그 · 2.3 벤더링된 JavaScript 인벤토리(jQuery, Bootstrap, …) 취약 여부와 무관 · 2.4 인증서 & 키 자료; 커밋된 인증서(만료 / 약한 키 / 약한 서명 / 자체 서명), 개인 키 vs 공개 키 (PEM/OpenSSH/PuTTY/PGP/SSH) 및 키스토어, 모두 오프라인으로 파싱
    3. 유지보수 / 라이프사이클 (X EOL, Y obsolete, Z outdated)endoflife.date · 큐레이션 + 레지스트리 플래그 · Maven Central / npm / Packagist / PyPI / NuGet3.1 수명 종료(EOL) 프레임워크 (--eol-support 사용 시 "활성 지원 종료" 밴드 포함; Symfony/Laravel은 프레임워크당 한 행으로 그룹화; Composer 제약이 입증할 때 PHP 런타임), 직접(선언됨 / 부모 POM 상속 — 이것들을 올려야 함) vs 전이적(이들을 끌어오는 의존성을 올려야 함)으로 분할 · 3.2 구식 / deprecated / abandoned / yanked · 3.3 구버전 (더 새로운 버전 사용 가능, 릴리스 날짜 포함; 직접 의존성만)
    4. 라이선스 (옵트인: --licenses)레지스트리 메타데이터 + Maven POM → SPDX 정책각 의존성의 라이선스를 SPDX로 정규화하고 분류; copyleft(GPL/AGPL/LGPL/MPL), proprietary 및 unknown은 검토 대상으로 플래그
    5. 수정 권장 사항계산됨에코시스템별 핀 레시피: Maven <dependencyManagement>, Gradle constraints { }, npm overrides, yarn resolutions, composer require, pip install, dotnet add package
    6. 스캔 컨텍스트 & 한계출처 manifest + walk6.1 스캔된 디스크립터 (파싱된 모든 manifest) · 6.2 무시된 디렉터리 (가지치기된 경로 + 규칙) · 6.3 방법론, 데이터 출처 & 한계 (데이터 출처 신선도, 실행 구성, fad-checker가 평가하지 않는 것에 대한 명시적 진술)
    공급망 위험 (교차 관점)OSV MAL-… + 이름 휴리스틱알려진 악성 패키지(모든 --fail-on 수준에서 항상 CI 게이트를 차단) 및 의심되는 타이포스쿼트 (--typosquat: 인기 패키지에서 한 편집 거리인 npm/PyPI 이름; lodahs↔lodash)
    판정
    57잘못된 아티팩트 — 권고가 다른 좌표에 결부됨
    31범위 밖 — 버전이 선언된 모든 영향 범위 밖에 있음
    23OSV에 없음 — 19개의 독점 SNYK-* id, 4개는 NVD에만 있음
    19Maven 바인딩 없음 — 권고가 Maven 패키지에 전혀 결부되지 않음
    1이미 보고됨, CVE 별칭으로
    0확인된 누락