72c7e1ad41230313b0aa3d20f1fc1ffc2951740c
vuln-suse-vex
Eigener Gitea-Mirror der SUSE CSAF 2.0 VEX-Dokumente (je CVE) ab 2017.
Die bereits angelegte Gitea-Adresse ist https://git.apex-project.de/VULN/vuln-suse-vex.
Quelle
- Offizielle SUSE-Quelle:
https://ftp.suse.com/pub/projects/security/csaf-vex.tar.bz2 - Ausgabe:
data/vex/YYYY/CVE-YYYY-NNNN.json - Der Downloader verwendet
If-None-MatchundIf-Modified-Sincesoweit die Quelle diese Header unterstützt. - Hinweis: Bei einem geänderten Tar-Archiv wird das vollständige Archiv erneut geladen. Das ist kein echtes File-Delta. Das Repository selbst verwendet einen persistenten Git-Checkout.
- Kein Fallback auf möglicherweise veraltete Mirrors. Bei Fehlern bleibt der letzte Datenbestand unverändert.
Erstinstallation
- Leeres Gitea-Repository
VULN/vuln-suse-vexanlegen. - Dateien committen und nach
mainpushen. - Auf der Gitea-VM:
sudo apt update
sudo apt install -y git python3 ca-certificates util-linux bzip2
sudo install -d -o act_runner -g act_runner -m 700 /var/lib/act_runner/cache/vuln-suse-vex
- Actions aktivieren. Runner-Label
vuln-runnerverwenden.secrets.GITEA_TOKENmuss Schreibrechte besitzen. - Workflow
SUSE VEX Mirrormanuell starten; danach alle 6 Stunden zur Minute 49 UTC.
Fehlerbehandlung
- Ein unterbrochener Import lässt möglicherweise
?? data/zurück. Das Skript bewahrt diese Dateien und synchronisiert sie bei gleichbleibendem Remote-Commit erneut. - Wenn sich
maingeändert hat und der Cache uncommittete Dateien enthält, wird aus Sicherheitsgründen abgebrochen. Keinesfallsgit clean -fdodergit reset --hardauf diese Daten anwenden, ohne sie vorher zu prüfen. - Eine geänderte Quelldatei wird zunächst vollständig heruntergeladen und erst nach erfolgreicher Archiv- und JSON-Validierung verarbeitet.
- Nach einem unterbrochenen Commit/Push lokale Git-Historie prüfen.
- Lokaler Test:
python3 -m unittest discover -s tests -v.
Grenzen
- Keine Integration von separaten SUSE-Advisories; diese liegen in
vuln-suse. - Der Feed kann größer als mehrere hundert MB sein; ausreichend Platz für Archiv, JSON-Dateien und Git-Historie vorsehen.
state/sync.jsonwird für einen erfolgreichen Snapshot aktualisiert. Die zusätzliche HTTP-Metadatei bleibt nur auf der VM.- Vor produktiver Freigabe einen kompletten Live-Import testen.
Languages
Python
84.2%
Shell
15.8%