
Aggiorna il tuo dispositivo D-Link affetto da CVE-2024-3272
Sei una delle 92,000+ persone1 bloccate con un NAS D-Link vulnerabile a CVE-2024-3272 e nessuna patch in vista?
Questo strumento utilizza l'exploit stesso per correggere un dispositivo vulnerabile.
1: Vedi la divulgazione originale nei riferimenti
Dinkleberry eseguirà un comando per sostituire il file vulnerabile nas_sharing.cgi con una versione corretta - sovrascrivendo la chiamata system() con NOP.
La cartella /usr/local/modules (dove risiede il file) è in sola lettura, quindi viene creata una copia in /usr/local/config e il symlink in /var/www/cgi-bin viene aggiornato per puntare alla versione più sicura.
Ho scelto di NOPare solo la chiamata di sistema in modo che il comando risponda ancora come al solito, ma senza eseguire effettivamente nulla.
[!NOTE] Il filesystem viene ricaricato dalla flash all'avvio. L'applicazione di questa patch funzionerà solo fino al riavvio del dispositivo. Se desideri una correzione più permanente, dovrai re-flashare il firmware - magari con Debian
aliask:~/git/dinkleberry$ python3 ./src/main.py -h 10:01:02
usage: dinkleberry [-h] [--telnet] [--kill-telnet] [--test] [--verbose] target
positional arguments:
target Target NAS to patch
options:
-h, --help show this help message and exit
--telnet Start telnet server
--kill-telnet Stop telnet server
--test Test if device is vulnerable
--verbose, -v Set this to print debug messages
Se non vengono applicati flag opzionali, lo script esegue la patch.
Se vuoi solo esplorare il dispositivo, usa il comando --telnet, che avvia una sessione telnet sulla porta 23.
Questo è clamorosamente insicuro, ma il tuo dispositivo è già clamorosamente insicuro, tanto vale prendere la shell comoda.
[!CAUTION] Usa questo strumento a tuo rischio e pericolo. Sta modificando il software effettivo del dispositivo.
Non sono responsabile per:
- Il tuo dispositivo che smette di funzionare
- Perdita di dati memorizzati sul NAS
- Incendio
- Il TA che stava sfruttando felicemente il tuo dispositivo e si arrabbia
Durante l'analisi dei binari nas_sharing.cgi e libsmbif.so, è diventato subito chiaro che il software su questo dispositivo è estremamente vulnerabile. Vulnerabile al punto da dover essere riscritto da zero.
Ci sono circa 80 chiamate a system() solo in nas_sharing.cgi - molte di queste hanno un percorso per l'input utente. Non mi sono preoccupato di analizzarle tutte per cercare altre falle da correggere, ma ecco un esempio di livello S:
/* Why use system() instead of libc fopen/fwrite?
What if you want to write a long string or your filename is long?
Painfully obvious command injection playground 🤦 */
void append_to_file(const char* string, const char* file) {
char s_cmd[1024];
sprintf(s_cmd, "echo %s >> %s", string, file);
system(s_cmd);
return;
}
Oltre a tutte queste pazze chiamate system, ci sono più buffer overflow di quanti tu possa contare - e io posso contarne molti.
Questa CVE è nella lista KEV di CISA - Se hai uno di questi dispositivi su internet, toglilo dalla rete. Immediatamente.
Forse segui anche il consiglio di D-Link e sostituisci il dispositivo a fine vita. Ma di sicuro non comprerei un prodotto D-Link.