Нэг цэг таслал (;) хангалттай байв: Telegram Desktop-ийн данс булаах ноцтой эмзэг байдал (CVE-2026-107181) илчлэгдлээ
Дэлхий даяар олон зуун сая хөгжүүлэгч, крипто сонирхогч, технологийн салбарынхны өдөр тутмын гол харилцааны хэрэгсэл болсон Telegram Desktop аппликейшнд хэрэглэгчийн компьютероос сессийн өгөгдлийг нууцаар татан авч, аккаунтыг бүрэн булаах (Account Takeover) боломжтой байсан CVE-2026-107181 (CVSS 8.6) эмзэг байдлын дэлгэрэнгүй шинжилгээ болон PoC (Proof-of-Concept) нийтэд ил боллоо.
Аюулгүй байдлын судлаач Эмилиано Версинигийн (BeakSec) нээсэн энэхүү цоорхой нь орчин үеийн нарийн төвөгтэй 0-day халдлага бус, харин программ хангамжийн архитектур дахь энгийн нэгэн IPC (Inter-Process Communication) өгөгдөл задлах логикийн алдаанаас үүдэлтэй юм.
Хөгжүүлэгчийн өнцгөөс энэ алдаа чухам хэрхэн ажилладаг, яагаад ийм ноцтой үр дагаварт хүргэснийг нарийвчлан задалъя.
Алдааны уг сурвалж: "Single-Instance" архитектур ба IPC injection
Telegram Desktop-ийг системд нээлттэй байхад хөтөч дээрээс эсвэл гуравдагч програмаас tg:// эхлэлтэй холбоос дээр дарахад үйлдлийн систем шинэ процесс үүсгэдэг. Энэ шинэ процесс нь аль хэдийн ажиллаж байгаа үндсэн Telegram процесс руу холбоосыг дамжуулахын тулд локал сокет (local socket / named pipe) ашиглан холбогддог бөгөөд үүнийг десктоп аппликейшнүүдэд түгээмэл ашигладаг single-instance загвар гэдэг.
Гэвч Telegram-ийн инженерүүд энэхүү дотоод IPC протоколдоо өөрсдийн гар хийцийн (homemade) текстийн формат ашигласан байв:
OPEN:<шилжүүлсэн_url>;
Үндсэн процесс локал сокетоор ирж буй өгөгдлийг хүлээн аваад зүгээр л цэг таслал буюу ; тэмдэгтээр салган тус бүрийг нь бие даасан тушаал гэж үзэж ажиллуулдаг байжээ.
Хамгийн том алдаа нь: Холбоос дотор ирсэн цэг таслалыг огт sanitize буюу escape хийлгүйгээр шууд IPC стрим рүү залгасан явдал юм (CWE-143: Improper Neutralization of Record Delimiters).
Хэрэв халдагч хэрэглэгчийг доорх маягийн тусгай холбоос дээр даруулбал:
tg://open?param=1;OPEN:өөр_команд;
Үндсэн процесс үүнийг нэг URL гэж үзэхийн оронд ;-ээр салгаж, халдагчийн залгасан хоёр дахь тушаалыг үндсэн горимдоо бие даан биелүүлж эхэлнэ.
Халдлагын гинжин хэлхээ: "interpret:" ба хоосон түлхүүр
Нэг тушаал тарихад л бүхэл бүтэн данс алдагдана гэж үү? Халдагч энэхүү IPC тарилгыг дараах хоёр сул талтай нэгтгэн бүрэн халдлага болгосон байна:
1. Түүхий үлдсэн дотоод хэрэгсэл (interpret:)
Telegram Desktop-ийн эх кодод анх бүтээгдэхүүн турших, релиз бэлтгэхэд зориулагдсан interpret: схемийн тусгай handler байсаар байжээ. Энэхүү дотоод тушаал нь системийн локал замыг зааж өгөхөд ямар ч хэрэглэгчийн зөвшөөрөлгүйгээр тухайн файлыг уншиж, заасан Telegram чат руу автоматаар илгээх боломжтой байв.
2. Хоосон нууц үгээр "шифрлэгдсэн" сессийн файлууд
Telegram Desktop хэрэглэгчийн сессийг tdata (Telegram Data) хавтсанд хадгалдаг. Системд DEK (Data Encryption Key) болон KEK (Key Encryption Key) бүхий шифрлэлтийн архитектур бий боловч хэрэв хэрэглэгч аппликейшн дээрээ орон нутгийн хамгаалалтын код (Local Passcode) тохируулаагүй бол KEK нь хоосон текстээс (empty string) үүсгэгддэг.
Өөрөөр хэлбэл, шифр тайлах salt түлхүүр нь tdata/key_datas дотор ил бичигдсэн байдаг тул файлуудыг хуулж авахад л сессийг ямар ч саадгүй тайлж, өөр компьютер дээр хуулбарлан нэвтрэх боломжтой гэсэн үг юм.
Бодит халдлагын хувилбар
- Халдагч өөрийн зохион байгуулсан сувагт зааврын файлуудыг байршуулж, золиосоо нууцаар группдээ нэмнэ (Telegram анхдагч тохиргоогоороо жижиг файлуудыг автомат татдаг).
- Хэрэглэгч рүү хуурамч холбоос илгээнэ. Холбоос нь 302 redirect-ээр тусгай цэг таслал агуулсан
tg://хаяг руу үсэрнэ. - IPC injection-оор
interpret:ажиллаж, хохирогчийнtdataхавтсан дахь түлхүүр бүхий 3 файлыг халдагчийн суваг руу чимээгүйхэн илгээнэ. - Халдагч эдгээр файлаар хэдхэн хормын дотор золиосынхоо дансыг бүрэн эзэмшинэ.
Хөгжүүлэгчдийн сурах ёстой сургамж
Энэхүү ноцтой алдаа нь программ хангамж хөгжүүлэгчдэд хэд хэдэн чухал сургамжийг сануулж байна:
- Гар хийцийн текстийн протоколоос татгалз: Системийн дотоод IPC харилцаанд энгийн стринг хуваах (string split) арга ашиглах нь үргэлж эрсдэлтэй. Length-prefixed framing эсвэл Protobuf, JSON зэрэг бүтэцлэгдсэн формат ашиглах, зайлшгүй текстийн зааглагч ашиглах бол тусгай тэмдэгтүүдийг хатуу чанд escape хийж байх шаардлагатай.
- Локал хандалтыг сохроор бүү итгэ: Зөвхөн
localhost-оос ирж байгаа IPC мессеж байлаа ч түүнд "Zero Trust" зарчмаар хандах ёстой. OS-ийн browser, protocol handler-ууд нь халдагчийн дамжуулагч болох боломжтой. - Debug/Internal логикийг Production-д бүү үлдээ: Хөгжүүлэлтийн явцад ашиглаж байсан аюултай тушаалууд (файл уншиж илгээх г.м.) release build дээрээс бүрэн цэвэрлэгдсэн байх учиртай.
- Passcode-гүй Data Encryption бол "хуурмаг хамгаалалт": Хэрэглэгч нууц үг оруулаагүй тохиолдолд түлхүүрийг шифрлэсэн өгөгдлийнх нь хажууд тавих нь халдагчийн өмнө хаалгаа түгжээгүй орхисонтой ижил юм.
Одоо юу хийх вэ?
Telegram уг алдааг Telegram Desktop 7.2.9 хувилбар дээр хаасан тул хэрэв та уг програмыг ашигладаг бол:
- Нэн даруй 7.2.9 буюу түүнээс дээш хувилбар руу шинэчлэх;
- Telegram-ийнхөө Settings -> Privacy and Security -> Passcode Lock цэс рүү орж, аппликейшндээ орон нутгийн нууц үг тохируулахыг зөвлөж байна. Энэ нь
tdataдахь шифрлэлтийн түлхүүрийг хүчтэй болгож, цаашдын ижил төстэй халдлагаас найдвартай сэргийлнэ.
Эх сурвалж: BeakSec Security Advisory (CVE-2026-107181) & Tenable NVD Report
Сэтгэгдэл
Ачаалж байна...