Съдържание

/telegram-desktop-one-click-account-takeover/telegram-desktop-one-click-account-takeover.png

Пълен курс по етично хакерство от нула до експерт

Хаквайте като „black hat“ хакери. Тестване за проникване, Kali Linux, WiFi и уеб хакерство, както и хакерският начин на мислене зад всичко това.

Едно щракване в група в Telegram изпрати 3 от регистрационните файлове на жертвата на атакуващ. Жертвата не отвори никакъв файл и не въведе парола. Версии до 7.2.8 го позволяваха, а пробивът беше наличен от 2018 г.

Започва с покана. Някой, когото не познавате, ви добавя в група в Telegram, а при настройките по подразбиране на Telegram това не изисква вашето съгласие. В тази група се намират няколко малки текстови файла и макар никога да не ги отваряте, те вече са на вашия диск, защото Telegram Desktop изтегля файлове до 8 MiB в група самостоятелно, в момента, в който погледнете чата.

След това се появява нормално изглеждаща връзка, щраквате върху нея и три файла, които заедно представляват вашия профил за вход в Telegram, напускат машината ви и се озовават в групата на атакуващия. Няма подкана за въвеждане на парола и няма предупреждение, а вторият прозорец на Telegram, който извършва действието, се отваря и затваря твърде бързо, за да бъде забелязан.

Това е атаката от край до край. Изследовател, известен като beaksec, откри веригата зад нея и я публикува на 3 октомври 2026 г. Вече има и име — CVE-2026-107181, оценена с 8.1 по по-старата скала за критичност и 8.6 по по-новата. Работи на версии до 7.2.8 включително, потвърдено за Windows.

Две малки грешки я правят възможна. Сами по себе си нито една от тях не е катастрофална. Комбинирани заедно обаче, те предават вашия акаунт на друг човек.

Нека започнем с това какво се случва, когато щракнете върху връзка, принадлежаща на Telegram. Windows вижда tg: отпред и търси приложението, което я е регистрирало. Telegram го е направил, така че Telegram получава връзката.

Ако приложението все още е затворено, то стартира, прочита връзката и я обработва. Един процес, нищо за препращане.

Ако Telegram вече е отворен, Windows не проверява. Той така или иначе стартира второ копие. Това второ копие трябва да установи, че е допълнителното, и го прави, като се свързва с първото през локален канал между двете програми на същата машина. Този канал има име: междупроцесна комуникация (IPC).

Подобен канал пренася текст, а не цели обекти. Затова връзката се трансформира в текстов ред, предава се и се възстановява от другата страна. Telegram записва този ред в собствен формат: ключова дума, стойност и точка и запетая за затваряне. Връзка за отваряне изглежда така по канала:

Работещото копие прочита реда, разделя го при всяка точка и запетая и третира частите като отделни инструкции. Това работи добре, докато дадена стойност не съдържа собствена точка и запетая. Telegram никога не ескейпва тази точка и запетая. Така че връзка, изградена по следния начин:

пристига като две инструкции вместо една:

Текст, контролиран от атакуващия, се е превърнал в команда, която Telegram изпълнява. Това е първата грешка.

Командата в този пример само затваря приложението. Тази, която има значение, е OPEN:, защото OPEN: приема всякаква връзка, без филтър за нейния тип. А вътре в собствения код на Telegram се крие вид връзка, за която операционната система не знае нищо и която се използва само в рамките на приложението: interpret:.

interpret: прочита малък файл с инструкции от диска и изпраща посочения в него файл в чат. Telegram я разработи преди години, за да публикува собствените си версии. Скрипт създаваше текстов файл с името на канала и компилацията за качване, а Telegram извършваше публикуването. Файлът с инструкции изглежда така:

Редът from: е единствената защита. Той проверява дали версията се публикува от правилния акаунт. Ако редът бъде пропуснат, проверката никога не се изпълнява. Функцията не показва никакво потвърждение и никога не проверява кой подава заявката. Тя прочита файла и го изпраща.

Ако се достигне до interpret: чрез неескейпнатата точка и запетая, щракната връзка може да накара Telegram да прочете файл от вашия диск и да го изпрати в група, контролирана от атакуващия:

Тази функционалност никога не е била предназначена за потребители. Тя е присъствала в десктоп приложението поне от декември 2018 г.

За да проработи това, нападателят се нуждае неговият файл с инструкции вече да се намира на вашата машина, на път, който той знае. Автоматичното изтегляне му предоставя и двете.

Telegram Desktop запазва файловете от група директно в една папка. В Windows:

Той знае папката. Единственото нещо, което не знае, е вашето потребителско име в Windows. Но то не му и трябва. interpret: приема и относителни пътища, изчислени от собствената папка с данни на Telegram, и оттам се изкачва няколко папки нагоре директно в Downloads, без да е необходимо името:

Така той пуска файловете с инструкции в групата, Telegram ги изтегля вместо вас и пътят е предварително ясен.

Остава още една част: да бъдете накарани да щракнете извън Telegram. Връзка tg:, докосната вътре в чат на Telegram, се обработва от самото приложение и никога не достига до този локален канал, така че няма в какво да се инжектира.

С уеб връзките е различно. Telegram няма собствен браузър, така че връзка с https се отваря в системния ви браузър. Атакуващият изпраща нормално изглеждаща https връзка в чата, а неговият собствен сървър отговаря с пренасочване към манипулираната tg: връзка. В зависимост от вашия браузър и от това дали вече сте отваряли връзки на Telegram, системата може да попита веднъж дали да отвори Telegram, като вероятно вече сте щраквали с потвърждение на такава подкана преди, без да се замисляте.

Един файл с инструкции изпраща една цел. За да вземе три файла, той публикува три файла с инструкции и наслагва три команди в една-единствена връзка:

И така, защо три и кои точно три. Telegram съхранява вашите данни за вход на диска в криптиран вид. Отварянето им използва два ключа. Дълъг произволен ключ, DEK, криптира вашите данни. Втори ключ, KEK, криптира само DEK, а самият KEK се изгражда от вашия локален код за достъп заедно с малко допълнителни данни (salt), съхранявани до данните.

Telegram Desktop няма зададен код за достъп, освен ако не зададете такъв сами в настройките, и именно това превръща прочитането на файл в пробив в системата. При незададен код за достъп KEK се изгражда от празна стойност и тази сол (salt), а тя се намира в открит вид в същия файл като криптирания DEK. Прочетете ли този единствен файл, можете да възстановите KEK, да отключите DEK и оттам да получите достъп до самите данни за вход.

  • → key_datas, солта (salt) и криптираният ключ
  • → файлът за оторизация, доказателството, че сте влезли в профила си
  • → индекс, необходим на Telegram, за да го зареди

Папката, която ги съдържа, носи едно и също име при всяка инсталация, тъй като произлиза от фиксирана дума, а не от характеристики на вашата машина. Пускането на трите файла в новоинсталиран Telegram на неговия собствен компютър и стартирането му прави така, че вашата сесия се отваря.

Това е частта, която изненадва хората, смятащи се за защитени. Това не е вход в системата. Той никога не въвежда телефонния ви номер, така че на телефона ви не се изпраща код. Никога не му се изисква вашата парола за двуфакторна автентикация, тъй като Telegram я изисква само при вход, а той не влиза в профила. Той пренася вашата отворена сесия на своята машина и продължава като вас. Собствената документация на Telegram го заявява ясно: след като една сесия е оторизирана, тя се изпълнява като съответния потребител без допълнителни проверки.

Локалният код за достъп (passcode) не спира извличането на файловете, но променя математическия модел, който ги защитава, така че откраднатата сесия няма да се отвори. Това е единственото нещо, което обезсилва тази атака, така че задайте такъв код, дори когато ви се струва дребен детайл.

Едно ограничение работи във ваша полза. Няколко действия все още изискват паролата за двуфакторна автентикация дори в рамките на активна сесия, като например изпращане на плащане или прехвърляне на канал. Четенето на вашите чатове или публикуването от ваше име обаче не изисква нищо.

А самият профил е само най-чистата награда. Уязвимостта предоставяше начин да се прочете всеки файл от диска и да се изпрати навън. Същият кликнат линк можеше да извлече частен SSH ключ, хранилището за пароли на браузър, файл с идентификационни данни за облачни услуги или конфигурационен файл, съдържащ API токен. Файловете за вход на Telegram бяха просто най-удобното нещо за вземане.

Telegram отстрани уязвимостта на 16 септември 2026 г. с къмит, който премахна interpret: и въведе ескейпване на разделителя, така че точка и запетая в стойност вече не може да служи като граница. Този единствен къмит изтри 372 реда, включително скрипта за релийз от 208 реда, за който бе написана функцията. Инструмент за разработчици от 2018 г. е бил включван в настолното приложение, а поправката тихо го премахна.

На следващата сутрин корекцията за сигурност бе пусната като версия 7.2.9. Бележките по изданието съдържаха само едно изречение: „Fix some tlottie incorrect renderings.“ Нямаше официален бюлетин за сигурност (advisory), а къмитът, затворил веригата, е озаглавен „Remove legacy interpret path helper.“

Докладът е достигнал до Telegram чрез Zero Day Initiative на 25 юни, така че пробивът е останал отворен в продължение на 83 дни. Публичният идентификатор CVE-2026-107181 бе присвоен едва на 7 октомври, като бе назначен от фирма за сигурност, а не от Telegram.

Докладите не показват признаци това да е било експлоатирано активно преди откриването му, като изследователят го е потвърдил на Windows.

Ако използвате Telegram на настолния си компютър, отворете го и проверете версията:

  • → Обновете до 7.2.9 или по-нова версия. Това е единствената стъпка, която напълно отстранява проблема.
  • → В Настройки, в секцията „Поверителност и сигурност“, включете „питай къде да се записва всеки файл“, за да спре автоматичното изтегляне.
  • → Задайте кой може да ви добавя към групи на „Моите контакти“.
  • → Задайте локален код за достъп и изберете силен такъв.