Buffer overflow in Toxcore sfruttato inviando un pacchetto UDP

È stata identificata una vulnerabilità (CVE-2-2021) in Toxcore, l'implementazione di riferimento del protocollo di messaggistica Tox P44847P, che potrebbe potenzialmente attivare l'esecuzione di codice durante l'elaborazione di un pacchetto UDP appositamente predisposto. La vulnerabilità interessa tutti gli utenti delle applicazioni basate su Toxcore che non hanno il trasporto UDP disabilitato. Per attaccare è sufficiente inviare un pacchetto UDP conoscendo l'indirizzo IP, la porta di rete e la chiave DHT pubblica della vittima (queste informazioni sono disponibili pubblicamente nel DHT, ovvero l'attacco potrebbe essere stato effettuato su qualsiasi utente o host DHT) .

Il problema è comparso nelle versioni toxcore dalla 0.1.9 alla 0.2.12 ed è stato risolto nella versione 0.2.13. Delle applicazioni client, solo il progetto qTox ha finora rilasciato un aggiornamento con l'eliminazione della vulnerabilità. Come soluzione alternativa per la sicurezza, puoi disabilitare l'uso di UDP lasciando il supporto TCP.

La vulnerabilità è causata da un overflow del buffer nella funzione handle_request(), che si verifica a causa di un calcolo errato della dimensione dei dati nel pacchetto di rete. In particolare, la lunghezza dei dati cifrati è stata determinata nella macro CRYPTO_SIZE definita come "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", che è stata successivamente utilizzata nell'operazione di sottrazione "length - CRYPTO_SIZE". A causa della mancanza di parentesi nella macro, invece di sottrarre la somma di tutti i valori, sottrarre 1 e aggiungere le parti rimanenti. Ad esempio, invece di "lunghezza - (1 + 32 * 2 + 24)", la dimensione del buffer è stata calcolata come "lunghezza - 1 + 32 * 2 + 24", che ha portato alla sovrascrittura dei dati nello stack che era al di fuori del buffer confine.

Fonte: opennet.ru

Aggiungi un commento