Ein Manifest oder Lockfile gegen OSV prüfen

Laden Sie ein Manifest oder Lockfile und drücken Sie Abhängigkeiten prüfen: Die gelesenen Paketnamen, Versionen und Ökosysteme werden bei der OSV-API abgefragt, und die Tabelle zeigt die Antworten mit Schweregrad und korrigierter Version. Die Auswertung läuft in der Seite; gesendet werden nur Paketnamen, Versionen und Ökosysteme.

Gemessen: ein package.json mit acht Abhängigkeiten ergab 13 Funde, requirements.txt ergab 107 Funde für fünf Pakete, und ein Manifest mit express 5.1.0, minimist 1.2.8 und chalk 5.3.0 ergab keinen Fund.

  1. Manifest oder Lockfile ablegen oder den Text einfügen: package.json, package-lock.json, yarn.lock, pnpm-lock.yaml, requirements.txt, pom.xml, eine CycloneDX bom.json oder Zeilen wie „npm lodash 4.17.15“.
  2. Abhängigkeiten prüfen drücken. Während der Abfrage bei der OSV-API zeigt die Statuszeile den Fortschritt.
  3. Die Kennzahlen lesen: geprüfte Pakete, gefundene Meldungen und die abgefragten Ökosysteme.
  4. Den Hinweis unter den Kennzahlen lesen, wenn er erscheint: wie viele Bereiche in ihrer niedrigsten angegebenen Version geprüft wurden, wie viele Einträge keine Version nannten und ob die Grenze von 100 Paketen Einträge ausgelassen hat.
  5. Vor der nächsten Datei Leeren drücken: Textfeld, Tabelle und Kennzahlen werden geleert.

Welche Dateien gelesen werden, was abgefragt wird und was ein leeres Ergebnis heißt

Welche Dateien gelesen werden

Für npm: package.json (dependencies und devDependencies) und die drei Lockfile-Formate package-lock v1/v2/v3, yarn.lock und pnpm-lock.yaml. Für PyPI: requirements.txt. Für Maven: pom.xml samt Intervallen. Eine CycloneDX bom.json deckt npm, PyPI, Maven, NuGet, Go und crates.io ab. Zeilen wie „npm lodash 4.17.15“ werden ebenfalls gelesen. Ein Lockfile ist die bessere Eingabe, weil es die installierte Version enthält statt der Einschränkung.

Was der Leser nicht verwerten kann, beantwortet er mit einem Satz statt mit einer Ausnahme: eine Textdatei, fehlerhaftes JSON und mit @ verbundene Zeilen ergaben „Keine versionierten Abhängigkeiten gefunden“ und die Tabelle blieb leer.

Was abgefragt wird

Bereiche werden in ihrer niedrigsten angegebenen Version abgefragt: Django>=2.2,<3.0 als 2.2, das Maven-Intervall [4.3.0,4.3.30] als 4.3.0. Die Spalte Version zeigt den Text aus dem Manifest („>=2.2“, „[4.3.0,4.3.30]“) und nicht den abgefragten Wert, damit die Zeile mit der Datei verglichen werden kann.

Einträge ohne Registry-Version werden ausgelassen und im Hinweis gezählt: git-URLs mit Tag, file:, workspace:*, latest, *, ${property}-Verweise aus einem pom und eine CycloneDX-Komponente ohne purl. Abgefragt werden höchstens 100 Pakete; ein Manifest mit 120 Einträgen sendete genau 100 Abfragen und vermerkte das unter den Kennzahlen.

Was die Ergebnisse bedeuten

Jede Zeile ist eine Meldung: Paket, geprüfte Version, Kennung und Kurzfassung, Schweregrad und korrigierte Version. Früher wurden die Details nur für 40 Meldungen geholt, sodass spätere Zeilen bei Schweregrad Unknown und Behoben in „—“ blieben; jetzt werden alle geholt, und ein Manifest mit 83 Meldungen ergab 83 Zeilen, jede mit Schweregrad und mit der korrigierten Version, die OSV für das Paket nennt.

Kein Fund heißt nicht, dass das Paket sicher ist: eine danach veröffentlichte Meldung fehlt, und wird ein Bereich in seiner niedrigsten Version geprüft, bleibt der Rest des Bereichs ungeprüft. Ist die OSV-API nicht erreichbar, sagt die Seite das, statt ein leeres Ergebnis zu zeigen; ein HTTP 503 wird als solcher gemeldet. Die Meldungen werden sechs auf einmal mit je 20 Sekunden Grenze geholt, damit eine hängende Verbindung die Prüfung nicht offen lässt: die betroffenen Zeilen kommen mit Schweregrad Unknown zurück.

Zuletzt verwendet: