CVE-2022-24693
Descrizione
I dispositivi Baicells Nova436Q e Neutrino 430 con firmware fino a QRTB 2.7.8 hanno credenziali hardcoded facilmente individuabili, che possono essere utilizzate da attaccanti remoti per autenticarsi via ssh. (Le credenziali sono memorizzate nel firmware, cifrate con la funzione crypt.)
Punteggio CVSS
CVSS 9.8
Tipo di vulnerabilità
CWE-284: Improper Access Control
Fornitore del prodotto
BaiCells
Base di codice del prodotto interessato
- NOVA436Q - QRTB 2.7.8 (Probabilmente tutte le build precedenti alla 2.9.x)
- NEUTRINO430 - QRTB 2.7.8 (Probabilmente tutte le build precedenti alla 2.9.x)
Componente interessato
Gli username e le password sono statici nel firmware, cifrati tramite crypt(), e pertanto sono decifrabili.
Tipo di attacco
Remoto
Impatto Esecuzione di codice
Vero
Impatto Negazione del servizio
Vero
Impatto Escalation dei privilegi
Vero
Vero
Vettori di attacco
Di default, il firmware contiene username e password statici.
Riferimenti
Il fornitore ha confermato o riconosciuto la vulnerabilità?
Sì: https://community.na.baicells.com/t/important-security-notice-for-nova-436q-430-neutrino-430/1729
Scopritore
Luke Jenkins
Cronologia
- 2021-12-07 - Email a Baicells per richiedere la pubblicazione di una Vulnerability Disclosure Policy.
- 2021-12-08 - Discussione via email con Baicells, includendo una bozza della Vulnerability Disclosure Policy e una fonte di chiavi PGP per un punto di contatto.
- 2021-12-08 - Email cifrata PGP inviata al punto di contatto con i dettagli della vulnerabilità.
- 2022-02-08 - Ricevuta notifica da Baicells che avevano risolto il problema nella prossima versione software QRTB 2.9.
- 2022-03-22 - Baicells richiede che le password in chiaro non siano incluse in questa pagina.
- 2022-03-23 - Risposta via email a Baicells evidenziando che non includere la password avrebbe solo dato l'illusione della sicurezza.
- 2022-03-28 - Bailcells pubblica la versione software QRTB 2.9.10 con la correzione per questo problema.
- 2022-03-28 - Questa pagina, che era vuota, è stata modificata per includere i dettagli della vulnerabilità.
- 2022-03-28 - Inviata richiesta a Mitre per la pubblicazione di CVE-2022-24693.
- 2022-03-28 - Email da Baicells con richiesta di rimozione delle password in chiaro da questa pagina.
- 2022-03-28 - Risposta a Baicells con rifiuto della richiesta in base alla tempistica di divulgazione.
- 2022-03-29 - Notifica via email dal team di assegnazione CVE di Mitre: la richiesta di pubblicare CVE-2022-24693 era stata ricevuta ed elaborata.
- 2022-03-29 - Chiamata telefonica dalla dirigenza UETN che richiedeva che la richiesta di Baicells fosse accolta.
- 2022-03-29 - Email inviata a Baicells per notificare loro che la richiesta di rimuovere le password dalla pagina principale sarebbe stata accolta , ma che le password sarebbero rimaste disponibili nella cronologia git e tramite archive.org.
- 2022-03-30 - Email da Baicells in cui comunicavano che avrebbero pubblicato un avviso su questa vulnerabilità sul loro sito web e che avrebbero iniziato a notificare i clienti.
- 2022-03-30 - Email da Baicells inviata a una lista di clienti per avvisarli della vulnerabilità di sicurezza, con collegamento a questo avviso e al software corretto.
Dettagli:
- Utente
admin con password Baicells memorizzata usando l'algoritmo unix crypt() DES.
- Utente non documentato e non configurabile
anonymous con password pqmz325 memorizzata usando l'algoritmo unix crypt() DES.
- Utente non documentato, non configurabile (ma apparentemente inutilizzabile per ssh)
root con password qpa;10@) memorizzata usando l'algoritmo unix crypt() DES. Il fornitore afferma che sia unica per dispositivo, ma ciò non è stato confermato.
Come riprodurre
- Scaricare il firmware dal sito web del fornitore, senza bisogno di login. Come cliente, adoro questo; ma dal punto di vista della sicurezza è importante capire quanto sia facile per un malintenzionato ottenere il firmware.
- Eseguire binwalk sull'immagine del firmware, uno strumento che estrae tutti i file contenuti nel firmware. Recuperare username e hash delle password da /etc/passwd e /etc/shadow.
- Usare hashcat per craccare gli hash. Oltre a essere progettata pensando a CPU di oltre 30 anni fa, la funzione unix crypt() che "protegge" queste password le limita anche a 8 caratteri. Le password si rompono.
- Le credenziali dell'utente anonymous possono essere usate per accedere via ssh al dispositivo. Ti risparmio la fatica di una scansione delle porte o di cercare nei file di configurazione del passo 2: dropbear è in ascolto sulla porta 27149.
Note
Questa è la mia prima CVE pubblicata, quindi perdonate (o inviate una pull request per) eventuali errori.
Grazie alle persone di UETN per l'assistenza e il supporto su questa vicenda.
Grazie anche allo staff di Baicells NA per aver collaborato con me alla correzione di questo problema.