Vai al contenuto principale
BlogSicurezzaLinode Security Digest 30 gennaio - 6 febbraio 2022

Linode Security Digest 30 gennaio - 6 febbraio 2022

Digesto di sicurezza di Linode

Questa settimana discuteremo tre vulnerabilità di gravità elevata che potrebbero consentire agli aggressori di aumentare i privilegi se hanno accesso locale al sistema.

Kernel Linux eBPF - Vulnerabilità nella convalida degli input non corretti

CVE-2022-23222 descrive una vulnerabilità derivante dalla gestione dei programmi eBPF da parte del kernel. Un aggressore in grado di eseguire BPF può mandare in crash il sistema o eseguire codice arbitrario nel contesto del kernel.

Causa principale - Il verificatore BPF non limita correttamente diversi tipi di puntatori *_OR_NULL, consentendo a questi tipi di eseguire l'aritmetica dei puntatori. Questo può essere sfruttato per eseguire codice arbitrario o bloccare il sistema. 

Nota importante: il BPF non privilegiato viene disabilitato per impostazione predefinita nella maggior parte delle distribuzioni. Il bug è stato introdotto nella versione 5.8.0 del kernel ed è stato corretto con la versione 5.14.17 del kernel. La disponibilità di exploit pubblici è un altro motivo per cui CVE-2022-23222 rappresenta un rischio significativo.

Mantenersi aggiornati con l'ultimo kernel offerto dalla propria distribuzione Linux è un modo semplice per proteggersi da questa vulnerabilità. Se il vostro Linode avvia un kernel fornito da noi, potete verificare che il profilo di configurazione del vostro Linode sia impostato per avviare il kernel più recente e quindi riavviare il vostro Linode. 

Se non è possibile aggiornare immediatamente a un kernel patchato, è possibile mitigare questa vulnerabilità assicurandosi che unprivileged_bpf_disabled sia impostato su 1. L'esempio seguente applica una mitigazione temporanea fino al riavvio di Linode. Assicurarsi di scrivere questa impostazione in un file di configurazione sysctl e di avviare in modo sicuro il Linode per mantenere la mitigazione.

# sysctl -w kernel.unprivileged_bpf_disabled=1

Fonte: Tr3e wang del laboratorio di sicurezza SecCoder

Fuga del contenitore con l'uso di Overflow dell'heap nel kernel Linux

CVE-2022-0185 è un bug di heap overflow che consente a un utente malintenzionato con accesso a un utente non privilegiato di scalare i propri privilegi a root. Per farlo, l'aggressore deve disporre di una specifica capacità di Linux, CAP_SYS_ADMIN. È importante notare che quando Docker (o altri CRI) vengono utilizzati in un cluster Kubernetes, il filtro seccomp viene disabilitato per impostazione predefinita, quindi questa vulnerabilità potrebbe essere sfruttata in questi casi.

Causa principale - Il bug è causato da un underflow di numeri interi presente in fs/fs_context.c:legacy_parse_paramcon conseguente errore di calcolo della lunghezza massima valida. Questo porta a un underflow di numeri interi nel componente "File System Context". 

L'underflow si verifica quando un'operazione di sottrazione riduce un intero senza segno a un valore inferiore a zero. Poiché gli interi senza segno non possono rappresentare numeri negativi, il calcolo risultante si avvolge intorno al valore massimo dell'intero. Quando questo underflow si verifica all'interno della funzione legacy_parse_param, il controllo delle dimensioni non riesce e l'aggressore può scrivere oltre i limiti della memoria allocata di 4kb nello spazio del kernel. Utilizzando questa "scrittura non vincolata", l'aggressore può modificare i valori nella memoria del kernel e, ad esempio, aggiungere l'accesso a se stesso a qualsiasi altro processo in esecuzione sullo stesso nodo.

Il comando "capsh -print" può essere utilizzato nel contesto dell'utente corrente per elencare le funzionalità abilitate. Lo sfruttamento si basa sulla capacità CAP_SYS_ADMIN; tuttavia, l'autorizzazione deve essere concessa solo nello spazio dei nomi corrente. Un utente non privilegiato può utilizzare unshare (CLONE_NEWNS | CLONE_NEWUSER) per entrare in uno spazio dei nomi con l'autorizzazione CAP_SYS_ADMIN e quindi procedere all'exploit per effettuare il root del sistema. Tuttavia, l'uso di seccomp impedirà all'aggressore di entrare nello spazio dei nomi con tale autorizzazione.

La vulnerabilità è stata introdotta nel kernel 5.1 ed è stata corretta nella versione 5.16.2. Il codice di exploit è già emerso online. Ecco il documento originale per maggiori dettagli tecnici sulle scoperte. 

Mantenere aggiornato l'ultimo kernel offerto dalla propria distribuzione Linux è un modo semplice per proteggersi da questa vulnerabilità. Se il vostro Linode avvia un kernel fornito da noi, potete anche verificare che il profilo di configurazione del vostro Linode sia impostato per avviare il kernel più recente e poi riavviare il vostro Linode. Se non si è in grado di aggiornare immediatamente a un kernel patchato, è possibile applicare queste mitigazioni:

  • Ridurre al minimo l'uso di contenitori privilegiati che hanno accesso alla capacità CAP_SYS_ADMIN. 
  • Per i container non privilegiati, assicurarsi che sia presente un filtro seccomp che blocchi la chiamata unshare ridurrà il rischio.
  • Mitigare lo sfruttamento da parte di container non privilegiati disabilitando la capacità dell'utente di usare gli spazi dei nomi degli utenti a livello di host. L'esempio seguente applica una mitigazione temporanea fino al riavvio di Linode. Assicurarsi di scrivere questa impostazione in un file di configurazione sysctl e di avviare in modo sicuro il Linode per mantenere la mitigazione.
# sysctl -w kernel.unprivileged_userns_clone=0

PwnKit - Vulnerabilità di escalation dei privilegi locali in Polkit

Polkit è un componente per il controllo dei privilegi a livello di sistema nei sistemi operativi Unix-like. Fornisce una metodologia sistematica per i processi non privilegiati per comunicare con i processi privilegiati. Inoltre, è possibile utilizzare polkit per eseguire comandi con privilegi elevati utilizzando il comando pkexec (di solito con root). 

CVE-2021-4034 è una vulnerabilità di corruzione della memoria in pkexec di polkit, un programma SUID-root installato di default sulla maggior parte delle principali distribuzioni Linux. Uno sfruttamento riuscito permette a qualsiasi utente non privilegiato di ottenere facilmente i privilegi di root nella configurazione predefinita.

Causa principale - Il programma pkexec non convalida correttamente il numero di argomenti passati, consentendo l'esecuzione di codice arbitrario come utente privilegiato. 

Tutte le versioni di Polkit dal 2009 in poi sono vulnerabili e sfruttabili anche se il demone Polkit stesso non è in esecuzione.

Mantenersi aggiornati con l'ultimo kernel offerto dalla propria distribuzione Linux è un modo semplice per proteggersi da questa vulnerabilità. Se il vostro Linode avvia un kernel fornito da noi, potete verificare che il profilo di configurazione del vostro Linode sia impostato per avviare il kernel più recente e quindi riavviare il vostro Linode. Se non si è in grado di aggiornare immediatamente a un kernel patchato, è possibile mitigare temporaneamente il problema rimuovendo il bit SUID da pkexec:

# chmod 0755 /usr/bin/pkexec

Commenti

Lascia una risposta

Il vostro indirizzo e-mail non sarà pubblicato. I campi obbligatori sono contrassegnati da *