
Der Credit Score für npm-Pakete. Analysiere den Ruf, die Wartung, die Sicherheit, das Publisher-Vertrauen und die Gesundheit des Ökosystems eines Pakets, bevor du es installierst.
Der Kredit-Score für npm-Pakete.
Revera hilft dir zu entscheiden, ob ein Paket eine Installation wert ist, bevor du npm install ausführst. Es analysiert Paketqualität, Wartung, Sicherheit, Ökosystem-Gesundheit und Publisher-Vertrauen – und propagiert das Risiko jetzt transitiv über deinen gesamten Abhängigkeitsgraphen – und erstellt anschließend einen erklärbaren, Bayes'schen Reputationsbericht.
Beobachte, wie revera Pakete in Echtzeit prüft und erklärt.
Führe revera sofort ohne Installation aus:
npx revera check react
Die Prüfung eines Pakets wie request (das 2020 veraltet wurde) warnt dich sofort mit konkreten Gründen:
$ 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.
Global installieren, um das ausführbare Programm aus jedem Verzeichnis nutzen zu können:
npm install -g @aaravmaloo/revera
Analysiere ein Paket und erhalte einen zusammenfassenden Bericht auf hoher Ebene:
revera check lodash
Im Offline-Modus mit gecachten Dateien ausführen:
revera check express --offline
Erhalte eine detaillierte Aufschlüsselung des Scores, der positiven Signale und der Abzüge:
revera why node-ipc
Prüft Pakete vor der Installation und warnt, wenn die Reputation unter deinen konfigurierten Schwellenwert fällt:
revera add express
Du kannst Flags direkt an deinen Paketmanager weiterreichen:
revera add typescript --save-dev
Prüft alle Pakete im aktuellen Projekt (einschließlich transitiver Abhängigkeiten) und berechnet einen Gesamtscore für die Projektgesundheit:
revera audit
Nur Produktionsabhängigkeiten prüfen:
revera audit --prod
Nur direkte Abhängigkeiten prüfen, transitive Abhängigkeiten überspringen:
revera audit --direct
Authentifiziere dich bei GitHub, um die API-Ratenlimits zu erhöhen (60/Stunde anonym vs. 5.000/Stunde authentifiziert). Du kannst zwischen browserbasiertem OAuth2 oder manueller Eingabe eines Personal Access Tokens wählen. Nach der Autorisierung verschlüsselt revera den Token sicher und speichert ihn im Schlüsselbund deines Betriebssystems (Windows-DPAPI, macOS-Schlüsselbund oder Linux-Secret-Service):
revera login
Verwalte lokale Einstellungen, die in ~/.revera/config.json gespeichert sind:
revera config
revera config set minScoreThreshold 75
revera config get minScoreThreshold
Überprüfe Umgebungseinstellungen, API-Status und Netzwerkverbindungslatenzen:
revera doctor
Lokalen Metadaten-Cache anzeigen oder leeren:
revera cache
revera cache clear
Überprüfe, ob du die neueste Version der revera-Engine ausführst:
revera update
Revera v2 hat das alte flache gewichtete Summenmodell durch eine vierstufige Bayes'sche DAG-Pipeline ersetzt.
Alle Abhängigkeiten im Projekt werden in einem gerichteten azyklischen Graphen aufgelöst. Jeder Knoten verfolgt seine vollständige transitive Abhängigkeitsmenge, damit spätere Stufen genaue Blast-Radien berechnen können.
lodash ──► your-app
express ──► your-app
axios ──► some-lib ──► your-app ← transitive
Jede der 8 Bewertungskategorien startet mit einem archetyp-spezifischen Prior (framework, cli, types-only, utility) statt mit einer flachen, uninformierten Basislinie. Beobachtete Signale aktualisieren ein Posterior einer Beta-Verteilung – das bedeutet, dass ein Timeout oder fehlende Daten das Glaubwürdigkeitsintervall erweitern, anstatt stillschweigend von „sauber“ auszugehen.
Der endgültige paketweise Score ist ein konfidenzgewichteter Gesamtwert der Kategorie-Posteriors (inverse Varianzgewichtung), der sowohl eine Punktschätzung als auch ein 95-%-Glaubwürdigkeitsintervall liefert.
Drei harte Overrides umgehen die Bayes'sche Bewertung vollständig und lassen ein Paket sofort durchfallen:
Nachdem die paketweisen Scores berechnet wurden, wird das Risiko von unten nach oben durch den DAG propagiert (topologische Reihenfolge, zuerst die Blätter):
effectiveRisk einer Abhängigkeit einen Schwellenwert überschreitet, wird das Risiko des übergeordneten Pakets auf mindestens 0,8 festgelegt (als kontaminiert markiert).effectiveRisk × transitive_dependent_count.Der finale Audit-Bericht führt intrinsische Scores, vererbte Kontamination, Glaubwürdigkeitsintervalle und Blast-Radien in einer einzigen nach Rangfolge sortierten Ausgabe zusammen. Der Gesamtscore des Workspace ist ein nach Blast-Radius gewichteter Durchschnitt.
Revera fragt bei jeder Prüfung drei unabhängige Schwachstellen-Datenbanken parallel ab. Die Ergebnisse werden zusammengeführt und nach CVE/GHSA-Alias dedupliziert, bevor sie in die Bewertung einfließen.
Wenn eine Quelle einen Timeout oder Fehler aufweist, laufen die anderen unabhängig weiter. Der VulnResult legt offen, welche Quellen geantwortet haben (sources) und welche fehlgeschlagen sind (failedSources), sodass die Bayes'sche Bewertung das Unsicherheitsintervall angemessen erweitern kann, anstatt von „sauber“ auszugehen.
.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 wird mit einer integrierten Großserien-Benchmark-Suite in benchmarker/ ausgeliefert, die 100k+ npm-Pakete parallel testet und einen einzigen GitHub-lesbaren Bericht erzeugt.
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
Jeder Lauf erzeugt ein eigenständiges Ausgabeverzeichnis mit:
Der v1-Benchmark wurde ausgeführt, bevor die v2-Veto-Prüfungen bereitgestellt wurden. Die Zahlen für bösartige Pakete/Typosquats pro Label spiegeln den Legacy-Algorithmus wider. Eine vollständige v2-Wiederholung wird im nächsten Release veröffentlicht.
BENCHMARK.md)Ohne Token sind anonyme Abfragen auf 60 Anfragen pro Stunde begrenzt. Du kannst in deiner Konfiguration einen Personal Access Token festlegen:
revera config set githubToken ghp_YOUR_TOKEN
Revera greift auf Cache-Dateien zurück. Du kannst Befehle mit dem Flag --offline explizit im Offline-Modus ausführen. Wenn eine Schwachstellenquelle nicht verfügbar ist, erweitert die Bayes'sche Bewertung das Glaubwürdigkeitsintervall für dieses Paket, anstatt von „sauber“ auszugehen.
Revera fungiert als Shell-Wrapper. Es führt nach der Prüfung den echten Paketinstaller aus.
Ein Paket wird als kontaminiert markiert, wenn eine seiner transitiven Abhängigkeiten ein Veto ausgelöst oder kritisch niedrig abgeschnitten hat. Die Audit-Ausgabe zeigt den schlimmsten Teilpfad, damit du die genaue Abhängigkeitskette nachvollziehen kannst, die das Flag verursacht hat.
Jede Schwachstelle wird über ihre CVE-ID, GHSA-ID oder npm-Advisory-ID identifiziert. Wenn dieselbe Schwachstelle in mehreren Quellen erscheint, wird sie zu einem kanonischen Eintrag zusammengeführt. OSV-Daten haben Priorität bei Prosa-Feldern (Zusammenfassung, Details); die höchste Schweregrad-Einstufung und der vollständigste Bereich gepatchter Versionen über alle Quellen bleiben erhalten.
Bitte lies den Leitfaden zum Mitwirken, um mit Setup, Stilregeln und PR-Richtlinien zu beginnen.
Revera liefert einen Reputationswert, der auf beobachtbaren Projektsignalen und historischen Daten basiert. Er soll technische Entscheidungen unterstützen und sollte nicht als endgültiges Sicherheits-Audit behandelt werden.
Revera wird unter der MIT-Lizenz vertrieben.
| Feature | npm audit | osv-scanner | Socket | revera |
|---|
| CVE-Sicherheitslücken | ✔ | ✔ | ✔ | ✔ |
| Mehrere Schwachstellen-Datenbanken | ✖ | Teilweise | ✔ | ✔ |
| Ökosystem-Reputation | ✖ | ✖ | Teilweise | ✔ |
| Erklärbare Bewertung | ✖ | ✖ | Teilweise | ✔ |
| Publisher-Vertrauensprüfung | ✖ | ✖ | Teilweise | ✔ |
| Typosquat-Erkennung | ✖ | ✖ | Teilweise | ✔ |
| Transitive Risikoweitergabe | ✖ | ✖ | ✖ | ✔ |
| Bayes'sche Konfidenzintervalle | ✖ | ✖ | ✖ | ✔ |
| Kategorie | Gewicht | Schwerpunktbereiche |
|---|
| Sicherheit | 20 % | Aktive CVEs (3 Datenbanken), Installationsskripte, Repository-Transparenz |
| Publisher-Vertrauen | 15 % | Protestware-Vergangenheit, absichtliche Sabotage, Kontenübernahme-Vorfälle |
| Wartung | 13 % | Veröffentlichungstakt, aktuelle Commits, Reaktionsquote bei offenen Issues |
| Stabilität | 12 % | SemVer-Konformität, Häufigkeit von Major-Versionen, Pre-1.0-Reife |
| Paketqualität | 13 % | Quelldateigrößen, Lizenz, Exports-Konfiguration |
| Ökosystem | 13 % | Wöchentliche Downloads (logarithmisch skaliert), GitHub-Sterne, Anzahl der Mitwirkenden |
| Dokumentation | 9 % | README-Vollständigkeit, Codebeispiele, API-Referenzabdeckung |
| Entwicklererfahrung | 5 % | Native TS-Typdefinitionen, ESM-Exports, Tree-Shaking-Unterstützung |
| Veto | Auslöser |
|---|
| Kritischer Vertrauensvorfall | Publisher mit bestätigtem Supply-Chain-Angriff oder Protestware-Veröffentlichung |
| Typosquat | Editierdistanz ≤ 1 zu einem Top-N-Paket (z. B. lodahs, expres) |
| Ungepatchte kritische CVE | Eine Schwachstelle mit CRITICAL-Schweregrad, für die keine gepatchte Version verfügbar ist |
| Datenbank | Quelle | Auth erforderlich | Hinweise |
|---|
| OSV (osv.dev) | Google Open Source Security | ✖ | Aggregiert NVD, GitHub Advisory, RUSTSEC und mehr |
| GitHub Advisory DB | GitHub Security | ✖ | Umfangreiche CVSS-Werte + Bereiche gepatchter Versionen |
| npm Advisory | registry.npmjs.org | ✖ | Gleiche Daten wie npm audit; veröffentlicht manchmal vor OSV |
| Datei | Beschreibung |
|---|
BENCHMARK.md | Einzelner GitHub-lesbarer Bericht (Genauigkeit, Erkennung pro Label, Score-Verteilung, Latenz) |
report.html | Interaktiver Browser-Bericht mit Diagrammen |
summary.json | Maschinenlesbare aggregierte Statistiken |
results.jsonl | Ergebnisse pro Paket für alle getesteten Pakete |
comparison.json | Delta zum vorherigen Lauf (Regressionen + Verbesserungen) |
| Label | Pakete | Genauigkeit |
|---|
trusted | 7.051 | 96,6 % |
malicious | 9 | 22,2 % (v1-Baseline — v2-Veto-Prüfungen beheben dies) |
typosquat | 20 | 35,0 % (v1-Baseline — v2-Editierdistanz-Veto behebt dies) |
| Gesamt (gelabelt) | 7.085 | 96,5 % |