Direct naar de inhoud
Beveiligingsnieuws

Telegram Desktop en verborgen JavaScript in HTML-export

Telegram Desktop HTML-export

Telegram Desktop heeft een beveiligingsprobleem gekend waarbij een botbericht verborgen JavaScript kon meezenden in chatexporten naar HTML. Dat JavaScript werd niet uitgevoerd in Telegram zelf, maar pas wanneer gebruikers het exportbestand later openen in een webbrowser. Hierdoor kunnen oude exportbestanden onverwacht toch risico’s dragen.

Onderzoekers van ExPatch beschreven het issue in een analyse van 12 september. Ze benadrukken dat er volgens hun eigen testwerk geen bewijs is dat het daadwerkelijk bij echte gebruikers is misbruikt, maar de aanvalslijn is wel degelijk helder.

Wat is er precies mis met de Telegram Desktop HTML-export?

De kern van het probleem zit in hoe Telegram Desktop bepaalde tekstvelden in een HTML-export verwerkt. Een bot kan berichten plaatsen die op het eerste gezicht normaal ogen, bijvoorbeeld met knoppen (inline keyboards) onder het bericht. Telegram bepaalt daarbij welke tekst bij elke knop hoort.

Tot de fix werden delen van die knoptekst in de HTML uitvoer gezet zonder de juiste “escaping”. Escaping zorgt ervoor dat tekens zoals < door de browser als platte tekst worden gezien in plaats van als begin van code. Door het ontbreken daarvan kon een bot theoretisch een <script>-tag laten “meeliften” in de export.

De onderzoekers tonen aan dat de knop er in de geteste Telegram Desktop-versie zelfs leeg of onschuldig uit kan zien, doordat er extra (voor de gebruiker onzichtbare) tekens worden toegevoegd.

Wanneer wordt het script uitgevoerd?

Het JavaScript draait pas nadat iemand het geëxporteerde HTML-bestand opent in een browser met JavaScript ingeschakeld. Dat betekent: niet klikken op een linkknop binnen Telegram is nodig, maar enkel het openen van het exportbestand.

Dat is een belangrijk verschil met veel andere Telegram-achtige scenario’s, waar je vaak een actie in de app of op een link nodig hebt. Hier draait de export zichzelf als het ware af in de browseromgeving van de gebruiker.

Wat kan het JavaScript doen?

Volgens de onderzoekers kan het script de inhoud van het exportbestand benaderen en verwerken. Concreet noemen zij drie hoofdacties:

  • Berichten exfiltreren: het script kan alle berichten in het betreffende exportbestand kopiëren naar een server die de aanvaller beheert.
  • Pagina-inhoud aanpassen: het script kan de weergave in de browser overschrijven, bijvoorbeeld door de exportpagina te vervangen door een nep “verification”-formulier.
  • Records vervalsen: de logica kan ook velden als datum, afzender en berichttekst aanpassen, bijvoorbeeld als iemand zo’n export gebruikt als “bewijs” of archief.

Belangrijk detail: de onderzoekers geven aan dat dit niet automatisch de interne Telegram-copy wijzigt of dat het de exportbestanden op schijf per se verandert. Het effect speelt zich vooral af in de browserweergave van dat HTML-exportbestand.

Gaat het om één chat of om veel meer?

Telegram Desktop splitst lange exporten op in bestanden van 1.000 berichten per bestand. Daardoor exposeert één HTML-exportbestand niet automatisch “alles” wat zich in één Telegram-omgeving bevindt, maar wel alles wat in dat specifieke exportbestand zit.

Daarmee is de impact gelimiteerd tot de omvang van de export. Toch kan één export van een drukke chat, zeker als die veel maanden blijft rondzwerven, alsnog een substantieel dataverlies betekenen.

Hoe kan een bot het bereiken zonder dat hij “in jouw chat” zit?

De onderzoekers beschrijven een opvallend element: de bot hoeft niet per se in de chat te staan waarop de export gebaseerd is. Een bericht met alleen web-linkknoppen kan namelijk bij doorsturen worden meegenomen, inclusief de problematische knoptekst.

Wie dus een botbericht doorstuurt naar een groep, kan onbedoeld het script “in de chatgeschiedenis plaatsen”. Later kan die chatgeschiedenis weer worden geëxporteerd naar HTML, waarna het gevaar opnieuw optreedt bij het openen van het exportbestand.

Welke Telegram Desktop-versies betroffen dit?

Op basis van de bevindingen van ExPatch geldt het probleem voor Telegram Desktop vanaf versie 4.15.1 (maart 2024) tot en met 6.9.3.

De fix is later toegevoegd. Telegram heeft de oplossing opgenomen in:

  • 6.9.4 beta (3 juli, 2026)
  • 7.0.1 stable (14 juli, 2026) en latere versies

De onderzoekers verwijzen naar een commit (8457d13) die de ontbrekende escaping toevoegt. Ze geven ook aan dat de niet-afgeschermde regel al sinds een stabiele release (4.15.1) aanwezig was.

Waarom blijft het risico bestaan bij oude exportbestanden?

Ook na een update blijft een deel van het probleem bestaan: Telegram werkt niet automatisch oude exportbestanden bij. Bestanden die al vóór de fix zijn gemaakt, kunnen dus nog steeds de fout bevatten.

De onderzoekers adviseren daarom om oude HTML-exporten van vóór de oplossing als onbetrouwbaar te behandelen.

Wat kun je nu doen? Praktische stappen

ExPatch geeft gebruikers een duidelijke set adviezen. In de praktijk komt het neer op drie acties: updaten, opnieuw exporteren en omgaan met oude bestanden.

  • Update Telegram Desktop naar 7.0.1 of later. Voor de beta geldt 6.9.4 of later.
  • Her-exporteer chats nadat je bent bijgewerkt, dus alleen exporten die je opnieuw maakt, zijn “repaired” op het moment van export.
  • Open oude HTML-exporten veilig: behandel exporten van vóór de fix als onbetrouwbaar en open ze alleen met JavaScript uit in je browser, of vermijd het openen ervan.

Tot slot zeggen de onderzoekers dat er, zolang je app niet is bijgewerkt, geen reden is om nieuwe HTML-exporten te maken—zeker niet van grote groepen waarbij je lastiger kunt nagaan welke berichten/knoppen erin zaten.

Geen CVE, wel bevestigd door Telegram

Een CVE-identifier lijkt er (ten tijde van de publicatie) niet te zijn, en er stond geen score klaar in openbare databases. Wel geven de onderzoekers aan dat Telegram de kwetsbaarheid heeft bevestigd en een bug bounty heeft aangeboden.

Daarnaast melden ze dat de publicatie pas plaatsvond nadat de patch was uitgerold, mede omdat onderzoekers en Telegram het niet eens waren over wanneer details gedeeld mogen worden.

Hoe herken je of jouw export uit de “risicoperiode” komt?

Je kunt het risico niet alleen afleiden uit “wanneer je de export hebt gemaakt”, al is die informatie natuurlijk relevant. Doorslaggevend is welke Telegram Desktop versie je gebruikte bij het exporteren.

Als je in de periode vóór de fix exporteerde (van 4.15.1 tot en met 6.9.3), dan kan de uitvoer nog kwetsbare inhoud bevatten. Heb je onlangs geüpdatet, dan is de veiligere route: opnieuw exporteren in de bijgewerkte versie.

Extra aandacht bij exports uit groepsomgevingen

In groepssettings is het lastiger om te controleren waar doorstuurberichten precies vandaan kwamen. Juist bij chats met bots of doorstuurnetwerken kan een kwaadwillende boodschap “verspreiden” via forwarding, waarna het bericht in de geschiedenis blijft staan tot je export maakt.

Conclusie: update Telegram Desktop en behandel oude HTML-exporten als verdacht

De kwetsbaarheid laat zien dat “chatdata exporteren” niet automatisch veilig is wanneer de export zelf in een browser uitvoer kan doen. Door ontbrekende escaping kon verborgen JavaScript in de Telegram Desktop HTML-export meeliften, met mogelijke datadiefstal of weergavevervalsing zodra je het bestand opent.

De boodschap is helder: update, her-exporteer en open oude HTML-exporten liever niet met JavaScript aan. Zo verklein je het risico dat een ogenschijnlijk archiefbestand alsnog code gaat uitvoeren in je browser.

Bron: https://thehackernews.com/2026/09/telegram-desktop-flaw-lets-hidden.html