Nel sistema di assemblaggio Buildroot, mirato alla creazione di ambienti Linux avviabili per sistemi embedded, sono state identificate sei vulnerabilità che consentono, durante l'intercettazione del traffico in transito (MITM), di apportare modifiche alle immagini di sistema generate o di avviare l'esecuzione di codice a livello di sistema di assemblaggio. Le vulnerabilità sono state corrette nelle versioni Buildroot 2023.02.8, 2023.08.4 e 2023.11.
Le prime cinque vulnerabilità (CVE-2023-45841, CVE-2023-45842, CVE-2023-45838, CVE-2023-45839, CVE-2023-45840) riguardano il codice di verifica dell'integrità dei pacchetti tramite hash. I problemi riguardano la possibilità di utilizzare HTTP per il download di file e l'assenza di file hash di verifica per alcuni pacchetti, consentendo la sostituzione del contenuto di questi pacchetti, con la possibilità di intercettare il traffico di assemblaggio server (ad esempio, quando un utente si connette tramite una rete wireless controllata dall'attaccante).
In particolare, i pacchetti aufs e aufs-util venivano scaricati tramite HTTP e non venivano verificati tramite hash. Gli hash mancavano anche per i pacchetti riscv64-elf-toolchain, versal-firmware e mxsldr, che per impostazione predefinita venivano scaricati tramite HTTPS, ma in caso di problemi venivano ripristinati al download non crittografato dall'host http://sources.buildroot.net. In assenza di file '.hash', lo strumento Buildroot considerava la verifica riuscita e gestiva i pacchetti scaricati, inclusa l'applicazione delle patch contenute nei pacchetti e l'esecuzione degli script di assemblaggio. Con la possibilità di sostituire i pacchetti scaricati, l'attaccante poteva aggiungere le proprie patch o file di assemblaggio Makefiles, consentendo di modificare l'immagine risultante o gli script del sistema di assemblaggio e ottenere l'esecuzione del proprio codice.
La sesta vulnerabilità (CVE-2023-43608) è causata da un errore nell'implementazione della funzionalità BR_NO_CHECK_HASH_FOR, che consente di disattivare la verifica dell'integrità tramite hash per pacchetti selezionati. Alcuni pacchetti, come il kernel Linux, U-Boot e versal-firmware, consentivano il download delle ultime versioni per le quali non erano ancora stati generati hash di verifica. Per queste versioni viene utilizzata l'opzione BR_NO_CHECK_HASH_FOR, che disabilita la verifica tramite hash. I dati venivano scaricati tramite HTTPS, ma per impostazione predefinita, in caso di errore di download, veniva utilizzato un ripristino per accedere a source.buildroot.net senza crittografia tramite il protocollo http://. Durante un attacco MITM, l'attaccante poteva bloccare la connessione al server HTTPS e, in tal caso, il download veniva ripristinato su http://sources.buildroot.net.
Fonte: opennet.ru
