
npmパッケージの信用スコア。パッケージをインストールする前に、パッケージの評判、保守状況、セキュリティ、公開者の信頼性、エコシステムの健全性を分析します。
npmパッケージの信用スコア。
Reveraは、npm installを実行する前にパッケージをインストールする価値があるかどうかの判断を支援します。パッケージ品質、メンテナンス、セキュリティ、エコシステムの健全性、パブリッシャーの信頼性を分析し、依存関係グラフ全体にリスクを推移的に伝播させて、説明可能なベイズ流のレピュテーションレポートを生成します。
reveraがパッケージをリアルタイムで検査・解説する様子をご覧ください。
インストール不要ですぐにreveraを実行:
npx revera check react
requestのようなパッケージ(2020年に非推奨となった)を検査すると、具体的な理由とともに即座に警告します:
$ 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レート制限を引き上げます(匿名は1時間あたり60回、認証済みは1時間あたり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)に解決されます。各ノードは完全な推移的依存セットを追跡するため、後続のステージで正確なブラスト半径を計算できます。
lodash ──► your-app
express ──► your-app
axios ──► some-lib ──► your-app ← transitive
8つのスコアリングカテゴリはそれぞれ、フラットな無情報ベースラインではなく、アーキタイプ固有の事前分布(framework、cli、types-only、utility)から始まります。観測されたシグナルはベータ分布の事後分布を更新します。つまり、タイムアウトやデータ欠落は「クリーン」として暗黙に扱うのではなく、信用区間を広げることになります。
最終的なパッケージごとのスコアは、カテゴリ事後分布の信頼度重み付き集計(逆分散重み付け)であり、点推定値と95%信用区間の両方を生成します。
3つのハードオーバーライドはベイズスコアリングを完全にバイパスし、パッケージを即座に不合格とします:
| 拒否権 | トリガー |
|---|---|
パッケージごとのスコアが計算された後、リスクはDAGをボトムアップで(トポロジカル順序、まずリーフから)伝播します:
effectiveRiskがしきい値を超えると、その親のリスクは0.8にフロアリングされます(taintedとしてフラグ付け)。effectiveRisk × transitive_dependent_count。最終的な監査レポートは、固有スコア、継承されたtaint、信用区間、ブラスト半径を1つのランク付けされた出力に統合します。ワークスペース全体のスコアは、ブラスト半径による加重平均です。
Reveraは毎回のチェックで3つの独立した脆弱性データベースを並行して照会します。結果はスコアリングに使用される前に、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パッケージに対して並列でテストし、1つの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)トークンがない場合、匿名クエリは1時間あたり60リクエストに制限されます。設定でPersonal Access Tokenを設定できます:
revera config set githubToken ghp_YOUR_TOKEN
Reveraはキャッシュファイルを使用してフォールバックします。--offlineフラグを使用してコマンドを明示的にオフラインモードで実行できます。脆弱性ソースが利用できない場合、ベイズスコアラーはクリーンと想定するのではなく、そのパッケージの信用区間を広げます。
Reveraはシェルラッパーとして機能します。スクリーニング後に実際のパッケージインストーラーを実行します。
パッケージは、その推移的依存関係の1つが拒否権をトリガーした場合、または重大な低スコアを記録した場合にtaintedとマークされます。監査出力には最悪のサブパスが表示されるため、フラグの原因となった正確な依存チェーンを追跡できます。
各脆弱性はCVE ID、GHSA ID、またはnpm advisory IDによって識別されます。同じ脆弱性が複数のソースに出現した場合、1つの正規エントリにマージされます。OSVデータは散文フィールド(要約、詳細)で優先され、すべてのソースの中で最も高い深刻度評価と最も完全なパッチ済みバージョン範囲が保持されます。
セットアップ、スタイルルール、PRガイドラインを始めるには、コントリビューションガイドをご確認ください。
Reveraは、観測可能なプロジェクトシグナルと過去のデータに基づいてレピュテーションスコアを提供します。これはエンジニアリング上の意思決定を支援することを目的としており、決定的なセキュリティ監査として扱われるべきではありません。
ReveraはMITライセンスの下で配布されています。
| 機能 | npm audit | osv-scanner | Socket | revera |
|---|
| CVE脆弱性 | ✔ | ✔ | ✔ | ✔ |
| 複数の脆弱性DB | ✖ | 一部 | ✔ | ✔ |
| エコシステムのレピュテーション | ✖ | ✖ | 一部 | ✔ |
| 説明可能なスコアリング | ✖ | ✖ | 一部 | ✔ |
| パブリッシャー信頼性チェック | ✖ | ✖ | 一部 | ✔ |
| タイポスクワット検出 | ✖ | ✖ | 一部 | ✔ |
| 推移的リスク伝播 | ✖ | ✖ | ✖ | ✔ |
| ベイズ信頼区間 | ✖ | ✖ | ✖ | ✔ |
| カテゴリ | 重み | 重点領域 |
|---|
| セキュリティ | 20% | アクティブなCVE(3つのDB)、インストールスクリプト、リポジトリの透明性 |
| パブリッシャーの信頼性 | 15% | プロテストウェアの履歴、意図的なサボタージュ、アカウント乗っ取りインシデント |
| メンテナンス | 13% | 公開頻度、最近のコミット、オープンイシューへの対応率 |
| 安定性 | 12% | SemVer準拠、メジャーバージョンの頻度、1.0未満の成熟度 |
| パッケージ品質 | 13% | ソースファイルサイズ、ライセンス、エクスポート設定 |
| エコシステム | 13% | 週間ダウンロード数(対数スケール)、GitHubスター、コントリビューター数 |
| ドキュメント | 9% | READMEの充実度、コード例、APIリファレンスの網羅性 |
| 開発者体験 | 5% | ネイティブTS型定義、ESMエクスポート、ツリーシェイキング対応 |
| パブリッシャーに確認済みのサプライチェーン攻撃またはプロテストウェアのリリースがある |
| タイポスクワット | トップ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% |