
Una falla nell'esportazione HTML di Telegram Desktop può rubare le chat
I ricercatori hanno scoperto una falla in Telegram Desktop che consente a JavaScript nascosto di rubare i messaggi delle chat dai vecchi file di esportazione HTML. Aggiorna e riesporta le vecchie chat.
Una falla di sicurezza in Telegram Desktop permetteva al messaggio di un bot di nascondere JavaScript all'interno delle esportazioni di chat salvate come file HTML, hanno riferito i ricercatori di ExPatch il 12 settembre. Lo script veniva eseguito quando qualcuno apriva il file esportato in un browser web e poteva inviare il contenuto di quel file a un server controllato dall'attaccante o modificare ciò che la pagina mostrava. La falla riguardava Telegram Desktop, l'app desktop per Windows, macOS e Linux, che può esportare una singola chat o tutte le chat come pagine che si aprono in un browser.
I bot di Telegram possono allegare righe di pulsanti cliccabili sotto i loro messaggi, chiamate tastiere inline, e il bot sceglie il testo mostrato su ciascun pulsante. Fino alla correzione, la funzione di esportazione di Telegram Desktop scriveva quel testo dei pulsanti direttamente nel file HTML senza effettuare l'escaping. L'escaping è un passaggio di sicurezza standard che converte caratteri come il segno di minore in modo che un browser li mostri come testo invece di trattarli come codice. Il codice di esportazione effettuava l'escaping del testo dei messaggi, dei nomi dei mittenti e di altri campi, ma non del testo dei pulsanti. I ricercatori Denis Rostilov e Aleksander Rostilov hanno scoperto che un bot poteva inserire un tag script nel testo di un pulsante, riempito con caratteri invisibili in modo che il pulsante sembrasse vuoto nella versione di Telegram Desktop che hanno testato. Il bot non doveva essere nella chat di destinazione: se il messaggio di un bot con soli pulsanti di link web viene inoltrato in un gruppo, i pulsanti mantengono il loro contenuto, quindi qualsiasi membro può portare lo script nella cronologia della chat. Lo script rimane lì fino alla cancellazione e può essere esportato mesi o anni dopo.
Quando si apre un file di esportazione contenente un messaggio del genere, lo script viene eseguito senza ulteriori clic. Può leggere ogni messaggio in quel file, inclusi nomi dei mittenti e timestamp, il nome della chat, il tipo e il numero di membri, e il percorso del file locale sul dispositivo. Può inviare tutto ciò al server dell'attaccante. Il codice di esportazione divide le esportazioni lunghe in file separati da 1.000 messaggi ciascuno, quindi un file espone al massimo il proprio contenuto, non l'intera chat o l'account Telegram. Lo script può anche riscrivere la pagina: nella dimostrazione dei ricercatori, ha sostituito l'intera esportazione con un falso modulo di "verifica" di Telegram. Lo stesso controllo potrebbe modificare date, mittenti o testo dei messaggi in un file usato come registro. Non modifica la copia della chat di Telegram né il file di esportazione salvato sul disco. Perché lo script venga eseguito, devono verificarsi tre condizioni: l'esportazione HTML è stata creata con una versione di Telegram Desktop precedente alla correzione, il messaggio che porta lo script è all'interno della chat esportata e il file viene aperto in un browser con JavaScript abilitato.
Telegram ha distribuito una correzione a luglio. Lo sviluppatore John Preston ha scritto la patch, commit 8457d13a, il 30 giugno, che ha aggiunto l'escaping mancante. La correzione è arrivata nella beta 6.9.4 il 3 luglio e nella versione stabile 7.0.1 il 14 luglio su GitHub. Le versioni interessate vanno da Telegram Desktop 4.15.1, rilasciata a marzo 2024, fino alla 6.9.3. Le note di rilascio per 6.9.4 e 7.0.1 non menzionano la correzione, il changelog dell'app non la menziona e il repository di Telegram Desktop non elenca alcun avviso di sicurezza. Non esiste nemmeno un identificatore CVE per la falla. I ricercatori l'hanno valutata 8,2 su 10 secondo il sistema di punteggio CVSS 3.1. Hanno segnalato la falla a Telegram il 3 giugno, due giorni dopo averla scoperta, e hanno detto di aver testato solo sui propri account e gruppi di test. Il loro resoconto non afferma che qualcuno l'abbia usata contro utenti reali. Telegram ha confermato la falla il 1° luglio e ha offerto un bug bounty di 500 dollari, che i ricercatori hanno rifiutato chiedendo che fosse devoluto in beneficenza. Hanno chiesto una data di pubblicazione coordinata e si sono offerti di tacere fino al rilascio della patch. In un'email datata 1° luglio che i ricercatori hanno pubblicato come screenshot, il supporto di Telegram ha scritto che la divulgazione pubblica anche di problemi già risolti potrebbe mettere a rischio più utenti di Telegram, cosa che i ricercatori hanno interpretato come un rifiuto a consentire la pubblicazione dopo una correzione. Hanno pubblicato il 12 settembre dopo che la correzione era stata distribuita.
Gli utenti dovrebbero aggiornare Telegram Desktop alla versione 7.0.1 o successiva, oppure alla 6.9.4 o successiva sul canale beta. Dopo l'aggiornamento, dovrebbero riesportare tutte le chat che erano state esportate in HTML prima della correzione, oppure aprire i vecchi file solo con JavaScript disabilitato. Qualsiasi esportazione HTML creata prima della correzione dovrebbe essere considerata non attendibile, specialmente se proviene da un grande gruppo dove è difficile verificare l'origine di ogni messaggio. Finché l'app non viene aggiornata, non c'è motivo di creare nuove esportazioni HTML, perché solo le esportazioni prodotte dal vecchio codice presentano la falla. Al 14 settembre, Telegram non aveva pubblicato alcuna guida per gli utenti in possesso di vecchie esportazioni. Per i proprietari di siti web e le aziende che potrebbero ricevere o condividere archivi di chat esportati, una revisione con priorità alla sicurezza di qualsiasi file HTML prima che venga ospitato o distribuito è un passo pratico; AEU-I fornisce IT e consulenza con priorità alla sicurezza che possono aiutare a valutare tali file.
Come Proteggerti
- Aggiorna subito Telegram Desktop alla versione 7.0.1 o successiva.
- Se hai esportato delle chat in HTML prima dell'aggiornamento, esportale di nuovo usando l'app aggiornata.
- Non aprire i vecchi file di esportazione delle chat in HTML mentre JavaScript (la funzione che esegue il codice dei siti web) è attivo; disattivalo prima nelle impostazioni del browser.
- Considera qualsiasi esportazione di chat in HTML fatta prima di luglio 2026 come un possibile rischio, specialmente se proviene da grandi gruppi, e controlla chi ha inviato ogni messaggio.
- Evita di creare nuove esportazioni in HTML finché non hai aggiornato l'app, perché solo le vecchie versioni producono i file non sicuri.
I Termini Spiegati
- JavaScript Un linguaggio di programmazione che viene eseguito all'interno dei browser web e può leggere e modificare ciò che una pagina web mostra.
- HTML Il linguaggio usato per costruire le pagine web, che un browser legge per visualizzare testo, pulsanti e link.
- Inline keyboard Una riga di pulsanti cliccabili che un bot può allegare sotto il suo messaggio in Telegram.
- Escaping La modifica di caratteri speciali come < in modo che un browser li mostri come testo semplice invece di eseguirli come codice.
- CVSS Un sistema di punteggio che assegna un numero da 0 a 10 per indicare quanto è grave una falla software.
- Bot Un programma automatico all'interno di Telegram che può inviare messaggi e allegare pulsanti.