A Telegram Desktop egyik magas súlyosságú sérülékenysége lehetővé tette, hogy támadók rejtett JavaScript-kódot helyezzenek el látszólag ártalmatlan üzenetekben. A kód késleltetve léphetett működésbe: akkor, amikor egy felhasználó exportálta az érintett beszélgetést, majd HTML-fájlként megnyitotta azt.
A hibát az ExPatch biztonsági kutatói, Denis Rostilov és Aleksander Rostilov fedezték fel. A sérülékenység a Telegram Desktop Windows-, macOS- és Linux-verziójának HTML-exportálási funkcióját érintette. A probléma abból adódott, ahogyan az alkalmazás a Telegram-botok által létrehozott interaktív gombok szövegét feldolgozta.
A Telegram 2026 júliusában javította a hibát. A sérülékeny alkalmazásverziókkal korábban létrehozott HTML-exportokat azonban a frissítés nem javítja ki automatikusan. Ezek a fájlok továbbra is veszélyesek lehetnek, ha rosszindulatú üzenetet tartalmaznak, és engedélyezett JavaScript mellett nyitják meg őket egy böngészőben.
A kutatók tárolt cross-site scripting, röviden tárolt XSS-sérülékenységként azonosították a problémát, és előzetesen 8,2-es CVSS 3.1-értékelést rendeltek hozzá. Ez a magas súlyosságú kategóriának felel meg. A kutatás nyilvánosságra hozatalakor a hibához még nem tartozott CVE-azonosító, és a Telegram nem adott ki külön biztonsági figyelmeztetést a potenciálisan veszélyes korábbi exportokról.
Szerkesztői frissítés – 2026. szeptember 30.: A sérülékenység azóta megkapta a CVE-2026-94488 azonosítót. A szeptember 21-én közzétett hivatalos rekordban 8,2-es CVSS 3.1- és 8,3-as CVSS 4.0-értékelés szerepel; mindkettő magas súlyosságot jelent. Forrás: a CVE Program hivatalos rekordja.
A hiba a Telegram Desktop 2024 márciusában megjelent 4.15.1-es verziójától a 6.9.3-as verzióig volt jelen. Az első javított bétakiadás a 6.9.4 volt, amely 2026. július 3-án jelent meg. A stabil kiadási csatornán a 7.0.1-es verzió tartalmazta először a javítást, július 14-én.
A támadás nem törte fel közvetlenül a Telegram szervereit, és a kód nem futott le automatikusan a Telegram alkalmazáson belül. Ugyanakkor súlyos biztonsági rést nyitott az üzenettartalom és a helyben létrehozott archívum között: a Telegramban ártalmatlannak tűnő adat az exportálás során a böngésző által végrehajtható kóddá válhatott.
Egy hétköznapi botgombba rejtették a rosszindulatú kódot
A Telegram-botok úgynevezett inline billentyűzeteket csatolhatnak az üzeneteikhez. Ezek az üzenet alatt megjelenő interaktív gombsorok weboldalra irányíthatják a felhasználót, botparancsokat indíthatnak el, vagy más funkciókat biztosíthatnak.
Az egyes gombokon látható szöveget a bot határozza meg. Az ExPatch technikai elemzése szerint a Telegram Desktop a hagyományos üzenetekben, a feladók nevében és több más mezőben megfelelően átalakította a veszélyes HTML-karaktereket, mielőtt beillesztette volna őket az exportált dokumentumba.
Az inline gombok szövegénél azonban ez a védelem hiányzott.
A HTML-archívum létrehozásakor az alkalmazás közvetlenül az oldalba írta a gomb feliratát, anélkül, hogy a HTML szempontjából különleges jelentésű karaktereket ártalmatlan karakterhivatkozásokká alakította volna. Emiatt a mezőbe ágyazott jelölőelemeket a böngésző egyszerű szöveg helyett aktív HTML-kódként értelmezhette.
Ez döntő különbség volt. A Telegram saját felülete nem böngészős HTML-ként jeleníti meg a gombok feliratát, ezért az azokba rejtett szkript nem futott le az üzenet alkalmazáson belüli megtekintésekor. Exportálás után viszont ugyanaz a tartalom egy HTML-dokumentum részévé vált.
Amikor a felhasználó hagyományos böngészőben megnyitotta a dokumentumot, a böngésző feldolgozta a beillesztett HTML-elemeket. Ha a gomb szkriptelemet vagy külső szerveren tárolt JavaScriptre mutató hivatkozást tartalmazott, a rosszindulatú kód az érintett exportoldal betöltésekor lefuthatott.
A kutatók azt is bemutatták, hogy a támadó láthatatlan Unicode-karakterekkel egészíthette ki a gomb feliratát. Így az üzenet normálisnak tűnhetett a Telegramban, miközben a beillesztett kód rejtve maradt a felhasználó előtt.
Ezzel a tárolt XSS-támadás szokatlan formája jött létre: a veszélyes tartalom hosszú ideig tétlenül maradhatott a beszélgetésben. Akár hónapokig vagy évekig sem okozott problémát, és csak akkor aktiválódott, amikor egy résztvevő HTML-exportot készített, majd megnyitotta a fájlt.
A támadó botjának nem kellett a célzott csoport tagjának lennie
A sérülékenység egyik legfontosabb sajátossága az volt, hogy a támadó botjának nem feltétlenül kellett belépnie a célzott csoportba, vagy jogosultságot kapnia annak üzeneteihez.
A támadó egy bottal létrehozhatott egy látszólag megbízható, URL-re mutató inline gombot tartalmazó üzenetet. Ezt egy másik Telegram-felhasználó továbbíthatta egy privát csoportba, nyilvános csoportba vagy szupercsoportba.
A Telegram továbbításkor megőrzi az URL-alapú inline gombokat. A rejtett támadási kód ezért a továbbított üzenettel együtt bekerülhetett a célzott beszélgetés előzményei közé.
Ha később valamelyik résztvevő egy sérülékeny Telegram Desktop-verzióval exportálta a beszélgetést, a rosszindulatú gombszöveg megfelelő átalakítás nélkül került a HTML-fájlba. A szkript akkor futott le, amikor a résztvevő megnyitotta az érintett oldalt a böngészőben.
Ez lényegében egy biztonsági határ átlépését tette lehetővé. A Telegram adatvédelmi korlátozásai megakadályozhatják, hogy egy bot a Bot API-n keresztül hozzáférjen a csoport szokásos beszélgetéseihez. A rosszindulatú szkript azonban később elolvashatta az üzeneteket, miután azokat böngészőben megjeleníthető dokumentummá alakították.
Egy már telepített, kompromittált vagy eleve rosszindulatú segédbot közvetlenül is eljuttathatta a kódot a csoportba. A szavazásokhoz, időjárási információkhoz, emlékeztetőkhöz, moderáláshoz és más hétköznapi feladatokhoz használt botok gyakran bizalmat élveznek. Ebben szerepe lehet annak is, hogy a Telegram jelzi: az adatvédelmi módban működő botok nem olvashatják a csoport teljes forgalmát.
Az exportálási hiba ezt a várakozást áshatta alá, mert a böngészőben futó szkript hozzáférhetett a kompromittált HTML-oldalon megjelenített tartalomhoz.
Azokban a csoportokban, ahol engedélyezett volt a továbbítás, egyetlen rosszindulatú üzenet elméletileg számos beszélgetésbe eljuthatott. Telegram-csatornán történő terjesztéshez általában közzétételi jogosultságra vagy egy adminisztrátori fiók feletti ellenőrzésre lett volna szükség. Kevésbé korlátozott csoportokba azonban egy egyszerű csoporttag is továbbíthatta az URL-gombot tartalmazó üzenetet.
Ez nem jelentette azt, hogy az érintett csoport minden tagjának beszélgetései azonnal kiszivárogtak. A támadáshoz meghatározott eseménysorra volt szükség:
- A rosszindulatú üzenetnek be kellett kerülnie a beszélgetésbe.
- Egy résztvevőnek sérülékeny Telegram Desktop-verzióval kellett exportálnia az üzenetet is tartalmazó időszakot.
- Az elkészült HTML-fájlt JavaScript futtatására képes böngészőben kellett megnyitnia.
A jóval korábban elhelyezhető kód miatt a támadás késleltetve aktiválódhatott. Az üzenet továbbítója talán soha nem tudta meg, hogy rosszindulatú tartalmat terjesztett. A kódot később egy másik résztvevő indíthatta el, például archiválás, vizsgálat, jogi ellenőrzés vagy megfelelőségi feladat során.
Üzenetek, metaadatok és helyi fájlinformációk kerülhettek ki
A beillesztett JavaScript a helyi HTML-dokumentum környezetében futott. Megvizsgálhatta az oldal dokumentumobjektum-modelljét, vagyis DOM-ját, és összegyűjthette az export adott részében szereplő információkat.
A kutatók szerint így hozzáférhetővé válhatott az üzenetek szövege, a feladók neve, az időbélyegek és a beszélgetés metaadatai, például annak neve, típusa és taglétszáma.
A szkript a böngészőből a helyi fájl elérési útját is megszerezhette. Ez felfedhette az operációs rendszerben használt felhasználónevet és a könyvtárszerkezet egyes részleteit.
A megszerzett tartalmat ezután egy támadó által irányított internetes szerverre továbbíthatta.
A sérülékenység nem biztosított automatikus hozzáférést az áldozat teljes Telegram-fiókjához vagy valamennyi beszélgetéséhez. A Telegram Desktop a hosszabb HTML-exportokat külön oldalakra bontja, amelyek egyenként legfeljebb 1000 üzenetet tartalmaznak.
Az egyik fájlba ágyazott rosszindulatú szkript ezért az adott dokumentumban megjelenített tartalomhoz férhetett hozzá. Nem kapott automatikusan hozzáférést más exportoldalakhoz, amelyek nem ugyanabban a böngészőkörnyezetben voltak betöltve.
A tényleges kitettség így az exportálási beállításoktól, a rosszindulatú üzenet helyétől és attól függött, hogy a felhasználó melyik létrehozott fájlt nyitotta meg.
Egyetlen beszélgetés exportja jellemzően a kiválasztott időszakon belül minden résztvevő üzeneteit tartalmazza. A teljesebb fiókexport viselkedése ettől eltérhet a beszélgetés típusától és a kiválasztott exportálási lehetőségektől függően. A Telegram hivatalos adatexportálási dokumentációja részletezi az exportált tartalom szerkezetét és bekerülési szabályait.
A kutatók elemzése kifejezetten a Telegram Desktop HTML-kimenetére összpontosított. Nem állapították meg, hogy a JSON-exportot, a mobilalkalmazásokat vagy más klienseket ugyanez a kódbeillesztési probléma érintené.
A támadók a megjelenített beszélgetést is átírhatták
A sérülékenység az üzenetek ellopása mellett a megjelenített adatok hitelességét is veszélyeztette.
Mivel a beillesztett szkript módosíthatta a böngészőben látható tartalmat, a HTML-fájl megnyitása után megváltoztathatta a látszólagos beszélgetési előzményeket. A támadó átírhatta az üzenetek szövegét, a feladók nevét, az időbélyegeket, valamint a beszélgetés sorrendjét és környezetét.
Az ExPatch ezt úgy demonstrálta, hogy az exportált beszélgetés helyére hamis Telegram-ellenőrzési oldalt jelenített meg. Valós támadásban egy ilyen felület adathalászatra is használható: e-mail-cím, jelszó, helyreállítási kód vagy más érzékeny információ megadására próbálhatná rávenni a felhasználót.
A manipuláció a böngésző által megjelenített nézetben történt. Nem módosította a Telegram rendszereiben tárolt eredeti beszélgetést, és a kutatók szerint a lemezen lévő HTML-fájlt sem írta át tartósan. A megtekintőnek ugyanakkor kevés oka lehetett arra, hogy gyanakodjon a tartalom megváltoztatására.
Ez különösen azoknál a szervezeteknél jelent problémát, amelyek az exportált beszélgetéseket üzleti nyilvántartásként kezelik. Jogi csapatok, megfelelőségi részlegek, nyomozók, újságírók és szabályozott ágazatokban működő vállalatok adatmegőrzés, bizonyítékfeltárás vagy audit céljából is exportálhatnak üzeneteket.
Ha egy érintett fájl megnyitásakor a szkript módosította a megjelenített tartalmat, az ellenőrzést végző személy pontatlan változatot láthatott a nyilvántartásból.
Az eredeti archívum ettől még változatlan maradhatott, de a manipulált nézetről készített képernyőképeket, az abból kimásolt részleteket és az arra alapozott döntéseket már érinthette a támadás.
Egy hiányzó HTML-kódolási művelet okozta a hibát
A Telegram Desktop nyílt forráskódú, így a kutatók a HTML-exportálás konkrét kódrészletéig vissza tudták követni a sérülékenységet.
Az alkalmazás export_output_html.cpp fájljában az inline gomb szövege nyers UTF-8-értékként került a létrehozott oldalba. Az exportáló más részeiben a Telegram a SerializeString() függvényt használta a HTML szempontjából különleges jelentésű karakterek átalakítására.
Ez a művelet biztosítja, hogy például a kisebb és nagyobb jelek szövegként jelenjenek meg, a böngésző pedig ne HTML-elemek kezdeteként vagy lezárásaként értelmezze őket. E nélkül egy nem megbízható féltől származó adat megváltoztathatja az oldal szerkezetét vagy működését.
A sérülékeny kódrészlet akkor került az alkalmazásba, amikor a Telegram Desktop HTML-exportja támogatást kapott az inline gombok megjelenítéséhez. A kutatók forráskód-előzményeket vizsgáló elemzése szerint a változtatás 2024 márciusában jutott el a stabil verzióba, és körülbelül két év négy hónapig maradt jelen.
A Telegram javítása a már meglévő karakterátalakító függvényt alkalmazta a gomb szövegére is. A GitHubon nyilvánosan elérhető módosításban a nyers kiírást a megfelelően kódolt változat váltotta fel.
Ugyanez a kódmódosítás egy további beillesztési lehetőséget is lezárt, amely a másolási műveletet kezelő gombok JavaScriptjét érintette. A Telegram a tartalom JavaScript-karakterláncba helyezése előtt a fordított perjeleket és az idézőjeleket is megfelelően kódolta.
A forráskódban kicsi volt a változtatás, a biztonsági hatása azonban jelentős: a gombfeliratként megadott tartalom adatként került a dokumentumba, így a böngésző nem aktív HTML-kódként vagy szkriptként kapta meg.
Külön biztonsági figyelmeztetés nélkül jelent meg a javítás
Az ExPatch 2026. június 3-án, két nappal a felfedezés után jelentette a sérülékenységet a Telegramnak. A kutatók szerint működést igazoló demonstrációt is mellékeltek, és kizárólag saját ellenőrzésük alatt álló fiókokkal és csoportokkal tesztelték a hibát.
A javítás június 30-án készült el, és július elején került a nyilvános forráskódtárba. Az ExPatch idővonala szerint a Telegram július 1-jén visszaigazolta a bejelentést, és hibavadász jutalmat ajánlott fel.
A kutatók közölték, hogy visszautasították az 500 dolláros jutalmat, és azt kérték, hogy az összeget jótékony célra ajánlják fel.
A javítás először a Telegram Desktop 6.9.4-es bétaverziójában jelent meg, majd bekerült a stabil 7.0.1-es kiadásba is.
A biztonsági problémát azonban nem nevezték meg a nyilvános kiadási megjegyzésekben, a Telegram Desktop változásnaplójában vagy a forráskódtár külön biztonsági közleményében. Amikor az ExPatch szeptember 12-én közzétette kutatását, még nem jelent meg CVE-rekord.
A kutatók szerint a Telegram a javítás után sem hagyta jóvá a nyilvános közzétételt. A vállalat azzal érvelt, hogy a már kezelt sérülékenységek részleteit is fel lehet használni a felhasználók megkárosítására. Az ExPatch végül azt követően publikálta technikai jelentését, hogy megerősítette a javított verziók elérhetőségét.
A Telegram hibavadászprogramjának szabályai szerint azok a sérülékenységek nem jogosultak jutalomra, amelyeket a javítás előtt nyilvánosságra hoznak vagy harmadik féllel megosztanak. Az ExPatch álláspontja szerint a szabályzat nem írja elő kifejezetten, hogy a javítás megjelenése után is engedélyt kell kérni a technikai részletek közzétételéhez.
A nyilvánosságra hozatal körüli vita ennél a hibánál azért különösen fontos, mert a javítás nem tudta semlegesíteni a korábban elkészített fájlokat. Külön figyelmeztetés nélkül a felhasználók úgy frissíthették a Telegram Desktopot, hogy közben nem tudtak a régi HTML-archívumaikban megmaradó futtatható kód lehetőségéről.
A korábban exportált HTML-fájlok továbbra is kockázatot jelenthetnek
A Telegram Desktop frissítése megakadályozza, hogy az újonnan létrehozott exportokban ugyanez a sérülékeny kimenet keletkezzen. A frissítés azonban nem vizsgálja át és nem írja újra a számítógépen, megosztott meghajtón, dokumentumkezelő rendszerben vagy biztonsági mentésben már meglévő archívumokat.
A javítás előtt létrehozott HTML-fájl statikus dokumentum. Ha rosszindulatú inline gombot tartalmaz, az abba ágyazott szkript a fájlban marad attól függetlenül, hogy az exportáláshoz használt alkalmazást időközben frissítették-e.
A felhasználóknak és szervezeteknek ezért a régi Telegram HTML-exportokat nem megbízható, aktív tartalomként kell kezelniük. Az elsődleges javaslat a Telegram Desktop frissítése, majd a megőrzendő vagy megvizsgálandó beszélgetések újbóli exportálása.
| Kiadási csatorna | Első javított verzió | Megjelenés |
|---|---|---|
| Béta | 6.9.4 | 2026. július 3. |
| Stabil | 7.0.1 | 2026. július 14. |
A javított verziókat és a régi exportokkal kapcsolatos figyelmeztetést az ExPatch technikai elemzése részletezi.
A felhasználóknak a Telegram hivatalos terjesztési csatornáján elérhető legfrissebb verziót célszerű telepíteniük, nem pusztán az első javított kiadásig frissíteniük.
Ha az újbóli exportálás nem megoldható, a régi fájlokat csak ellenőrzött környezetben, letiltott JavaScript mellett szabad megnyitni. A szervezetek megfontolhatják az eredeti fájl bizonyítási célú megőrzését, miközben a rendszeres megtekintéshez megtisztított másolatot készítenek.
A biztonsági csapatoknak át kell tekinteniük a megosztott tárhelyeket, ügykezelő rendszereket és megfelelőségi adattárakat, különös figyelemmel a 2026 júliusa előtt, illetve a javítás telepítéséig létrehozott Telegram HTML-archívumokra.
Fokozott figyelmet érdemelnek a nagy csoportokból, nyilvános közösségekből, kriptovalutával foglalkozó csatornákból és munkahelyi beszélgetésekből készült exportok, amelyekben gyakoriak voltak a botüzenetek vagy a továbbított tartalmak.
A kimenő hálózati forgalom megfigyelése segíthet azonosítani a helyi HTML-fájlok megnyitásakor induló gyanús kapcsolatokat. Kizárólag hálózati védelemre támaszkodni azonban nem elegendő. A támadó változó infrastruktúrát vagy megbízhatónak tekintett felhőszolgáltatásokat is használhat, illetve olyan szkriptet készíthet, amely adatküldés nélkül módosítja a dokumentumot.
A kutatás nem igazolt valós támadássorozatot
A nyilvános kutatás nem bizonyította, hogy a sérülékenységet a javítás előtt Telegram-felhasználók elleni valós támadásokban használták volna ki. Az ExPatch ellenőrzött környezetben mutatta be a működést, és nem állította, hogy a módszert alkalmazó rosszindulatú kampányokat azonosított.
Ez lényeges különbség. A hiba működő támadási lehetőséget teremtett az üzenetek ellopására és a dokumentumok megjelenítésének manipulálására, de kihasználásához több felhasználói lépés kellett, mint azokhoz az üzenetküldő alkalmazásokat célzó támadásokhoz, amelyek már egy üzenet fogadásakor vagy előnézetének megjelenítésekor aktiválódnak.
Az áldozatnak sérülékeny Telegram Desktop-verzióval kellett HTML-formátumba exportálnia az érintett beszélgetést, majd meg kellett nyitnia a megfelelő fájlt egy böngészőben. Sok Telegram-felhasználó egyáltalán nem használja az exportálási funkciót, ami jelentősen korlátozza a kitettségét.
A kockázat magasabb lehet azoknál a vállalatoknál, állami szerveknél, jogi csapatoknál, pénzügyi szervezeteknél, kutatóknál és rendszergazdáknál, akik rendszeresen archiválják a kommunikációjukat. Ezekben a környezetekben az exportok nagyobb valószínűséggel tartalmaznak üzletileg érzékeny, jogi védelem alatt álló vagy működési szempontból fontos információkat.
A Telegram eredeti exportálási funkciója azt szolgálta, hogy az asztali felhasználók egyes beszélgetéseket vagy fiókadatokat ember által olvasható HTML- és géppel feldolgozható JSON-formátumban mentsenek el.
A sérülékenység megmutatja, hogyan hozhat létre egy archiválási funkció új biztonsági határt: a natív alkalmazásban biztonságosan megjelenített információ veszélyessé válhat, ha megfelelő átalakítás nélkül kerül egy webes dokumentumba.
Frissítés, újbóli exportálás és a régi archívumok ellenőrzése szükséges
Az első teendő annak biztosítása, hogy minden Telegram Desktop-telepítés naprakész legyen. A klienst központilag kezelő szervezeteknek a ténylegesen telepített verziókat kell ellenőrizniük; nem elegendő arra hagyatkozni, hogy a felhasználók szerint az automatikus frissítés befejeződött.
A rendszergazdáknak azonosítaniuk kell a Telegram Desktop 4.15.1–6.9.3 verzióival készített HTML-exportokat, és meg kell állapítaniuk, szükség van-e még rájuk.
A megőrzendő beszélgetéseket javított klienssel újra kell exportálni. A feleslegessé vált exportokat a szervezet adatmegőrzési és biztonságos törlési előírásainak megfelelően kell kezelni.
A megőrzendő régi archívumokat nem szabad rutinszerűen, hagyományos böngészőben megnyitni. A biztonsági csapatok elkülönített elemzőrendszereket használhatnak, letilthatják a JavaScriptet, vagy jóváhagyott tartalomtisztítási folyamaton vezethetik át a fájlokat, mielőtt a vizsgálatot végző vagy megfelelőségi munkatársak megtekintik őket.
A felhasználóknak az érzékeny csoportokba továbbított botüzenetekkel is körültekintően kell eljárniuk, különösen akkor, ha azok inline gombokat tartalmaznak. A frissítés megszünteti az ismert exportálási hibát, de a szükségtelen botüzenetek korlátozása az érzékeny beszélgetésekben a hasonló megvalósítási hibák támadási felületét is csökkentheti.
Az eset azt mutatja, hogy az üzenetek biztonsága a továbbítás közbeni titkosításon és a hozzáférés-szabályozáson túl az adatok teljes életciklusát érinti. A beszélgetések védettek lehetnek az üzenetküldő szolgáltatáson belül, majd sérülékennyé válhatnak átalakítás, exportálás, biztonsági mentés vagy más alkalmazásban történő megtekintés során.
Ebben az esetben egyetlen, megfelelő HTML-kódolás nélkül kezelt mező tette lehetővé, hogy egy hétköznapinak látszó botgomb tartalma a Telegram saját felületéről a böngésző futtatási környezetébe kerüljön. A rosszindulatú kód hosszú ideig láthatatlan és inaktív maradhatott, majd egy szabályos archiválási feladat során futott le.
A Telegram kijavította az alkalmazás hibáját, de a régi HTML-exportokat külön is kezelni kell. Amíg ezeket a fájlokat nem exportálják újra vagy nem tisztítják meg biztonságosan, az asztali alkalmazás frissítése önmagában nem szünteti meg a fennmaradó kockázatot.
A fordítás alapja: „Critical Telegram Desktop Flaw Allows Hidden JavaScript To Steal Messages From Exported Chats” – a bemásolt cikk.





