Ricercatori sulla sicurezza Cisco
La vulnerabilità può essere sfruttata per eseguire codice in una situazione in cui l'aggressore può organizzare la formazione di un valore negativo della variabile attraverso la quale viene trasmessa la dimensione dei dati copiati (ad esempio, diventerà negativo quando si trasferiscono più di 2 GB di dati dati, ma durante l'attacco, per oltrepassare i limiti del buffer, è necessario trasferirne almeno 4GB). La funzione memcpy() è ampiamente utilizzata nelle applicazioni e i processori ARMv7 sono comuni nei sistemi automobilistici, mobili, industriali, di consumo, di comunicazione e nei dispositivi integrati, che sono potenzialmente soggetti ad attacchi tramite Bluetooth, radio HD/DAB, USB, bus CAN, Wi-Fi Fi e altre fonti di dati esterne (ad esempio, possono essere attaccati servizi e applicazioni accessibili in rete che accettano dati in ingresso senza limiti di dimensione).
Un esempio è la creazione di un exploit funzionante per attaccare un server HTTP integrato nei sistemi informativi automobilistici, accessibile tramite la rete Wi-Fi dell'automobile. Un utente malintenzionato esterno potrebbe sfruttare una vulnerabilità memcpy su questo server inviando una richiesta GET di grandi dimensioni e ottenendo l'accesso root al sistema.
Sui sistemi x32 a 86 bit, il problema non si presenta, poiché l'implementazione memcpy per questa architettura interpreta correttamente la variabile size come un valore intero senza segno di tipo size_t (in linguaggio assembly
La correzione si riduce alla sostituzione dell'uso delle istruzioni di assembly che operano su operandi con segno (bge e blt) con controparti senza segno (blo e bhs).
Il problema non è stato ancora risolto
Fonte: opennet.ru