Vai al contenuto principale
BlogSicurezzaBollettino di sicurezza Linode dal 20 al 26 marzo 2022

Bollettino di sicurezza Linode dal 20 al 26 marzo 2022

Digesto di sicurezza di Linode

Questa settimana discuteremo alcune vulnerabilità ad alta gravità nel kernel Linux, in Apache e in openssl.

Negazione del servizio ICMPv6 nel kernel Linux

La CVE-2022-0742 consente a chiunque di inviare messaggi ICMPv6 di tipo 130 o 131 e di sfruttare una perdita di memoria nel kernel che causa l'esaurimento della memoria dell'host. Questa vulnerabilità è degna di nota perché un aggressore può causare un denial of service per l'intero sistema inviando solo pochi pacchetti.

Causa principale - Per trovare la causa principale, il posto migliore dove guardare è la cronologia dei commit di git. L'autore della correzione ha inizialmente trovato questo problema mentre indagava sul motivo per cui la funzione synchronize_net() era stata aggiunta all'interno di ipv6_mc_down(). L'autore del commit ha scoperto che igmp6_event_query() e igmp6_event_report() stavano eliminando gli skb, che sono le strutture dati utilizzate dal kernel linux per contenere le informazioni sui pacchetti. Questa vulnerabilità è ancora in fase di analisi.

Questa vulnerabilità presenta alcune avvertenze: 

  • Questo non riguarda nessuna versione di Red Hat Enterprise Linux, in quanto i kernel disponibili sono precedenti alla 5.13.
  • Il ramo stabile è stato colpito.

L'unica possibilità di risolvere questa vulnerabilità è l'aggiornamento del kernel. Una patch per risolvere questa vulnerabilità è già stata applicata a monte.

Apache Avviso di sicurezza

La vulnerabilità su cui ci concentreremo principalmente è CVE-2022-23943, ma prima riassumeremo rapidamente le altre CVE presenti nell'advisory. Le altre vulnerabilità emerse in questo advisory sono CVE-2022-22720, una vulnerabilità che consente il contrabbando di richieste http. C'è anche CVE-2022-22721, che consente l'overflow di interi su sistemi a 32 bit se LimitXMLRequestBody in httpd.conf è superiore a 350 MB. La CVE-2022-22719 causa un arresto anomalo a causa di variabili non inizializzate di mod_lua

mod_sed è un modulo opzionale di Apache che non è installato o abilitato per default sulla maggior parte dei sistemi Linux. È usato per sostituire il testo nelle pagine web che Apache serve usando uno schema, simile a quello del comando sed.

CVE-2022-23943 è una vulnerabilità di corruzione della memoria che può causare un DoS. La vulnerabilità di corruzione della memoria proviene da mod_sed. L'exploit si attiva inviando grandi quantità di dati attraverso i filtri di mod_sed. Se il pacchetto inviato è superiore a 2 GB, si verifica un overflow del numero intero firmato che causa un arresto anomalo. Se vengono inviati più di 4 GB, si verifica un overflow di un intero.

Causa principale - La causa principale proviene dalla funzione appendmem_to_linebuf quando viene chiamata memcpy. La correzione applicata ha modificato il buffer a cui si fa riferimento nei parametri delle funzioni in modo da utilizzare apr_size_t invece di int. Apr_size_t consente di utilizzare un int firmato da 4 byte e un unsigned da 8 byte.

Questa vulnerabilità presenta alcune avvertenze:

  • mod_sed è usato raramente; e
  • mod_sed deve essere installato e configurato manualmente. Di solito non viene inserito come dipendenza per altri pacchetti.

I rimedi consigliati per questa vulnerabilità includono:

  • Aggiornamento di Apache a una versione superiore a 2.4.52
  • Disabilitare mod_sed

È possibile applicare una mitigazione parziale impostando LimitRequestBody 1073741824 in httpd.conf. Tuttavia, questo bloccherà solo l'invio di richieste superiori a 2 GB da parte di client malintenzionati. Un utente malintenzionato potrebbe comunque essere in grado di attivare mod_sed per leggere un file superiore a 2 GB, causando l'exploit.

Negazione del servizio in OpenSSL

OpenSSL è una libreria e un programma a riga di comando per gestire, creare, verificare e firmare certificati. È una delle più antiche librerie di crittografia open source ed è utilizzata quasi universalmente sui sistemi Linux.

OpenSSL utilizza la funzione BN_mod_sqrt(), che calcola una radice quadrata modulare. Contiene un bug per cui i moduli non primi possono andare in loop all'infinito. Viene utilizzata per verificare i certificati che contengono chiavi pubbliche a curva ellittica in forma compressa o parametri espliciti a curva ellittica con un punto base codificato in forma compressa. Per creare un certificato che provochi un DoS, l'aggressore deve modificare un certificato che utilizza una curva ellittica con qualcosa come un editor esadecimale per renderlo matematicamente non valido.

Causa principale - Il cuore della vulnerabilità risiede nel parsing delle chiavi EC con punti in formato compresso; durante il parsing di questo tipo di chiavi, OpenSSL cercherà di espandere il punto compresso, cercando di calcolare una radice quadrata modulo del primo p su cui è definita la curva. Tuttavia, la primalità di p non viene verificata da nessuna parte, nemmeno in BN_mod_sqrt() per il quale è un requisito; pertanto, un bug nell'implementazione causerà un loop infinito a causa del fatto che p non è primo come previsto. L'advisory per OpenSSL è disponibile qui. Attualmente le versioni patchate sono:

  • OpenSSL 3.0.2
  • OpenSSL 1.1.1n  
  • OpenSSL 1.0.2zd 

Inoltre, ci sono alcune avvertenze per sfruttare con successo questa vulnerabilità e devono essere soddisfatte le seguenti condizioni:

  • Un utente malintenzionato genera un certificato utilizzando la crittografia a curva ellittica con alcuni parametri non validi, oppure modifica un certificato esistente.
  • Un utente malintenzionato deve fare in modo che OpenSSL verifichi il certificato, tramite accesso locale o fornendolo a un'applicazione Web che utilizza mTLS e che verifica i certificati forniti dall'utente.

Commenti

Lascia una risposta

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