
Fork da https://gitlab.alpinelinux.org/kaniini/secfixes-tracker
Questa è un'applicazione web Flask che tiene traccia delle correzioni di sicurezza in Alpine.
Utilizzando l'Alpine secdb, possiamo generalmente dedurre quali CVE sono state corrette e quali no. Verranno aggiunte alcune estensioni allo schema di reportistica delle secfixes per consentire ai manutentori dei pacchetti di indicare i falsi positivi.
Nel prossimo futuro, le modifiche di stato verranno segnalate a una lista di annunci di sicurezza man mano che il motore le elabora.
Dovresti creare un virtualenv nel solito modo, poi esegui pip3 install -r requirements.txt.
Se vuoi usare un database diverso da sqlite, dovrai installare il relativo driver, ad esempio pip3 install psycopg2.
Infine, dovrai scrivere un file di configurazione: copia quello di esempio e modificalo in base alle tue esigenze.
Dovrai poi impostare queste variabili d'ambiente con valori utili:
SECFIXES_TRACKER_CONFIG: percorso del file di configurazioneFLASK_APP: il nome dell'app, secfixes_trackerUna volta fatto, inizializza il database con flask init-db.
Opzionalmente, esegui make per compilare secfixes-cli. Questo richiede che go sia installato.
Una volta configurato l'ambiente, puoi eseguire varie attività:
flask runAvvia il server web. Può essere fatto anche con gunicorn o simili, ma non è trattato qui.
flask init-dbInizializza il database.
flask import-apkindex [repo]Importa i repository configurati.
flask import-secfixes [repo]Importa i feed secdb configurati.
flask import-nvd [feed-name]Importa un feed NVD, come 2021 o recent.
Una volta importati i feed annuali, devi solo importare il feed recent su base giornaliera.
./secfixes-cli import-vulnrichImporta i dettagli delle CVE da https://github.com/cisagov/vulnrichment.
flask update-states [repo]Aggiorna i vari elementi VulnerabilityState in base ai contenuti attuali dei feed secfixes, NVD e apkindex. Dovrebbe essere eseguito dopo le attività di importazione di cui sopra su base oraria.
Le regole dei rewriter vengono sincronizzate da Alpine infra/docker/secfixes-tracker. Vedi config/README.md per la struttura dei file.
L'app Flask usa CUSTOM_REWRITERS Python in secfixes_tracker/application.cfg (rispecchiato in config/prod.settings.py). Le regole sono funzioni lambda confrontate come cpe_vendor:source_pkgname o cpe_vendor:*.
PACKAGE_EXCLUSIONS nello stesso file esclude i pacchetti che accumulano CVE false positive (es. bridge).
secfixes-cli usa regole basate su expr in config/application.toml (rispecchiato in config/prod.application.toml). Le regole si basano su expr.
Un esempio di regola è il seguente:
[[rewriters]]
predicate = "target_sw == 'python'"
rewrite_rule = "product | lower() | replace('_', '-') | fmt('py3-%s')"
predicate determina se la regola si applica, mentre rewrite_rule determina come il CPE deve essere riscritto. Una terza opzione facoltativa chiamata field specifica quale campo del CPE verrà riscritto. Se non viene fornita, il valore predefinito è product.
Le seguenti variabili sono disponibili nell'ambiente delle espressioni:
vendorproducttarget_swversionfmt è implementato con fmt.Sprintf, ma accetta solo 2 argomenti. Il primo argomento è una stringa o uno slice. Questo rende possibile usarlo con i pipe.
Dovrai eseguire le attività di importazione e poi le attività di update-states. È tutto ciò che serve fare.
La parte relativa alle e-mail è in fase di riprogettazione per adattarsi meglio a come è stato implementato il motore di tracciamento. Tieni d'occhio questo spazio: le istruzioni di configurazione per le e-mail arriveranno a breve.
Al momento, lo schema del database è instabile. Dovrai ricostruire il database quando aggiorni questo software. Una volta raggiunta la versione 1.0, lo schema del database sarà stabile.