
npm 패키지용 신용 점수. 패키지를 설치하기 전에 패키지 평판, 유지보수, 보안, 게시자 신뢰도, 생태계 상태를 분석하세요.
npm 패키지용 신용 점수.
Revera는 npm install을 실행하기 전에 패키지를 설치할 가치가 있는지 판단할 수 있게 도와줍니다. 패키지 품질, 유지보수, 보안, 생태계 건강도, 게시자 신뢰도를 분석하고 — 이제 전체 의존성 그래프에 걸쳐 위험을 전이적으로 전파하며 — 설명 가능한 베이지안 평판 리포트를 생성합니다.
revera가 패키지를 실시간으로 검사하고 설명하는 모습을 지켜보세요.
설치 없이 revera를 즉시 실행하세요:
npx revera check react
request(2020년에 폐기(deprecated)된 패키지) 같은 패키지를 확인하면 구체적인 이유와 함께 즉시 경고가 표시됩니다:
$ revera why request
▲ revera EXPLAIN
──────────────────────────────────────────────────
Package: [email protected]
Overall: 38/100 Not Recommended
Score Breakdown
Maintenance 15/100 ███░░░░░░░░░░░░░░░░░
Release cadence, commit activity, issue responsiveness, maintainer count
Stability 90/100 ██████████████████░░
SemVer compliance, major version history, API volatility over time
Security 100/100 ████████████████████
Known CVEs, install scripts, repository transparency
Package Quality 40/100 ████████░░░░░░░░░░░░
README completeness, license, test coverage indicators, exports
Ecosystem 100/100 ████████████████████
Weekly download volume, GitHub stars, community forks
Documentation 90/100 ██████████████████░░
README length, code examples, API references, external docs presence
Developer Experience 40/100 ████████░░░░░░░░░░░░
TypeScript support, ESM compatibility, CLI tooling
Publisher Trust 100/100 ████████████████████
Known malicious releases, protestware history, supply-chain incidents
Why it scores well
+ Stable API (v1.0.0+)
+ Low API volatility
+ Zero known vulnerabilities
+ Permissive open-source license
+ Code examples in README
+ Structured API documentation
+ No known publisher trust incidents
Minor deductions
- Last release was 59 months ago
- Single maintainer (bus factor of 1)
- Missing native type definitions
- Legacy CommonJS only
- No native typings (bad TypeScript DX)
Warnings
! Last release: 59 months ago. No recent updates detected. This may be normal for mature, stable libraries.
! Package has been officially marked as deprecated by the maintainer.
Verdict
Request has low confidence. revera recommends looking for alternatives due to security, activity, or stability concerns.
어느 디렉터리에서든 실행 파일에 접근할 수 있도록 전역으로 설치하세요:
npm install -g @aaravmaloo/revera
패키지를 분석하고 요약 리포트를 확인합니다:
revera check lodash
캐시된 파일을 사용해 오프라인 모드로 실행합니다:
revera check express --offline
점수, 긍정 신호, 감점 요인에 대한 심층 분석을 확인합니다:
revera why node-ipc
설치 전에 패키지를 심사하고 평판이 설정된 임계값 아래로 떨어지면 경고합니다:
revera add express
패키지 관리자에 플래그를 직접 전달할 수 있습니다:
revera add typescript --save-dev
현재 프로젝트의 모든 패키지를 감사하고(전이 의존성 포함) 전체 프로젝트 건강 점수를 계산합니다:
revera audit
프로덕션 의존성만 감사합니다:
revera audit --prod
전이 의존성을 건너뛰고 직접 의존성만 감사합니다:
revera audit --direct
GitHub로 인증하여 API 속도 제한을 높입니다(익명 60회/시간 vs 인증 5,000회/시간). 브라우저 기반 OAuth2 또는 개인 액세스 토큰(Personal Access Token) 수동 입력 중에서 선택할 수 있습니다. 인증이 완료되면 revera는 OS 키링(Windows DPAPI, macOS Keychain, Linux Secret Service)에 토큰을 안전하게 암호화하여 저장합니다:
revera login
~/.revera/config.json에 저장된 로컬 설정을 관리합니다:
revera config
revera config set minScoreThreshold 75
revera config get minScoreThreshold
환경 설정, API 상태, 네트워크 연결 지연 시간을 확인합니다:
revera doctor
로컬 메타데이터 캐시를 확인하거나 삭제합니다:
revera cache
revera cache clear
실행 중인 revera 엔진이 최신 버전인지 확인합니다:
revera update
Revera v2는 레거시 단순 가중 합산 모델을 4단계 베이지안 DAG 파이프라인으로 대체했습니다.
프로젝트의 모든 의존성이 방향성 비순환 그래프(DAG)로 변환됩니다. 각 노드는 전체 전이 의존 집합을 추적하므로 이후 단계에서 정확한 폭발 반경(blast radius)을 계산할 수 있습니다.
lodash ──► your-app
express ──► your-app
axios ──► some-lib ──► your-app ← transitive
8개 점수 범주 각각은 균일한 무정보 베이스라인이 아닌 아키타입별 사전 분포(framework, cli, types-only, utility)에서 시작합니다. 관측된 신호는 베타 분포 사후 확률을 업데이트합니다. 즉, 시간 초과나 데이터 누락이 발생하면 조용히 "깨끗함"으로 기본 처리하는 대신 신뢰 구간이 넓어집니다.
최종 패키지별 점수는 범주 사후 확률의 신뢰도 가중 집계(역분산 가중치)로, 점 추정치와 95% 신뢰 구간을 모두 산출합니다.
세 가지 하드 오버라이드(강제 규칙)는 베이지안 점수 산정을 완전히 건너뛰고 패키지를 즉시 실패 처리합니다:
| 거부(Veto) | 트리거 |
|---|---|
패키지별 점수가 계산된 후 위험은 DAG를 통해 상향식으로 전파됩니다(위상 순서, 리프부터):
effectiveRisk가 임계값을 초과하면 상위 패키지의 위험은 0.8로 최소화(오염됨으로 표시)됩니다.effectiveRisk × transitive_dependent_count.최종 감사 리포트는 고유 점수, 상속된 오염, 신뢰 구간, 폭발 반경을 단일 순위 결과로 통합합니다. 전체 워크스페이스 점수는 폭발 반경에 따른 가중 평균입니다.
Revera는 모든 검사에서 세 가지 독립적인 취약점 데이터베이스를 병렬로 조회합니다. 결과는 점수 산정에 사용되기 전에 CVE/GHSA 별칭으로 병합·중복 제거됩니다.
소스가 시간 초과되거나 오류가 발생하면 나머지 소스는 독립적으로 계속 작동합니다. VulnResult는 응답한 소스(sources)와 실패한 소스(failedSources)를 노출하므로 베이지안 스코어러가 "깨끗함"을 가정하는 대신 불확실성 구간을 적절히 넓힐 수 있습니다.
.github/ # CI configurations
docs/ # Architecture specs and algorithm diagrams
src/
├── commands/ # CLI command handlers (check, why, add, audit, config, cache, update)
├── engine/
│ ├── dag.ts # DAG construction + topological sort + blast-radius computation
│ ├── propagation.ts # Bottom-up transitive risk propagation
│ ├── scoring.ts # Bayesian Beta posteriors, archetype priors, veto checks
│ ├── vuln.ts # Multi-source vuln aggregator (OSV + GitHub + npm)
│ ├── trust.ts # Publisher trust incident database
│ ├── typosquat.ts # Edit-distance typosquat detection
│ ├── npm.ts # npm registry + download stats fetcher
│ └── github.ts # GitHub repo stats + README fetcher
├── ui/ # Console view templates (reporter formatters, theme styles)
└── utils/ # Filesystem helpers (caching, configuration, package managers)
tests/ # Unit test suites
benchmarker/ # Large-scale benchmark suite (100k+ packages)
Revera는 benchmarker/에 내장된 대규모 벤치마크 스위트를 제공하며, 10만 개 이상의 npm 패키지를 병렬로 테스트하고 GitHub에서 읽을 수 있는 단일 리포트를 생성합니다.
cd benchmarker
npm install
npm run fetch-dataset # one-time: pulls ~100k packages into datasets/npm.jsonl
./benchmark.sh --workers 16 # runs the full suite
각 실행은 다음과 같은 자체 포함된 출력 디렉터리를 생성합니다:
v1 벤치마크는 v2 거부 검사가 배포되기 전에 실행되었습니다. 라벨별 malicious/typosquat 수치는 레거시 알고리즘을 반영합니다. 전체 v2 재실행 결과는 다음 릴리스에서 공개될 예정입니다.
BENCHMARK.md)토큰이 없으면 익명 쿼리가 시간당 60회로 제한됩니다. 설정에서 개인 액세스 토큰을 지정할 수 있습니다:
revera config set githubToken ghp_YOUR_TOKEN
Revera는 캐시 파일을 사용하도록 대체합니다. --offline 플래그를 사용해 명령을 오프라인 모드로 명시적으로 실행할 수 있습니다. 취약점 소스를 사용할 수 없으면 베이지안 스코어러는 해당 패키지를 "깨끗함"으로 가정하는 대신 신뢰 구간을 넓힙니다.
Revera는 셸 래퍼 역할을 합니다. 심사 후 실제 패키지 설치 프로그램을 실행합니다.
전이 의존성 중 하나가 거부(veto)를 유발하거나 매우 낮은 점수를 받으면 패키지가 오염된 것으로 표시됩니다. 감사 출력에는 최악의 하위 경로가 표시되므로 플래그를 유발한 정확한 의존성 체인을 추적할 수 있습니다.
각 취약점은 CVE ID, GHSA ID 또는 npm advisory ID로 식별됩니다. 동일한 취약점이 여러 소스에 나타나면 하나의 표준 항목으로 병합됩니다. OSV 데이터는 설명 필드(요약, 세부 정보)에서 우선순위를 가지며, 모든 소스 중 가장 높은 심각도 등급과 가장 완전한 패치 버전 범위가 유지됩니다.
설정, 스타일 규칙, PR 가이드라인을 시작하려면 기여 가이드를 검토하세요.
Revera는 관찰 가능한 프로젝트 신호와 과거 데이터를 기반으로 평판 점수를 제공합니다. 이는 엔지니어링 의사 결정을 돕기 위한 것이며, 결정적인 보안 감사로 취급되어서는 안 됩니다.
Revera는 MIT 라이선스에 따라 배포됩니다.
| 기능 | npm audit | osv-scanner | Socket | revera |
|---|
| CVE 취약점 | ✔ | ✔ | ✔ | ✔ |
| 다중 취약점 DB | ✖ | Partial | ✔ | ✔ |
| 생태계 평판 | ✖ | ✖ | Partial | ✔ |
| 설명 가능한 점수 산정 | ✖ | ✖ | Partial | ✔ |
| 게시자 신뢰도 확인 | ✖ | ✖ | Partial | ✔ |
| 타이포스쿼팅 탐지 | ✖ | ✖ | Partial | ✔ |
| 전이 위험 전파 | ✖ | ✖ | ✖ | ✔ |
| 베이지안 신뢰 구간 | ✖ | ✖ | ✖ | ✔ |
| 범주 | 가중치 | 중점 영역 |
|---|
| 보안 | 20% | 활성 CVE(3개 DB), 설치 스크립트, 저장소 투명성 |
| 게시자 신뢰도 | 15% | 프로테스트웨어 이력, 의도적 사보타주, 계정 탈취 사고 |
| 유지보수 | 13% | 배포 주기, 최근 커밋, 오픈 이슈 응답 비율 |
| 안정성 | 12% | SemVer 준수, 메이저 버전 빈도, 1.0 미만 성숙도 |
| 패키지 품질 | 13% | 소스 파일 크기, 라이선스, exports 설정 |
| 생태계 | 13% | 주간 다운로드 수(로그 스케일), GitHub 스타 수, 기여자 수 |
| 문서화 | 9% | README 완성도, 코드 예제, API 레퍼런스 커버리지 |
| 개발자 경험 | 5% | 네이티브 TS 타입 정의, ESM exports, 트리 셰이킹 지원 |
| 게시자의 확인된 공급망 공격 또는 프로테스트웨어 릴리스 |
| 타이포스쿼팅 | 상위 N개 패키지와의 편집 거리 ≤ 1 (예: lodahs, expres) |
| 패치되지 않은 치명적 CVE | 패치된 버전이 없는 CRITICAL 심각도 취약점 |
| 데이터베이스 | 소스 | 인증 필요 | 비고 |
|---|
| OSV (osv.dev) | Google Open Source Security | ✖ | NVD, GitHub Advisory, RUSTSEC 등을 집계 |
| GitHub Advisory DB | GitHub Security | ✖ | 상세 CVSS 점수 + 패치 버전 범위 |
| npm Advisory | registry.npmjs.org | ✖ | npm audit과 동일한 데이터; OSV보다 먼저 게시하는 경우도 있음 |
| 파일 | 설명 |
|---|
BENCHMARK.md | GitHub에서 읽을 수 있는 단일 리포트(정확도, 라벨별 탐지, 점수 분포, 지연 시간) |
report.html | 차트가 포함된 인터랙티브 브라우저 리포트 |
summary.json | 기계가 읽을 수 있는 집계 통계 |
results.jsonl | 테스트된 모든 패키지의 패키지별 결과 |
comparison.json | 이전 실행 대비 델타(회귀 + 개선) |
| 라벨 | 패키지 수 | 정확도 |
|---|
trusted | 7,051 | 96.6% |
malicious | 9 | 22.2% (v1 베이스라인 — v2 거부 검사로 해결됨) |
typosquat | 20 | 35.0% (v1 베이스라인 — v2 편집 거리 거부 로직으로 해결됨) |
| 전체(라벨링됨) | 7,085 | 96.5% |