Nel progetto in sviluppo OpenWrt, nello strumento ASU (Attended SysUpgrade) sono state individuate vulnerabilità critiche (CVE-2024-54143) che consentono di compromettere gli artefatti di build distribuiti tramite il servizio sysupgrade.openwrt.org o server ASU di terze parti, riuscendo a installare immagini del firmware modificate da un attaccante sui sistemi degli utenti che utilizzano il modo «attended upgrade» tramite l'interfaccia web selector.openwrt.org o lo strumento da riga di comando attended.sysupgrade.
Per portare a termine un attacco, un attaccante deve semplicemente inviare una richiesta di build al server ASU (queste richieste possono essere inviate da qualsiasi utente senza autenticazione). Attraverso manipolazioni con un apposito elenco di pacchetti, l'attaccante può organizzare l'invio di immagini dannose precedentemente generate in risposta a legittime richieste di build da parte di altri utenti.
Il servizio ASU viene utilizzato in OpenWrt per generare e installare aggiornamenti del firmware senza perdere le impostazioni esistenti e i pacchetti installati dall'utente. Attraverso l'interfaccia web o lo strumento da riga di comando, l'utente invia una richiesta per generare un'immagine del firmware aggiornata, specificando i pacchetti installati nel suo sistema. Dopo poco tempo, il server ASU genera un'immagine corrispondente al contenuto richiesto, dopo di che l'utente la scarica e la installa sul proprio dispositivo. Inoltre, è fornita un'opzione che consente di mantenere le impostazioni esistenti nel firmware aggiornato.
Il server ASU è responsabile dell'elaborazione delle richieste degli utenti, avviando una build automatica delle immagini del firmware utilizzando lo strumento ImageBuilder e mantenendo una cache di build precedentemente preparate. Se l'utente richiede un'immagine che è già stata generata in precedenza e mantiene la sua validità, il sistema restituisce immediatamente l'immagine esistente dalla cache senza avviare il processo di build. server Il comportamento dell'attacco è stato reso possibile grazie a due vulnerabilità:
Una vulnerabilità nel gestore delle richieste build_reques.py del pacchetto Imagebuilder, che consente di iniettare comandi nel processo di build attraverso nomi di pacchetti specificamente formattati forniti dall'utente. Questa vulnerabilità è causata dalla mancanza di un'adeguata verifica dei caratteri speciali nei nomi dei pacchetti prima del loro utilizzo come argomenti per l'utilità make. Sfruttando questa vulnerabilità, l'attaccante può generare sul server immagini dannose del firmware firmate con la corretta chiave di build.
- Una vulnerabilità nella libreria util.py, causata dal fatto che gli hash SHA-256 utilizzati per verificare la presenza in cache di immagini del firmware già pronte venivano troncati a 12 caratteri, riducendo significativamente il livello di entropia e consentendo, attraverso la forza bruta, di generare un'immagine dannosa il cui hash corrisponde a quello di un'immagine legittima. Combinata con la vulnerabilità in Imagebuilder, il problema degli hash poteva essere utilizzato dall'attaccante per 'contaminare' la cache del server ASU e posizionarvi immagini dannose restituite alle richieste degli utenti normali.
- Le modifiche che hanno reso possibile l'attacco sono state apportate l'8 luglio. Il problema è stato risolto il 4 dicembre. Per garantire il funzionamento del servizio ASU sono stati utilizzati ambienti separati, non sovrapposti ai sistemi principali del progetto, disconnessi da OpenWrt Buildbot e privi di accesso a risorse sensibili come chiavi SSH e certificati per la creazione di firme digitali.
Si afferma che gli sviluppatori di OpenWrt non abbiano trovato tracce di compromissione dell'infrastruttura del progetto, ma per precauzione hanno reinstallato da zero i sistemi su cui venivano eseguiti i componenti vulnerabili. Il problema non ha interessato le immagini ufficiali distribuite attraverso il sito downloads.openwrt.org, e nell'analisi dei log di build non sono state trovate prove di invio di richieste dannose. Inoltre, poiché i server ASU eseguono una pulizia automatica delle build più vecchie di 7 giorni, è stato impossibile condurre un audit delle vecchie build. serverLa probabilità di sfruttare le vulnerabilità individuate in pratica per diffondere immagini dannose attraverso l'infrastruttura di OpenWrt è valutata dai rappresentanti di OpenWrt come prossima allo zero; tuttavia, si raccomanda agli utenti ASU di sostituire i firmware OpenWrt sui propri dispositivi con la stessa versione.
Si afferma che gli sviluppatori di OpenWrt non abbiano trovato tracce di compromissione nell'infrastruttura del progetto, ma per precauzione hanno reinstallato i sistemi da zero su cui giravano i componenti vulnerabili. Il problema non ha riguardato le immagini ufficiali distribuite tramite il sito downloads.openwrt.org e, durante l'analisi dei log di build, non sono state trovate tracce di invio di richieste malevole. Tuttavia, poiché sui server ASU viene eseguita una pulizia automatica delle build più vecchie di 7 giorni, effettuare un audit delle build precedenti si è rivelato impossibile.
La probabilità di utilizzare le vulnerabilità identificate nella pratica per diffondere immagini dannose attraverso l'infrastruttura OpenWrt è valutata dai rappresentanti di OpenWrt come prossima allo zero; tuttavia, si consiglia agli utenti di ASU di sostituire i firmware OpenWrt sui propri dispositivi con la stessa versione.
Fonte: opennet.ru
