
CVE-2021-27289: Bypass della protezione di riproduzione sui dispositivi Zigbee Ksix
Ciao a tutti,
Immagino che la cosa più professionale da fare fosse intitolare questa repository esattamente per com'è: chiara, descrittiva e diretta. Ma mentre la preparavo, mi sono venuti in mente altri titoli, tipo:
Comunque, ecco la storia.
Mentre mi preparavo a divulgare una nuova vulnerabilità, mi sono ricordato di qualcosa a cui avevo lavorato anni fa: un bug trovato durante il mio progetto di fine studi, mentre facevo ricerca su protocolli IoT come Thread e Zigbee. All'epoca inviai un report a MITRE ma non ricevetti mai risposta, quindi pensai che fosse stato semplicemente ignorato.
Per curiosità, sono rientrato nel vecchio account Gmail che usavo per l'invio... e con mia sorpresa, nel 2023 - tre anni dopo - ho visto che era stata effettivamente assegnata una CVE.
CVE-2021-27289, collegata alla vulnerabilità che avevo segnalato da studente.
Perché ci è voluto così tanto? Quando ho contattato per la prima volta il vendor, hanno detto che non avevano abbastanza personale per sistemarla e hanno continuato a ripetere quella scusa. Ho detto a MITRE che nessuno sembrava fare nulla al riguardo, quindi immagino che abbiano aspettato - probabilmente perché il problema non sarebbe mai stato patchato comunque.
Il bug riguardava diversi dispositivi IoT basati su Zigbee prodotti da Ksix. Il problema principale era che il meccanismo di protezione dalla riproduzione, definito nella specifica Zigbee e applicato tramite il frame counter, non era implementato correttamente.
Poiché i dispositivi non controllavano correttamente il frame counter, un attaccante poteva comunicare con la rete e falsificare pacchetti semplicemente aumentando il numero di sequenza a un valore più alto dell'ultimo visto dal dispositivo. Ciò rendeva possibile riprodurre messaggi catturati e farli accettare come validi - risultando di fatto in un bypass dell'autenticazione.
Questa repo include tutto ciò su cui ho lavorato durante il mio progetto finale:
I dispositivi Zigbee Ksix sono affetti da una vulnerabilità di attacco di riproduzione causata da un'implementazione impropria dei meccanismi di protezione dalla riproduzione di Zigbee.
Le seguenti versioni sono state testate e risultate vulnerabili. Non ho testato versioni successive, quindi potrebbero essere affette anch'esse.
Questi prodotti non sono più disponibili sul sito del vendor o su piattaforme come Amazon, e sembrano essere stati discontinuati.
Lo stack Zigbee nei dispositivi affetti non applica correttamente il meccanismo di protezione dalla riproduzione, che si basa sul campo frame counter definito nella specifica Zigbee. Questo campo serve a garantire che i messaggi ricevuti siano freschi e non siano stati riprodotti.
Tuttavia, in questa implementazione, il frame counter viene ignorato o non validato correttamente. Di conseguenza, un attaccante può catturare un pacchetto Zigbee legittimo, aumentare il suo numero di sequenza a un valore più alto (es. 250) e riprodurlo nella rete.
Poiché i dispositivi controllano solo il numero di sequenza, accettano il messaggio come nuovo - consentendo comunicazioni spoofate e azioni non autorizzate senza che venga violata alcuna autenticazione o crittografia.
A seconda del tipo di dispositivo e di come è integrato nell'ambiente, ciò può causare falsi allarmi o stati falsi dei sensori nell'app che l'utente ha usato originariamente per configurare la rete (es. movimento rilevato, porta aperta) - anche se in realtà non è successo nulla. In configurazioni più complesse, potrebbe persino destabilizzare i flussi di automazione o innescare azioni indesiderate basate su dati spoofati.