
ETS5 Password Recovery Tool è una PoC per CVE-2021-36799
Hai dimenticato la password di uno dei tuoi progetti ETS5 e non riesci più ad accedere alla configurazione dell'impianto KNX? Il tool ETS5 Password Recovery ti permette di recuperare la password del progetto e altri segreti salvati nel project store dell'ETS5. Ciò è possibile perché l'ETS5 presenta un significativo difetto di progettazione: utilizza una password e un salt hard-coded per crittografare le informazioni del progetto (CVE-2021-36799).
Conservare segreti crittografici nel codice sorgente è sconsigliato perché possono essere recuperati tramite reverse engineering del software, offrendo così poca protezione in più rispetto a memorizzare le informazioni in chiaro. Ciò può rappresentare una minaccia per la sicurezza delle installazioni KNX. Se un attaccante riesce ad accedere ai file nel project store, può decifrarli pur non conoscendo la password del progetto. Le informazioni in essi contenute consentono di intercettare, impersonare e riconfigurare i dispositivi KNX. Questo è particolarmente problematico perché l'ETS5 dà agli utenti l'impressione che la password del progetto venga utilizzata per crittografare le informazioni del progetto, non solo per i progetti esportati. Di conseguenza, è probabile che molti utenti e integratori di sistema non abbiano preso ulteriori misure per garantire la riservatezza del project store. Se l'ETS5 implementasse correttamente la crittografia e venisse scelta una password forte per il progetto, sarebbe una sfida molto più ardua per un attaccante, anche se riuscisse ad ottenere accesso remoto al computer.
Le seguenti informazioni riservate sono crittografate in modo improprio:
ETS5 Password Recovery Tool è una prova di concetto che dimostra il problema decifrando e mostrando le informazioni sensibili. È stato sviluppato come parte della divulgazione coordinata delle vulnerabilità e viene rilasciato con il permesso della KNX Association. La pubblicazione del tool ha i seguenti scopi:
AVVERTENZA: Utilizza questo tool solo se sei legalmente autorizzato a visualizzare le informazioni del progetto. Aggirare le misure di sicurezza, anche quelle inefficaci, per ottenere l'accesso a informazioni che non ti è consentito vedere, potrebbe essere un reato nella tua giurisdizione.
L'eseguibile può essere scaricato dalla sezione release. Non necessita di installazione e può essere posizionato in qualsiasi directory a scelta.
In alternativa, se non desideri eseguire un binario non attendibile sul tuo sistema, puoi decifrare singoli attributi dai file XML del progetto sul sito CyberChef.
Il software dipende da .NET Framework 4.6 o successivo. Windows 10 include già una versione .NET adeguata per impostazione predefinita. Gli utenti di versioni precedenti di Windows dovranno installare una versione corrente di .NET Framework per eseguire il software.
Contrariamente a quanto suggerisce l'interfaccia utente, l'ETS5 non crittografa i file di progetto memorizzati localmente in C:\ProgramData\KNX\ETS5\ProjectStore con la password del progetto. Invece, utilizza la password hard-coded ETS5Password e il salt Ivan Medvedev per offuscare specifici attributi nei file XML del progetto. I segreti crittografici hard-coded sono contrari alle buone pratiche, come spiegato in CWE-798 e CWE-321.
Il processo per la deoffuscazione è:
Ivan Medvedev come stringa codificata ASCII o UTF-8.ETS5Password come password e la rappresentazione in byte di Ivan Medvedev come salt. I primi 32 byte dell'output della derivazione della chiave saranno usati come chiave e i successivi 16 byte come IV.Un'implementazione della deoffuscazione si trova nel file Deobfuscator.cs. Poiché la password e il salt sono costanti, sarebbe possibile precalcolare la chiave e l'IV per saltare la derivazione della chiave. Ciò non viene fatto nell'implementazione di questo software, poiché intende mostrare tutti i passaggi della deoffuscazione. Tuttavia, se hai bisogno della chiave e dell'IV, sono elencati di seguito.
| Hex | Base64 | |
|---|---|---|
| Chiave | 22BD16CDBB96B0E18E977BB3FEFADD8886E7E38A2F8A6FD9D2F2F5663AC20371 | Ir0WzbuWsOGOl3uz/vrdiIbn44ovim/Z0vL1ZjrCA3E= |
| IV | 8E977BB3FEFADD88E6AE6CBEAE3E7CAF | jpd7s/763Yjmrmy+rj58rw== |