In strongSwan, un pacchetto VPN basato su protocollo IPSec utilizzato in Linux, Android, FreeBSD e macOS, è stata identificata una vulnerabilità (CVE-2023-41913) che può essere sfruttata per l'esecuzione remota di codice da parte di un attaccante. La vulnerabilità è causata da un errore nel processo charon-tkm nella realizzazione del protocollo di scambio di chiavi (IKE) basato su TKMv2 (Trusted Key Manager), che porta a un overflow del buffer durante l'elaborazione di valori appositamente formattati dello schema DH (Diffie–Hellman). La vulnerabilità si manifesta solo nei sistemi che utilizzano charon-tkm e nelle versioni di strongSwan a partire dalla 5.3.0. Il problema è stato risolto nell'aggiornamento strongSwan 5.9.12. Sono stati preparati anche patch per risolvere la vulnerabilità nelle versioni a partire dalla 5.3.x.
L'errore è causato dall'assenza di verifica della dimensione dei valori pubblici Diffie-Hellman prima della loro copia in un buffer di dimensione fissa nello stack. L'overflow può essere innescato tramite l'invio di un messaggio IKE_SA_INIT appositamente formattato, elaborato senza autenticazione. Nelle versioni precedenti di strongSwan, la verifica della dimensione veniva eseguita nel gestore del payload KE (Key Exchange), ma nella versione 5.3.0 sono state apportate modifiche che trasferiscono la verifica dei valori pubblici nel gestore del protocollo DH (Diffie-Hellman) e aggiungono funzioni di tipo per semplificare il controllo della correttezza dei gruppi DH noti. Per una svista, le nuove funzioni di verifica sono state dimenticate nel processo charon-tkm, che funge da proxy tra il processo IKE e TKM (Trusted Key Manager), con il risultato che nella funzione memcpy() si sono ritrovati valori non verificati, consentendo di scrivere in un buffer di 512 byte fino a 10000 byte di dati.
Fonte: opennet.ru
