Telegram Desktop 7.2.8 及更早版本(已在 Windows 6.9.3 確認)存在一個嚴重漏洞(CVE-2026-107181,CVSS 評分 8.1 High),攻擊者可透過誘使使用者點擊連結,利用 IPC 注入缺陷讀取本地任意檔案並最終接管帳號。該漏洞已在版本 7.2.9 中修復。

漏洞成因涉及兩個缺陷的結合:首先是 IPC 序列化中的注入問題。當 Telegram 已在運行時,新啟動的進程會透過本地 Socket 將點擊的連結以純文字形式傳遞給正在運行的實例。Telegram 使用自定義格式序列化指令,以分號作為分隔符,但未對連結中的分號進行轉義。因此,攻擊者可在連結中嵌入分號,將單一連結拆分為多個指令注入到正在運行的實例中。

其次是內部 URI 方案 'interpret:' 缺乏授權檢查。'interpret:' 是 Telegram 內部用於發布版本的 URI 方案,它會讀取指定路徑的指令檔案,並將檔案內容發送到指定的聊天頻道,過程中既不檢查請求者身份,也不要求使用者確認。透過注入的 'OPEN:' 指令,攻擊者可觸發 'interpret:' 方案。

攻擊者只需將一個包含特定指令的文本檔案作為附件發送到 Telegram 群組中。由於 Telegram Desktop 預設會自動下載群組中小於 8 MiB 的檔案,該檔案會自動保存到預設下載目錄(例如 Windows 上的 'C:\Users\<user>\Downloads\Telegram Desktop\')。攻擊者可透過相對路徑引用該檔案,無需知道具體的使用者名稱。指令檔案可指定將本地任意檔案(如 SSH 密鑰、瀏覽器密碼庫或 Telegram 的 'key_datas' 檔案)發送到攻擊者控制的頻道。

若使用者未設定本地密碼(預設情況),Telegram 的加密金鑰派生過程依賴空字串和存儲在 'key_datas' 檔案中的明文 Salt。攻擊者讀取 'key_datas' 後,可計算出 KEK 並解包 DEK,進而解密包含會話授權的檔案,從而完全接管使用者的 Telegram 帳號。

事件背景

Telegram Desktop 註冊了 'tg://' URI 方案。當系統遇到此類連結時,會啟動 Telegram 進程。若 Telegram 已在運行,新進程會透過本地 Socket 將連結傳遞給現有實例後退出。'interpret:' URI 方案並非註冊於操作系統,而是僅存在於 Telegram 內部代碼中,原本用於自動化發布版本時將構建檔案和更新日誌發送到頻道。

社群觀察

社群討論集中在軟體預設權限與沙箱化的必要性。有用戶引用論文指出複雜輸入格式等同於位元組碼,接收端等同於虛擬機,暗示注入風險的普遍性。其他用戶批評軟體預設允許訪問所有檔案和自由聯網,認為這在現代已不安全。部分用戶提到 Telegram 會重新啟用用戶已禁用的設定,導致用戶難以掌控應用行為,並建議使用沙箱(如 Linux 上的 firejail)或僅使用網頁版以限制權限。