速報

プレステージで最大約550万件の情報持ち出し|ロードサービスは代替運用で継続

CATEGORY

PraktorのTelegram添付で持続的な命令注入|0.9.1更新とワークスペース点検

※本ページのリンクにはプロモーションが含まれています。

Telegram添付が永続ワークスペース内のAIエージェント指示へ届く経路を保存境界で遮断する概念イラスト

この記事のポイント

脆弱性
CVE-2026-62331
深刻度

HIGH8.2

対象
Praktor 0.9.0以前(Telegram添付を受け取る構成)
悪用状況
不明
推奨対応
Praktor 0.9.1以降へ更新し、telegram.allow_fromを信頼できるIDへ限定します。影響版の運用期間はuploads外のファイル差分と後続セッションのツール実行履歴を点検します。
公表日

目次

Praktor 0.9.0以前をTelegramボット経由で運用している場合は、0.9.1へ更新し、telegram.allow_fromを信頼できる利用者IDに限定してください。-2026-62331は、添付文書のファイル名を細工することで、本来のuploads/ディレクトリを越え、が後から読む永続ワークスペース内へファイルを書き込めるです。既定例の空リストは全利用者を許可するため、ボットへメッセージを送れる外部利用者が攻撃者になり得ます。

これは単なるファイル保存先の誤りではありません。書き込み先には、Claude Codeが継続実行で参照する指示、スキル、フック、設定ファイルを置けます。攻撃者がそれらを作成または上書きすると、添付を受け取った時点ではなく、後続のエージェント実行時に不正な指示が効く「持続的な命令注入」になります。更新だけでは過去に置かれたファイルは消えないため、影響期間中に公開状態だった環境はワークスペースの点検まで必要です。

スポンサーリンク

公表日と修正日は分けて確認する

日付確認できる事実運用上の意味
2026年6月26日修正PRと0.9.1が公開この版から二段階のパス検証が入った
2026年10月30日CVE-2026-62331の公式レコードが公開脆弱性番号、影響版、を追跡できるようになった
2026年10月31日本記事で一次資料を再確認0.9.1がであることと設定例を確認した

は深刻度High、CVSS 3.1を8.2と評価しています。ベクトルはAV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:Nです。報告者は実際のデーモンを使った構成で修正前後を検証していますが、これは再現試験であり、実環境で攻撃が観測されたという意味ではありません。公開資料には現実の侵害を確認したとの記載がないため、構造化の悪用状況は「不明」とします。

影響が成立する構成

  • Praktor 0.9.0以前を利用している
  • Telegram連携を有効にし、外部からボットへ文書を送信できる
  • telegram.allow_from: []のまま、または攻撃者のTelegram IDを許可している
  • 受信した添付をエージェントの永続ワークスペースへ保存する経路を使う

公式の設定例ではallow_from: []に「空なら全員を許可」という説明があります。ボットのURLやホストのポートを直接インターネットへ公開しているかだけで判断してはいけません。Telegramからのメッセージを受け取れる時点で攻撃面が成立します。反対に、Telegram連携を使っていない環境、信頼できるIDだけを許可し攻撃者がそのアカウントを利用できない環境では、この経路の到達性は下がります。

影響範囲は「ホスト上の任意の場所へ直接書き込める」とまでは確認されていません。公式説明が示す実証範囲は、エージェントごとの永続ボリューム内、/workspace/agent以下です。ただし、その中にはCLAUDE.md、エージェント指示、スキル、フック、構成など、後続処理の判断やツール実行へ影響するファイルを置けます。コンテナ分離が残っていても、エージェントに与えたWeb、ブラウザー、、、秘密情報の権限まで安全になるわけではありません。

スポンサーリンク

添付が命令へ変わる流れ

  1. 外部利用者が、パス要素を含むファイル名の文書をTelegramへ送る
  2. 0.9.0以前の処理が利用者制御の名前を保存先へ連結する
  3. Goのpath.Joinが親ディレクトリ要素を正規化し、保存先がuploads/の外へ移る
  4. 後続のClaude Code実行が配置された指示や構成を読み、許可されたツールの範囲で行動を変える

重要なのは、外部データと実行制御の境界がファイルシステムを介して接続される点です。チャット本文に不審な指示が見えなくても、添付名が保存位置を変え、永続ファイルが将来のコンテキストになります。受信時の検査、拡張子制限、モデル出力の監視だけでは、この保存先制御を代替できません。

0.9.1の修正は二段階

修正は、Telegramの単一添付とメディアグループという二つの保存箇所で、利用者制御の名前へpath.Base()を適用します。これによりディレクトリ部分を落とし、添付名をベース名として扱います。さらにコンテナ管理側のWriteVolumeBytesでも、正規化後の保存先が/vol自身または/vol/配下に収まるかを検査し、外へ出るパスを拒否します。

入口だけの無害化と、共通書き込み関数での境界検証を組み合わせているため、将来別の呼び出し元が追加された場合にも後段の検査が働きます。0.9.1はこの修正を含む最初のリリースです。0.9.1より新しい版を選ぶ場合も、独自フォークや固定コミットでは修正コミットが含まれるかを確認してください。

スポンサーリンク

更新と送信者制限を実施する

公式READMEの更新手順は、リポジトリを更新してアップグレードスクリプトを実行し、Compose構成を再起動する流れです。実行前に独自変更と方法を確認し、保守時間内に行います。

./scripts/upgrade.sh
docker compose up -d
praktor version

次に、Telegramの許可リストへ運用担当者の数値IDだけを明示します。複数人で使う場合は個人単位で登録し、退職・異動・端末紛失時に削除できる台帳と結び付けます。

telegram:
  allow_from:
    - 123456789
    - 987654321

IDは例示値です。実際の値を確認せず転記してはいけません。空リストを「誰も許可しない」と解釈するのは逆効果です。また、許可リストは更新までの到達性を下げるであり、許可済みアカウントの乗っ取りや内部利用者による細工には効きません。0.9.1への更新を省略しないでください。

既存ワークスペースを点検する

更新後は、影響版を稼働させていた期間とTelegramボットの公開範囲を整理します。公開範囲が広かった場合は、各エージェントの永続ワークスペースについて、少なくとも次を確認します。

  • uploads/外で、受信時刻と近い更新日時を持つファイル
  • CLAUDE.md、AGENT.md、スキル、フック、MCP設定、シェル初期化ファイルの差分
  • Telegramの受信履歴と添付名、対象エージェント、保存成否
  • 後続で実行されたコマンド、Webアクセス、リポジトリ変更、秘密情報の利用
  • や既知の正本から説明できない新規ファイルと権限変更

正本があるファイルはハッシュや差分で比較します。正本がない場合、単に内容を開いて「自然な文章だから安全」と判断せず、作成元、更新時刻、所有者、参照されたセッションを関連付けます。不審な指示ファイルが見つかったら、削除して運用を続けるだけでは不十分です。該当ワークスペースを隔離し、その後のエージェント実行を止め、許可されたツールが触れた外部サービスまで調査します。

の漏えいは公式資料で確認されていません。一律の鍵交換を事実上の被害確認として扱うべきではありません。ただし、不審ファイルの参照後にトークン、Vault、MCP、Git、へアクセスした証跡がある場合は、影響する資格情報を失効・再発行し、変更履歴を確認します。証跡が不足する環境では、鍵の利用範囲と有効期間を基準に保守的に判断します。

更新後の拒否試験

本番のボットへ危険な添付を送って検証するのではなく、テスト用ボット、テスト用Telegramアカウント、使い捨てワークスペースで確認します。未許可IDからの文書が保存処理へ進まないこと、許可IDから通常の文書を送るとuploads/配下にだけ保存されること、パス要素を含む名前がベース名へ変換されるか拒否されることを観察します。テスト後はワークスペースを破棄し、実行ログに秘密を残していないことも確認します。

さらに、複数添付と単一添付の両方を試します。修正は二つのTelegram保存箇所へ入っているためです。コンテナ管理側については、/vol外へ正規化される入力を共通関数が拒否する単体・統合テストをへ残すと、入口側の改修で検証が抜けても退行を検出できます。

対応の優先順位を決める

最優先は、0.9.0以前かつ空の許可リストで稼働している環境です。ボット名が公開されている、問い合わせ窓口として案内している、想定外の利用者からメッセージを受けた履歴がある場合は、Telegram連携を一時停止してから更新します。次に、許可リストは設定済みでも、登録者が多い環境や共有アカウントを含む環境を扱います。最後に、Telegram連携が無効、または信頼済みIDだけで運用し、不審な受信履歴がない環境を確認します。ただし、優先度が低いことは更新不要という意味ではありません。

資産台帳には、Praktorの版だけでなく、各エージェントのワークスペース名、Telegramボット、許可ID、利用できるMCPやブラウザー、秘密情報の注入方法を紐付けます。命令注入後の到達範囲は、脆弱性そのものより各エージェントへ与えた権限で変わるためです。読み取り専用の調査エージェントと、Gitへの書き込みやクラウド操作ができるエージェントを同じ優先度で扱うと、調査資源の配分を誤ります。

スポンサーリンク

AIエージェント運用で残す三つの境界

  1. 送信者境界:誰がボットへ入力できるかをIDで限定する
  2. 保存境界:正規化後の実パスが許可ディレクトリ内かを共通関数で検証する
  3. 実行境界:ワークスペース内の文書を読んでも、MCPやシェルの高権限操作を自動承認しない

今回の脆弱性は、外部入力をテキストとして検査するだけでは、保存先と永続性の問題を見落とすことを示します。関連する考え方は、メールを読むAIの間接プロンプトインジェクション対策で扱った外部データと命令の分離、Claudeのスキル検査で残る確認事項で扱ったスキル・MCP境界にもつながります。Praktorでは、Telegramの許可、ファイル保存、後続ツール実行を別々に制御することが実務上の要点です。

出典・一次情報

本記事は以下の公開情報をもとに作成しています。最新の状況は各リンク先で確認してください。

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

あわせて確認したい対策・解説

ほかの脆弱性

※悪用の「未確認」は、最終確認時点で悪用の報告が見つかっていないことを示します。悪用されていないことを保証するものではありません。「不明」は公表情報に悪用状況の記載がないものです。

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク

CI/CD

コードの変更をきっかけに、テストやビルド、本番への反映までを自動で行う開発の仕組み。

詳しく見る

API

ソフトウェアやサービスの機能を、ほかのプログラムから決まった方法で呼び出して使えるようにした窓口。

詳しく見る

クラウド

サーバーやソフトウェアを自分で持たずに、インターネット経由で必要な分だけ利用する形態。AWSやGoogle Cloudなど。

詳しく見る

シークレット

パスワードやAPIキー、秘密鍵など、他人に知られてはいけない値。コードに書かず専用の仕組みで管理する。

詳しく見る

Git

ファイルの変更の履歴を記録・管理するバージョン管理システム。GitHubなどと組み合わせてチームで開発する。

詳しく見る

ベースイメージ

コンテナイメージを作るときに土台にする元のイメージ。OSや言語の実行環境が入ったものを使うことが多い。

詳しく見る

セッション

利用者とシステムの一連のやり取りを、ひとまとまりとして扱う単位。Webでは、ログイン状態などをページをまたいで保つために使う。

詳しく見る

回避策

修正版をすぐに適用できない場合に、脆弱性を悪用される条件をなくすための一時的な対処。機能の無効化や設定の変更など。

詳しく見る

バックアップ

データの複製を別の場所に保存しておくこと。故障や誤操作、攻撃でデータを失ったときに元に戻すために使う。

詳しく見る

コミット

Gitなどで、ファイルの変更をひとまとまりの記録として保存すること。また、その記録。

詳しく見る

マルウェア

コンピューターに被害を与える目的で作られた悪意のあるソフトウェアの総称。ウイルス、ワーム、トロイの木馬、ランサムウェアなど。

詳しく見る

リポジトリ

ソースコードなどのファイルと、その変更の履歴をまとめて保管する場所。Gitで管理し、GitHubなどで共有する。

詳しく見る

MCP

AIアプリケーションと外部のツールやデータをつなぐための共通の仕組み(プロトコル)。Anthropicが公開した。

詳しく見る

メタデータ

データそのものではなく、そのデータについての情報。作成日時・作成者・形式・サイズなど。

詳しく見る

Docker

アプリケーションと実行環境をコンテナとしてまとめ、どこでも同じように動かせるようにするソフトウェア。

詳しく見る

GHSA

GitHubで公開される脆弱性の情報(GitHub Security Advisories)と、その識別番号。オープンソースの脆弱性の確認に使う。

詳しく見る

パッチ

ソフトウェアの不具合や脆弱性を修正するための更新プログラム。適用することで既知の問題を解消する。

詳しく見る

CVSS

脆弱性の深刻度を0.0〜10.0の数値で評価する共通の基準。数値が大きいほど深刻度が高い。

詳しく見る

脆弱性

ソフトウェアや設定の不備のうち、攻撃者に悪用されると情報漏えいや不正操作などにつながる弱点。

詳しく見る

AIエージェント

目標を与えると、計画を立て、ツールを使いながら作業を自律的に進めるAIの仕組み。

詳しく見る

CVE

公開された脆弱性に付けられる世界共通の識別番号。「CVE-2026-12345」のように年と連番で表す。

詳しく見る