
Questo repository fornisce script one-liner semplici ma potenti progettati per aiutarti a determinare rapidamente se il tuo server è vulnerabile a CVE-2024-3094, una vulnerabilità di sicurezza critica trovata in alcune versioni dell'utilità xz. Inoltre, offriamo un modo conveniente per scansionare i tuoi repository di codice alla ricerca di riferimenti alla libreria xz, che potrebbero indicare potenziali vulnerabilità indirette.
Per accertare se il tuo server è suscettibile a CVE-2024-3094, esegui il seguente comando nel tuo terminale:
(type dpkg &>/dev/null && dpkg -l xz 2>/dev/null | awk '/^ii/{print $3}' | grep -qE '^(5.6.0|5.6.1)$' && echo "Vulnerable: CVE-2024-3094" || echo "Not vulnerable or xz not installed") || (type rpm &>/dev/null && rpm -q --qf "%{VERSION}\n" xz 2>/dev/null | grep -qE '^(5.6.0|5.6.1)$' && echo "Vulnerable: CVE-2024-3094" || echo "Not vulnerable or xz not installed")
Il comando sopra controllerà i pacchetti nella distribuzione Linux.
Oppure prova questa altra opzione in cui verrà eseguito il comando xz, di solito non raccomandato:
command -v xz &>/dev/null && { xz_version=$(xz --version | head -n 1 | awk '{print $4}'); [[ $xz_version == "5.6.0" || $xz_version == "5.6.1" ]] && echo "Vulnerable: CVE-2024-3094" || echo "Not vulnerable: CVE-2024-3094"; } || echo "xz not installed"
Questo script esegue le seguenti azioni:
xz è installata.xz.Per i team che utilizzano Docker e sono preoccupati per le vulnerabilità all'interno delle loro immagini container, offriamo un esempio sofisticato che utilizza Trivy, uno scanner di vulnerabilità open-source di Aqua Security. Questo metodo scansiona le immagini Docker alla ricerca di vulnerabilità, inclusa CVE-2024-3094, e fornisce un output chiaro sullo stato di sicurezza dell'immagine.
Il seguente comando utilizza Trivy per scansionare un'immagine Docker (debian:experimental-20240311) per vulnerabilità e filtra i risultati per CVE-2024-3094 relativa a liblzma5:
docker run --rm -v $('pwd'):/project -w /project aquasec/trivy:latest image --format cyclonedx --scanners vuln --output /project/result.json debian:experimental-20240311@sha256:16cc2b09c44d991d36f63153f13a7c98fb7da6bd2ba9d7cc0f48baacb7484970 && jq -r '.components[] | .properties[] | select(.name == "aquasecurity:trivy:PkgID" and (.value | tostring | test("liblzma5@(5\\.6\\.0|5\\.6\\.1)"))) | .value' result.json | grep -qE '5\.6\.0|5\.6\.1' && echo "Vulnerable: CVE-2024-3094" || echo "Not vulnerable or liblzma5 not found"
Come funziona:
Comando Docker Run: Avvia un container Trivy, montando la directory corrente come volume nel container. Questa configurazione permette a Trivy di scrivere i risultati della scansione direttamente in un file (result.json) nella directory corrente dell'host.
Scansione Trivy: Scansiona l'immagine Docker specificata per vulnerabilità, restituendo i risultati nel formato CycloneDX (un formato standardizzato per i software bill of materials).
Elaborazione con jq: Filtra i risultati della scansione per identificare il pacchetto liblzma5 e controlla le versioni "5.6.0" o "5.6.1".
Verifica vulnerabilità: Utilizza grep per cercare versioni vulnerabili di liblzma5. Stampa "Vulnerable: CVE-2024-3094" se trovato; altrimenti, restituisce "Not vulnerable or liblzma5 not found".
Questo metodo è altamente efficace per pipeline automatizzate e può essere adattato per verificare varie vulnerabilità in diverse immagini Docker, assicurando che i tuoi deployment siano sicuri.
Per utilizzare il comando fornito per scansionare le tue immagini Docker, segui questi passaggi per personalizzare il comando in base alle tue esigenze:
Sostituisci l'immagine Docker: Cambia debian:experimental-20240311@sha256:16cc2b09c44d991d36f63153f13a7c98fb7da6bd2ba9d7cc0f48baacb7484970 con l'immagine che desideri scansionare. Puoi specificare la tua immagine tramite nome e tag (ad es., yourimage:yourtag) o tramite il suo digest.
Modifica il controllo di vulnerabilità: Se stai cercando vulnerabilità diverse da CVE-2024-3094, modifica le espressioni jq e grep per indirizzare i pacchetti e le versioni specifici pertinenti alle vulnerabilità di interesse.
Ad esempio, per scansionare la tua immagine denominata yourimage:yourtag:
docker run --rm -v $('pwd'):/project -w /project aquasec/trivy:latest image --format cyclonedx --scanners vuln --output /project/result.json yourimage:yourtag && jq -r '.components[] | .properties[] | select(.name == "aquasecurity:trivy:PkgID" and (.value | tostring | test("liblzma5@(5\\.6\\.0|5\\.6\\.1)"))) | .value' result.json | grep -qE '5\.6\.0|5\.6\.1' && echo "Vulnerable: CVE-2024-3094" || echo "Not vulnerable or liblzma5 not found"
Consigli per la personalizzazione:
Per vulnerabilità diverse: Sostituisci "liblzma5@(5\\.6\\.0|5\\.6\\.1)" nel comando jq con il pacchetto e le versioni che ti interessano. Ad esempio, per controllare openssl versione "1.1.1", potresti usare openssl@(1\\.1\\.1).
Per proprietà diverse: A seconda della vulnerabilità o del pacchetto, potresti dover modificare .name == "aquasecurity:trivy:PkgID" per indirizzare proprietà diverse nell'output CycloneDX.
Aggiornamenti regolari: Assicurati che la tua istanza di Trivy sia regolarmente aggiornata per avere le ultime definizioni di vulnerabilità. Questo può essere solitamente ottenuto estraendo l'ultima immagine aquasec/trivy prima di eseguire scansioni.
Comprendere l'output: Familiarizza con il formato di output di Trivy e l'elaborazione jq per interpretare accuratamente i risultati e comprendere le implicazioni per le tue immagini Docker.
xzSe mantieni codice che potenzialmente interagisce o dipende dalla libreria xz, è cruciale identificare eventuali riferimenti espliciti a versioni vulnerabili della libreria. Usa i seguenti comandi per scansionare i tuoi repository:
Il progetto tukaani è la sede dell'utilità xz. Per trovare menzioni nel tuo codice:
grep -rnH "tukaani" .
Per progetti Java che utilizzano Maven, potresti specificare xz come dipendenza nel tuo pom.xml. Per individuare questi riferimenti:
grep -rnH "org.tukaani:xz:" .
Questi comandi cercheranno ricorsivamente nella directory corrente (e nelle sottodirectory) i pattern specificati, riportando il nome del file, il numero di riga e la riga contenente la corrispondenza.
Nota: Assicurati di avere i permessi necessari per eseguire questi script sul tuo server o per scansionare i repository. Verifica e testa sempre gli script in un ambiente sicuro prima di usarli in produzione.
Sentiti libero di contribuire o suggerire miglioramenti a questo repository inviando una pull request o aprendo un issue. Il tuo feedback e i tuoi contributi sono molto apprezzati!