
Analisi della vulnerabilità CVE 2024 3273: command injection nei dispositivi D-Link
I dispositivi D-Link Network Attached Storage (NAS) o storage di rete sono dispositivi con uno o più hard disk collegati a una rete informatica per l'archiviazione e la condivisione di file. A differenza di un normale hard disk esterno, collegato direttamente a un computer, un dispositivo NAS si connette alla rete locale, consentendo a più utenti o dispositivi di utilizzare e condividere file contemporaneamente. I dispositivi NAS sono utilizzati sia in ambito domestico che aziendale.
L'azienda di ricerca sulla sicurezza VulDB Coordination ha scoperto una vulnerabilità critica (CVE-2024-3273) su alcuni dispositivi NAS D-Link, che consente a utenti malintenzionati di effettuare un'iniezione di comandi sulla rete, eseguendo comandi dannosi sul dispositivo vittima.
Questa vulnerabilità riguarda solo alcuni dispositivi D-Link il cui ciclo di vita è terminato e per i quali il produttore ha interrotto il supporto software e hardware. Sono interessati i seguenti modelli:
Questa vulnerabilità richiede anche lo sfruttamento contemporaneo di un'altra debolezza. In particolare, il dispositivo NAS è reso particolarmente vulnerabile da una backdoor causata da opzioni di accesso preprogrammate. Questa backdoor è la vulnerabilità (CVE-2024-3272), in cui un utente può aggirare l'autenticazione utilizzando l'"utente di sistema" messagebus, presente per impostazione predefinita in tutti i dispositivi interessati.
Questo utente demone di sistema (system daemon), presente per impostazione predefinita nei sistemi Linux, non può accedere direttamente al sistema, ma è sufficiente una richiesta HTTP abilmente creata verso un endpoint specifico per causare danni.
È inoltre necessario conoscere l'indirizzo IP del dispositivo bersaglio.
La vulnerabilità risiede nel file /cgi-bin/nas_sharing.cgi del dispositivo NAS, nella funzione di elaborazione delle richieste HTTP GET. Un utente malintenzionato può inviare una richiesta GET sulla rete al dispositivo vittima, fornendo come parametri il nome utente "messagebus" e lasciando la password vuota. L'iniezione di comandi entra in gioco utilizzando il parametro system, specificando come valore del parametro il comando desiderato.
Il comando viene nascosto con codifica base64 e aggiunto come valore del parametro system. Successivamente, una volta decodificato, viene eseguito come comando shell sul dispositivo bersaglio.
🗒️ CVSS Punteggio base: 7.3 Alto
La causa della vulnerabilità CVE-2024-3273 è CWE-77, ovvero iniezione di comandi. Ciò significa che un attaccante può inserire comandi dannosi che vengono poi eseguiti dal sistema bersaglio, poiché il comando inserito non viene convalidato.
Poiché il codice sorgente dei dispositivi non è pubblico, probabilmente per evitare questo problema sarebbe necessario aggiungere una funzione di convalida nel metodo che gestisce le richieste. Ad esempio, si potrebbe avere un elenco di comandi di sistema consentiti, per impedire l'esecuzione di comandi arbitrari.
La vulnerabilità viola principalmente i seguenti obiettivi di sicurezza:
Questa vulnerabilità riguarda solo dispositivi il cui ciclo di vita è terminato, pertanto il produttore consiglia di sostituire i dispositivi e di non utilizzare quelli vulnerabili.
Poiché questi dispositivi non sono più supportati, non possono più ricevere aggiornamenti di sicurezza software, il che significa che la vulnerabilità non verrà corretta. Quindi l'unica soluzione è smettere di utilizzare i prodotti affetti.
Se la sostituzione del dispositivo vulnerabile non è possibile, il dispositivo dovrebbe essere assolutamente rimosso dalla rete pubblica e, in casi estremi, utilizzato solo in una rete locale per dispositivi (dovrebbe essere installato un firewall per bloccare le richieste esterne).
Secondo il rapporto iniziale, al momento della scoperta della vulnerabilità erano presenti in rete oltre 92.000 dispositivi. Secondo un successivo studio, questo numero potrebbe essere stato significativamente inferiore, attestandosi intorno ai 5.500 dispositivi. Ciononostante, è probabile che molti dispositivi vecchi siano ancora connessi alla rete e quindi vulnerabili.
Sono state pubblicate diverse prove di concetto (PoC) dell'attacco ed è probabile che la vulnerabilità sia ancora ampiamente sfruttata. Al momento, sono stati rilevati almeno 146 casi in cui è stato tentato di sfruttare la vulnerabilità CVE-2024-3273.
Frammento di codice di esempio:
def execute_command(ip, command: str = "id", verbose: bool = True) -> str:
command_hex = ''.join(f'\\\\x{ord(c):02x}' for c in command)
command_final = f"echo -e {command_hex}|sh".replace(' ', '\t')
base64_cmd: str = base64.b64encode(command_final.encode()).decode()
url: str = f"{ip}/cgi-bin/nas_sharing.cgi"
params: dict = {
"user": "messagebus",
"passwd": "",
"cmd": "15",
"system": base64_cmd,
}