Telegram Desktop の脆弱性により、任意のユーザーのファイルが盗まれることが可能だった

2026/10/10 12:02

Telegram Desktop の脆弱性により、任意のユーザーのファイルが盗まれることが可能だった

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

Telegram Desktop 7.2.9 より前のバージョンには、CVE-2026-107181 という重大なセキュリティ脆弱性があり、攻撃者がユーザーアカウントを乗っ取れるようにしています。この深刻度の高い問題は、以下の 2 つの具体的な技術的失敗に起因します。正しくないテキストコマンドの処理(セミコロン注入)と、「interpret:」リンクスキームに対する権限チェックの欠如です(このリンクスキームはアプリに対して実行すべき動作を指定するウェブプロトコルです)。その結果、悪意のあるリンクがユーザーを欺き、SSH キーやパスワードストアなどの機密なローカルファイルを自動的に読み込んでしまうことを可能にします。この脆弱性は 2026 年 6 月に最初に報告されましたが、ローカルパスコードを必要とせず、完全なアカウント乗っ取りを行うことが可能です。影響を受ける Windows ユーザーは、直ちにバージョン 7.2.9 また以降へアップグレードし、これらのシリアライゼーションエラーを修正するとともに、危険なリンクスキームを無効化する必要があります。アップデートがインストールされるまで、「各ファイルをどこに保存するかを询问する」設定を有効にするのが、悪意のある指示をダウンロードすることに対する本質的な一時的防御策となります。Telegram を安全な通信手段として利用している組織は、クラウド上の認証情報やデバイス上に保管された秘密鍵の窃取を防ぐために、このパッチの適用を最優先で実施すべきです。

本文

Telegram Desktop 遠隔ファイル読み取りとアカウント乗っ取り脆弱性 (CVE-2026-107181) の解説

誰かがあなたの参加する Telegram グループに追加し、その中のリンクをクリックした際に、あなたのアカウントが乗っ取られるリスクが発生する可能性があります。本記事では、その仕組みと対策について解説します。

概要

Telegram Desktop は、ローカルソケットを通じて既に起動中の自身のインスタンスにテキストデータとしてリンクを渡しますが、コマンド区切り文字の処理に欠陥があります。この脆弱性を悪用すると、クリックされた単一リンクが「任意のローカルファイルの読み取り」という指示に変化し、最終的にログイン情報が格納されたファイルを窃取することができます。

攻撃チェーンの仕組み

  1. インジェクション: リンク内のセミコロン(
    ;
    )をエスケープせずそのまま扱い、リンク中に複数のコマンドが混在する状況を意図的に作り込みます。
  2. interpret:
    URI スキーム
    : 注入されたコマンドのうち、内部 URI スキーム
    interpret:
    を経由してファイルを読み取る機能があり、これが認証チェックなしで任意のファイルをチャットに送信できる脆弱性です。

これらの欠陥が組み合わさることで、被害者は何気なくリンクをクリックした際にアカウント乗っ取りに至ります。


影響範囲

  • ソフトウェア: Telegram Desktop
  • 脆弱バージョン: 7.2.8 未満(Windows 版 6.9.3 で確認済み)
  • 修正バージョン: 7.2.9(コミット
    db3405699f
    )
  • CVE-ID: CVE-2026-107181
  • 重大度: High (8.1)
    • CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N

被害内容

  • 遠隔からの任意のローカルファイル読み取り
  • 攻撃者によるチャットへのデータ持ち出し(エクスフィルトレーション)
  • アカウント乗っ取り(セッション認証の取得)

1 つのリンク、2 つのプロセス

オペレーティングシステムは

tg://...
形式のリンクを検知すると、Telegram を起動します。

プロセスの動作パターン

  1. 新規起動の場合:
    • 新しいプロセスが起動し、URL オブジェクトに変換して処理します。
    • 通信は不要です。
  2. 既に動作中のインスタンスの場合:
    • OS は「既に動いている」と判断せず、新たなプロセスを起動します。
    • 最初のインスタンスが「サーバー側」でソケットをリスニングしており、新プロセス(クライアント)からリンクを受信して処理します。

シリアライゼーションと脆弱性の発生点

Telegram は独自のフォーマットを採用しています。通信は「バイト列」として行われ、オブジェクト形式ではないため**テキスト行として展開(シリアライズ)**されます。

  • 新規プロセス側:
    OPEN:
    形式で URL を書き出します。
    commands += u"OPEN:"_q + url.toString(QUrl::FullyEncoded) + ';';
    
  • 既存インスタンス側: バイト列を読み取り、セミコロン (
    ;
    ) で分割
    して複数の指示に分けて処理します。
    // セミコロンで分割し、各部分を独立した指示として扱う
    auto cmd = base::StringViewMid(cmds, from, to - from);
    if (cmd.startsWith(u"OPEN:"_q)) { ... }
    

問題:エスケープされていない区切り文字

リンクにセミコロンが含まれている場合(例:

tg://x?a=1;CMD:quit
)、新規プロセス側には単一の文字列として届きますが、既存インスタンス側では 2 つの指示に分断されます。

  1. OPEN:tg://x?a=1
  2. CMD:quit

これが**「インジェクション」**であり、攻撃チェーンの第 1 の欠陥です。


鍵となるスキーム:
interpret:

通常、Telegram は特定のコマンドのみを受け付けます(

show
,
quit
など)。問題なのは
OPEN:
コマンドが制限なく「任意の URL」を受け付ける
ことです。

内部 URI スキームの存在

Telegram コード内には OS への登録がない独自のスキーム

interpret:
が存在します。これは開発中のビルドアーカイブをアップロードするツールで使用されていました。

  • 機能: テキストファイルを読み取り、チャットに送信する処理を行います。
  • 脆弱性: この関数には認証チェックが施されていません。攻撃者がリンク経由で到達できれば、誰の確認もなくローカルファイルを強制的に読み込ませることができます。
// interpret: スキームの処理ロジック (認証チェックなし)
QString InterpretSendPath(not_null<Window::SessionController*> window, const QString &path) {
    QFile f(path);
    if (!f.open(QIODevice::ReadOnly)) { ... }
    const auto content = QString::fromUtf8(f.readAll()); // 任意ファイル内容がここへ読み込まれる
}

攻撃者はこの経路を使い、リンクを介して指示ファイルをディスク上から読み込ませます。 例:

tg://x?a=1;OPEN:interpret:instructions.txt


指示ファイルを配置する(エクスフィルトレーション)

攻撃者が被害者のディスク上に指示ファイルを置く方法には、以下の手順があります。

デフォルト動作の活用

Telegram のデフォルト設定では、グループで受信された最大 8 MiB のファイルは自動的にダウンロードされます(ブロードキャストチャンネルではオフ)。

  • ファイルは標準フォルダに保存され、名前衝突時は
    instructions(2).txt
    となります。
  • Windows:
    C:\Users\<ユーザー名>\Downloads\Telegram Desktop\<ファイル名>

絶対パスではなく相対パスの解決

interpret:
スキームは相対パスを受け付けます。これは Telegram の作業ディレクトリ(
%APPDATA%\Telegram Desktop
)から解決されます。 これにより、攻撃者は「ユーザー名」を特定する必要なく、決定論的なパスに到達できます。

interpret:../../../Downloads/Telegram%20Desktop/instructions.txt

指示ファイルの構造

窃取対象となるファイルを指定します(例:SSH キー、認証情報ファイルなど)。

file:
でパスを指定し、
channel:
に攻撃者のチャンネルを設定します。


ファイル読み取りからアカウント乗っ取りへ

単なるファイル読み取りでは終わりません。Telegram はセッション認証とユーザーデータを保護するため、強力な暗号化を採用しています。

キーラップ(Key Wrapping)構造

  1. DEK (Data Encryption Key): ユーザーデータを暗号化する鍵(ランダム)。
  2. KEK (Key Encryption Key): DEK を暗号化するために使用される鍵。
    • KEK はユーザーパスワードとソルトから導出されます。
    • 重要: パスコードが設定されていない場合、ソルトのみで KEK が再計算可能です。

秘密ファイルを入手すれば乗っ取りが可能

以下のファイルに含まれる情報は復号化・利用可能です。

  • tdata/key_datas
    : ソルトと暗号化された DEK が明碼(または容易に復元可能)で格納されています。
    • パスコードなしの場合、このファイルを入手すれば KEK を再計算し、DEK を解凍できます。
  • tdata/D877F783D5D3EF8Cs
    : MTProto 認証データ(DEK で暗号化)。これがあればアカウントとしての権利が得られます。
  • tdata/D877F783D5D3EF8C/maps
    : アカウント保存データのインデックス。

攻撃者は指示ファイルでこれら 3 つのファイルをすべて指定し、読み取ることができます。これらを新しい環境に配置すれば、被害者のアカウントがそのまま動作する状態を再現可能です。

インジェクションによる多重化

1 つのリンクに対し、セミコロンを使って複数の

interpret:
コマンドを送信することで、任意の数の秘密ファイルを取得できます。

tg://x?a=1
  ;OPEN:interpret:instructions1.txt (tdata/key_datas)
  ;OPEN:interpret:instructions2.txt (認証ファイル)
  ;OPEN:interpret:instructions3.txt (インデックス)

リンクの配信方法

攻撃者は Telegram 外部からリンクを配布し、被害者がクリックした後にエクスフィルトレーションを行います。

  1. ハブページ: 通常の https リンク(例:
    https://corvus.sec/rules
    )を送信します。
  2. リダイレクト: ブラウザが追跡され、最終的に
    tg://x?...
    形式の内部リンクにリダイレクトされます。
  3. 処理: このリンクは OS に「Telegram を起動」または「既存インスタンスに通知」として処理され、脆弱性がトリガーされます。

概念実証(Proof of Concept)

攻撃者の手順概要:

  1. スーパーグループを作成し、被害者を招待します(承認不要な設定推奨)。
  2. 指示ファイル(
    tdata/key_datas
    , 認証ファイル, インデックス)をグループにアップロードします。
    • from:
      を省略することでアカウントチェックをバイパス。
  3. チャット内に見せかけ無害な https リンクを共有します。
  4. 被害者がリンクをクリックすると、内部ソケット経由で指示ファイルの読み取りコマンドが実行され、3 つの秘密ファイルを攻撃者のグループにアップロードされます。
  5. 攻撃者はこれらのファイルを取得してアカウントにログインします(確認ダイアログなし)。

緩和策

1. アップデート(推奨)

  • バージョン 7.2.9 以上へのアップデートを即座に行ってください。これが問題を完全に閉じる唯一の方法です。

2. 設定変更

  • 「各ファイルの保存場所を確認する」という設定を有効にする。
    • これにより自動ダウンロードが無効化され、指示ファイルがディスク上に到達しません(最も効果的な対策)。

3. 招待者制限

  • グループへの招待者を**「自分の連絡先」だけに制限**する。
    • チャンネルやスーパーグループへの送信をブロックし、攻撃者がファイルを届ける場所を奪う。

4. パスコードの設定

  • ローカルパスワードコード(パスコード)を設定する。
    • セッションファイルの復号化を防ぎ、盗まれたアカウントを利用不能化します。

修正詳細

コミット

db3405699f
(2026-09-16) で対応済み。

  • スキーム削除:
    interpret://
    スキームと関連する処理関数を完全に削除。
  • エスケープ実装: 単一インスタンスソケットの区切り文字(レコードセパレーター)に対して、パーセント符号付き 16 進数でエスケープ処理を実装。これによりリンク内のセミコロンが誤ってコマンド区切りに扱われないようにしました。
  • 追加対策: 非ローカル URL の検知や不要なレコードスキップなどの補完的な防御策も実装されました。

タイムライン

日付イベント
2026-06-25ZDI に脆弱性報告
2026-09-16ベンダーが独自に修正(コミット公開)
2026-09-17Telegram Desktop v7.2.9 リリース
2026-09-30ZDI がケースを閉じる
2026-10-03この記事の公開
2026-10-07CVE-2026-107181 の割付

注: 修正は静かにリリースされました。変更ログにはセキュリティ対策の詳細な記述が含まれておらず、コミットタイトルは「古くなった interpret パスヘルパーの削除」という技術的な表現のみでした。


BeakSec チャンネルへのご案内 もしサイバーセキュリティに興味があれば、YouTube チャンネル「BeakSec」もご覧ください。

同じ日のほかのニュース

一覧に戻る →

2026/10/11 7:50

独自の意思決定モデルを構築する

## Japanese Translation: 本研究の核心となる洞察は、言語モデルは単一パスの意思決定システムを模倣することは可能であるが、特定のカリブレーションが行われる限りでは、しばしば危険な過剰な自信を示すという点にある。標準的なモデルが複数のパスを通じて順次テキストを生成するのに対し、システムワンアプローチは制約付きデコーディング(例えば、選択肢 A〜E の語彙をマスキングする)を用いて、AI に固定されたオプションを 1 パスで選択させる。この手法は推論速度を向上させるが、信頼スコアの膨張というリスクをもたらす;具体的には、ネイティブ出力トークンの確率は次のトークンに対する自信を反映しており、正しい答えの真なる確率を反映していない。CommonsenseQA の保持サンプルでの評価では、ファインチューニングの後であっても未カリーブレーテッドなモデルは、明確な単一の答えが存在しない困難な Commonsense 問題に対して高い不確かさ(例:99.78%)を割り当てることができ、マクロ F1 精度は約 58%に留まり、高自信ビンに至っては単なる 70%に過ぎなかった。本研究では、LLM 模倣(Qwen/Qwen3-1.7B)における温度スケイリングを用いてこの問題を成功裏に解決し、モデルの報告された自信を実際の性能と数学的に整合させ、結果として適合温度が約 3.8 となった。したがって、制約付きデコーディングは標準化テストのような多選択タスクに対して効率的を提供するものの、その後のカリブレーションなしで展開することは、過剰な自信による誤りを招き、ユーザーを欺くことになる。今後、事前に定義された答えへの厳格な遵守が求められる適用においては、信頼性指標が真に信頼性を反映するように、事後処理ステップ(例えば温度スケイリング)の優先を確保する必要がある。

2026/10/07 21:30

2D 車両

## Japanese Translation: 「Motion Lab」は、1996 年に GFA BASIC で書かれた先駆的な物理エンジンが GTA の車体システムを動力源としていたのを記念し、同エンジンの 30 周年を祝うためのモダンな Web ベースの再現作品です。当時の一般的なシンプルな「ポインタ・フィジックス」と異なり、この JavaScript インプリメンテーションは、リアルなトルクおよび力の相互作用を含む高度な古典的な 2 次元剛体動力学を正確にシミュレートします。本プロジェクトは、教育的目的のためにレガシースタイルを維持しつつ、オリジナルのソフトウェアが後に摩擦に関する推測に基づいた近似的かつ技術的に不正確な車体シミュレーション層を追加したことを認める一方で、「リマスター」された、より美しいバージョンの元のワイヤフレーム美学を提供しています。ユーザーは「Car(カー)」「Spaceship(スペースシップ/通称:Ship)」「Brick(ブリック)」という 3 つの異なるモードを体験でき、これらのモードは歴史的に「Brick モデル」から始まり、「Ship 要素」を含むよう進化し、最終的に「Car 要素」を取り入れた経緯を持っています。体験には、重力やバリアーの有効/無効化に加え、キーボードまたはタッチ入力により制御される GTA スタイルのカメラズームが含まれています。重要なのは、この非公式なプロジェクトが Rockstar Games および Take-Two から独立しており、オフィシャル製品ではなくトリビュートであることです。2026 年の発表を予定している本再現作品は、ユーザーが外部プラグインに依存せず、数十年にわたる技術開発を直接体験することを呼びかけています。

2026/10/11 5:31

あなたは存在したくても、街自体がそれを好まない街建設ゲーム

## Japanese Translation: サンフランシスコ当局は、特定の住宅シミュレーターに関する自由裁量審査を正式に開始し、都市の規制環境におけるその影響を検討するための重要な手続き的段階を示しています。この措置は、政府機関が該ツールを積極的に調査していることを示しており、同時に具体的な欠陥や直ちに懸念すべき事項がまだ特定されていないことも指摘しています。当面の次の段階では、審査プロセスを継続してシミュレーターの法的地位および運用可能性を決定することとなり、これが将来的にサンフランシスコにおける同様の住宅シミュレーターの開発と規制方法に影響を与える可能性があります。