50 lines
2.4 KiB
Markdown
50 lines
2.4 KiB
Markdown
# vuln-bsi — BSI WID CSAF WHITE Mirror
|
|
|
|
Spiegelt die öffentlich zugänglichen CSAF-Dokumente des BSI WID / CERT-Bund ab **2017** in das eigene Gitea-Repository.
|
|
|
|
Quelle: https://wid.cert-bund.de/.well-known/csaf/white/index.txt
|
|
|
|
## Einrichtung
|
|
|
|
1. Leeres Repository `VULN/vuln-bsi` in Gitea erstellen; Inhalt dieses Ordners auf `main` pushen.
|
|
2. Auf der Gitea-VM den Cache anlegen:
|
|
|
|
```bash
|
|
sudo install -d -o act_runner -g act_runner -m 700 /var/lib/act_runner/cache/vuln-bsi
|
|
sudo apt update && sudo apt install -y git python3 util-linux ca-certificates
|
|
```
|
|
|
|
3. Actions aktivieren, Runner-Label `vuln-runner` bereitstellen und Workflow manuell starten.
|
|
4. Der Gitea-Job-Token wird über `secrets.GITEA_TOKEN` verwendet. `permissions: contents: write` muss auf der Instanz unterstützt und erlaubt sein.
|
|
|
|
Automatisch: `23 */4 * * *` (UTC). Ein vollständiger Erstlauf kann eine längere Zeit und einige GB Git-Speicher benötigen.
|
|
|
|
## Datenstruktur
|
|
|
|
- `data/index.txt`: unveränderter offizieller Index
|
|
- `data/csaf/YYYY/*.json`: vollständige CSAF-Rohdateien
|
|
- `state/sync.json`: Verzeichnisliste, Prüf-Cursor, letzter erfolgreicher Lauf
|
|
|
|
## Synchronisationslogik
|
|
|
|
- Bei Erstlauf alle Einträge ab 2017 herunterladen.
|
|
- Später neue und fehlende Dateien sowie 300 rotierende Altdateien abrufen; Änderungen werden an den Datei-Inhalten erkannt.
|
|
- Dateien, die aus dem Index verschwinden, erst nach vollständigem erfolgreichem Abruf entfernen.
|
|
- Index, Dateiinhalte und Synchronisationsstatus validieren, dann Commit und Push.
|
|
- **Kein** komplett neuer Git-Checkout bei jedem Lauf: permanenter Checkout unter `/var/lib/act_runner/cache/vuln-bsi/repo`.
|
|
|
|
### Einschränkungen
|
|
|
|
- Geänderte ältere Dokumente werden erst beim rotierenden Prüflauf erkannt. `changes.csv` wird aktuell nicht interpretiert; für schnellere Updates kann diese Quelle später ergänzt werden.
|
|
- Nach einem abgebrochenen Lauf bleibt das Arbeitsverzeichnis bewusst unverändert und muss geprüft werden, bevor ein weiterer Lauf startet. Das verhindert versehentliche Datenverluste.
|
|
- Ein Git-Index mit vielen Rohdaten kann erhebliche Größe erreichen.
|
|
- Der Runner arbeitet direkt auf der Gitea-VM. Nur vertrauenswürdige Workflows verwenden.
|
|
- Ein vollständiger Live-Abruf ist noch nicht verifiziert.
|
|
|
|
### Manuell lokal synchronisieren
|
|
|
|
```bash
|
|
python3 scripts/sync.py --since-year 2017 --full
|
|
python3 scripts/validate.py
|
|
```
|