
Mentre armeggiavo con la tecnologia IoT, ho trovato una vulnerabilità nell'applicazione Thingsboard che consentiva strade per l'escalation dei privilegi.
Thingsboard è un'applicazione open-source che consente la gestione dei dispositivi, la raccolta dei dati, l'elaborazione e la visualizzazione per servizi e distribuzioni IoT. Inoltre, una singola istanza di Thingsboard (gestita da un Amministratore del Tenant) può ospitare servizi per più organizzazioni, ciascuna con i propri Amministratori dell'Azienda.
Mentre esploravo le sue funzionalità, ho notato una funzionalità di caricamento file nella vista "Image Gallery". Purtroppo, la funzionalità era vulnerabile a cross-site scripting persistente che consentiva a un avversario di aumentare i privilegi sfruttando il furto dei token di autenticazione.
Questa vulnerabilità ha impatto su tutte le versioni di Thingsboard, incluse le edizioni Community, Cloud e Professional. Ho segnalato responsabilmente il problema al team di sicurezza di Thingsboard, che lo ha riconosciuto e si è impegnato a risolverlo in una versione futura. Successivamente, ho segnalato la vulnerabilità a MITRE, con conseguente assegnazione di un CVE.
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:HPer dimostrare la vulnerabilità, è necessaria un'installazione di ThingsBoard (Repository GitHub) con almeno un utente con privilegi limitati.
Passaggio 1: Accedi a un account cliente con privilegi limitati.

Passaggio 2: Vai a Resources > Image Gallery

Passaggio 3: Prepara un file immagine dannoso (qui viene usato un file SVG con payload JavaScript) per sfruttare la vulnerabilità di Cross-Site Scripting.

Passaggio 4: Carica il file e ispeziona la risposta per identificare il percorso del file di destinazione in cui è stato caricato il payload.

Passaggio 5: Visita il percorso file publicLink per attivare il payload.

Poiché il payload è memorizzato nell'istanza legittima di Thingsboard, un avversario può facilmente ingannare bersagli di alto valore (ad es. Amministratore del Tenant, Amministratore dell'Azienda, ecc.) per rubare i token di autenticazione.
Una dimostrazione dell'impatto sopra menzionato:
Passaggio 1: Accedi a un account di alto valore (qui viene utilizzato l'account dell'amministratore del Tenant nel browser Chrome, per dimostrare un ambiente isolato rispetto al browser Firefox usato in precedenza).

Passaggio 2: Visita il percorso file publicLink, recuperato in precedenza.
