資安雷達 2026 年 10 月 11 日

2026-10-11 — Telegram Desktop 一鍵讀走本機檔案,7.2.9 靜默修補

primary=https://beaksec.github.io/posts/telegram-desktop-one-click-account-takeover/ primary=https://github.com/telegramdesktop/tdesktop/commit/db3405699f8fc3ae28a58d2348b7d13a43c0590a primary=https://www.cve.org/CVERecord?id=CVE-2026-107181

Telegram Desktop 單點一下即可被讀走本機檔案,CVE-2026-107181 在 7.2.9 靜默修補

beaksec 研究文章 · 2026-10-03(2026-10-07 更新)

Telegram Desktop 單一實例(single-instance)的 IPC 把使用者點開的連結當成純文字轉給已執行的程式,卻沒有跳脫分隔字元,讓一條連結能被拆成多道指令;其中一道指令可以走到原本只給發版工具用的 interpret: 內部協定,把本機任意檔案傳到聊天室。研究者 beaksec 把這個漏洞串鏈稱為「IPC 注入的一鍵帳號接管」,編號 CVE-2026-107181,CVSS 3.1 為 8.1(High,向量 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N)。

受影響範圍是 Telegram Desktop 至 7.2.8(作者在 Windows 6.9.3 上確認),修補版本為 7.2.9。

漏洞機制

Telegram Desktop 為了避免開出第二個視窗,會把新啟動的行程收到的參數,經由本機 socket 交給已經在跑的實例。這條 socket 用分號分隔各筆指令,而 URL 參數裡的分號沒有被跳脫。換句話說,一條 tg:// 連結只要在參數裡夾帶分號,接收端就會把後半段當成另一道獨立指令。

第二個缺陷是缺少授權檢查:內部的 interpret: 處理器原本為發版工具設計,會讀取指定檔案並上傳到頻道或超級群組,過程不驗證呼叫者、也不需要使用者確認。一旦能經由注入的 OPEN: 指令到達它,就成為任意本機檔案讀取的原語(primitive)。

攻擊只需要受害者點一次:一般的 https 連結重新導向到精心構造的 tg:// 連結即可。作者刻意未公開注入字串與檔案目標,這裡也不重述。

修補內容

修補 commit 是 db3405699f,標題為「Remove legacy interpret path helper.」,共改動 11 個檔案(+126 / −372),刪除量遠大於新增量,因為重點是把整條功能拿掉。依作者的整理,它做了四件事:

  • 移除 interpret:// 協定與 Support::InterpretSendPath,檔案讀取原語從根源消失。
  • IPC 輸出時,對 ; 與 % 以百分比加十六進位編碼跳脫。
  • 同一條連線若帶有 OPEN: 記錄,就略過 CMD: 與 CTRL: 記錄。
  • 同一條連線一旦出現非本機 URL,就丟棄其中的本機檔案路徑。

Diff 中最關鍵的跳脫邏輯如下,新程式在組 OPEN: 指令時先對 URL 做跳脫:

+  if (code < 32 || code > 127 || ch == QChar('%') || ch == QChar(';')) {
+    result.append('%');
+  commands += u"OPEN:"_q
+  + EscapeTo7bit(url.toString(QUrl::FullyEncoded))
-  if (url.scheme() == u"interpret"_q) {
-    interprets.append(url.path());

修補與揭露的落差

這個修補是廠商自行發現並靜默處理的:作者於 2026-06-25 透過 ZDI 通報,廠商在 2026-09-16 提交修補,7.2.9 於 2026-09-17 發布,ZDI 在 2026-09-30 以「已修復」結案並把揭露權還給作者。作者指出,7.2.9 的更新說明只提到一項渲染修正,沒有任何安全公告。

日期事件
2026-06-25透過 ZDI 通報
2026-09-16廠商提交修補 db3405699f
2026-09-177.2.9 發布
2026-09-30ZDI 結案,揭露權回到作者
2026-10-03文章發表
2026-10-07指派 CVE-2026-107181

實務上的後果是:只看更新說明的人不會知道 7.2.9 是安全更新。自動更新被關掉、或以 portable 版長期掛著的桌面端,會一直停在可被利用的狀態,而且 CVE 編號是在修補發布三星期後才出現,漏洞掃描與資產盤點工具在這段期間不會有對應條目。

影響範圍

桌面版使用者是第一線:確認 Telegram Desktop 版本不低於 7.2.9。手機版不在作者描述的範圍內。

IT 與資安團隊需要自行把 7.2.9 列為最低版本,因為廠商沒有發公告,內部的版本稽核不能等 CVE feed。公司機器若允許安裝 Telegram Desktop,帳號接管的衝擊包含聊天紀錄與本機檔案外洩。

作者列出的補強設定(皆不能取代升級):

  • 啟用「每個檔案都詢問儲存位置」,避免檔案自動下載。
  • 把「誰能將你加入群組」限制為聯絡人。
  • 設定本機密碼。作者說明這擋不住檔案被偷,只是讓被偷走的本機 session 資料較難使用。

對開發者另有一個可借鏡之處:凡是用「文字協定加分隔符」在行程間傳遞使用者可控內容的單一實例機制,都應該檢查分隔符是否被跳脫,並確認內部用的指令不會從外部入口到達。此漏洞兩個缺陷單獨看都不致命,串起來才成為一鍵攻擊。

原始來源:beaksec 研究文章、tdesktop commit db3405699f、CVE-2026-107181


End of article
0
Would love your thoughts, please comment.x
()
x