Zum Hauptinhalt springen

Beispiel-Repository

Eine neue Organisation hat nichts zu scannen, bis sie Code pusht. Um vorher zu sehen, was die Sicherheitsfunktionen tun, kann ein Owner der Organisation das Sicherheitsbeispiel von fremforge in die Organisation kopieren: ein kleines Repository mit absichtlich veralteten Abhängigkeiten, sodass innerhalb weniger Minuten Befunde, Erreichbarkeitsurteile und ein Pull Request mit einer Sicherheitskorrektur erscheinen.

Anlegen

Unter Sicherheit › Übersicht (/<org>/_admin/security/overview) hat der Punkt Scan-Abdeckung der Einrichtungs-Checkliste eine Schaltfläche Mit einem Beispiel-Repository ausprobieren. Owner der Organisation können sie verwenden; Auditoren wird sie verweigert, wie jede Änderung.

  • Sie legt <org>/fremforge-security-sample an, ein privates Repository, und committet das Beispiel darin in einem einzigen Commit von fremforge. Das Repository wird gescannt, sobald es angelegt ist.
  • Eine Organisation kann ein Beispiel-Repository haben. Ein weiterer Klick meldet, dass es bereits existiert.
  • Gibt es schon ein Repository namens fremforge-security-sample, wird nichts angelegt; benenne dieses Repository zuerst um oder lösche es.
  • Jeder Versuch steht im Audit-Log als code-security.sample_repo.created, mit dem Ergebnis.

Was darin ist

Der Inhalt stammt aus einem festen, geprüften Commit des eigenen Beispiels von fremforge. Er enthält Manifeste, Lockfiles und ein paar Zeilen Code, die die verwundbaren Funktionen aufrufen. Der Quellcode der Abhängigkeiten selbst ist nicht enthalten. Nichts darin wird gebaut, ausgeführt oder deployt: Es gibt keine Workflows und kein Dockerfile. Es steht unter der MIT-Lizenz, und seine README nennt die Advisories, die es zeigen soll:

ÖkosystemPaketVersionAdvisoryErreichbarkeit
npmlodash4.17.20CVE-2021-23337 (Command Injection in template)erreichbar: das Beispiel ruft template auf
npmlodash4.17.20CVE-2020-28500 (ReDoS)kein Aufrufpfad
npmminimist1.2.5CVE-2021-44906 (Prototype Pollution)kein Aufrufpfad: gelistet, nie importiert
Gogolang.org/x/textv0.3.5GO-2021-0113 / CVE-2021-38561 (language.ParseAcceptLanguage)erreichbar: das Beispiel ruft sie auf
PyPIPyYAML5.3.1CVE-2020-14343 (Codeausführung über full_load)erreichbar auf Importebene

Die gepinnten Versionen tragen noch ein paar Advisories mehr als diese. Für jede gibt es eine korrigierte Version, sodass Korrektur-PR öffnen für alle funktioniert. Hat deine Organisation automatische Sicherheitskorrekturen eingeschaltet, öffnen sich Korrektur-Pull-Requests auf dem Beispiel von selbst, wie bei jedem anderen Repository.

Nur in der Konsole

Befunde im Beispiel-Repository erscheinen in der Konsole und in der API, wie alle anderen. Sie verlassen fremforge nie:

Das Beispiel zählt auch nie als Scan-Abdeckung: Der Punkt der Checkliste verlangt weiterhin ein eigenes Repository.

Wann es kein Beispiel mehr ist

Das Beispiel ist nur so lange Inhalt von fremforge, wie sein Standard-Branch dort steht, wo fremforge ihn hinterlassen hat. Sobald jemand auf seinen Standard-Branch pusht oder in ihn mergt (auch das Mergen eines seiner Korrektur-Pull-Requests zählt), wird es ein gewöhnliches Repository: Ab dann lösen seine Befunde Warnungen, Webhooks und SIEM-Ereignisse aus und zählen in anonymen Zahlen und als Scan-Abdeckung, wie bei jedem anderen Repository. Das wird im Audit-Log als code-security.sample_repo.graduated festgehalten. Pushes auf andere Branches, etwa den Branch eines Korrektur-Pull-Requests, ändern nichts.

Entfernen

Lösche das Repository in Forgejo, wenn du fertig bist. fremforge bemerkt das Löschen und vergisst das Beispiel, sodass du später ein neues anlegen kannst. Ein Umbenennen lässt es ein Beispiel bleiben.