世界を動かす技術を、日本語で。

「Obsidian」プラグインが悪用されてリモートアクセス型トロイの木馬が展開されました

概要

  • 金融・暗号資産業界 を狙った高度な ソーシャルエンジニアリング攻撃 の発生
  • Obsidianアプリ を悪用し、未公開のRAT「PHANTOMPULSE」を配布
  • Ethereumブロックチェーン を利用したC2通信で高い耐障害性
  • Windows・macOS双方 を標的としたクロスプラットフォーム攻撃
  • 重要な 検知指標と対策 も明示

PHANTOMPULSE:Obsidianを悪用した標的型攻撃の概要

  • 攻撃者は REF6598 と呼ばれるキャンペーンで活動
  • LinkedInやTelegram で金融・暗号資産分野のターゲットに接触
  • 信頼関係を築いた後、 Obsidianの共有Vault への招待を送付
  • 被害者がVaultを開き、 コミュニティプラグイン同期 を有効化するよう誘導
  • 正規プラグイン('Shell Commands'および'Hider')の 改ざん版 を悪用
  • PHANTOMPULSE は、キーログ・スクリーンショット・ファイル窃取・任意コマンド実行が可能

攻撃手法と技術的詳細

  • 初期侵入 :LinkedIn/Telegramで接触し、悪意あるObsidian Vaultを開かせる(T1566.002)
  • 実行 :ユーザーにコミュニティプラグインの有効化を促し、悪意あるスクリプトを実行(T1204.002)
  • ステージング :WindowsはPowerShell、macOSはAppleScriptで PHANTOMPULLローダー を展開
  • ペイロード配信 :PHANTOMPULLが暗号化された最終ペイロード(PHANTOMPULSE)を メモリ上で展開 (T1055)
  • C2通信 :Ethereumブロックチェーン上の特定ウォレットの最新トランザクションから C2サーバーIP を取得(T1102.002)
    • 分散型かつ検閲耐性の高いC2通信方式

影響とリスク評価

  • 被害者端末の 完全な制御権 を攻撃者が取得
  • 金融・暗号資産分野では 機密データ・取引戦略・ウォレットキー 等の窃取リスク
  • クロスプラットフォーム展開により 被害対象の拡大
  • ブロックチェーンC2の採用で インフラ遮断の難易度が上昇

検知のためのサイバーオブザーバブル

  • プロセス監視 :Obsidian.exeからpowershell.exe/cmd.exe/osascript等の子プロセス生成
  • コマンドラインパターン :powershell -ExecutionPolicy Bypassの実行
  • ネットワーク通信 :Obsidian等の非標準プロセスによるEthereumノード・ゲートウェイへの外部通信
  • ファイルパス監視 :[Vault]/.obsidian/plugins/ディレクトリの不審なファイル生成・変更

検知・対応策

  • プロセス監視(D3-PA) :Obsidianプロセスからのコマンドラインインタプリタ起動をEDRで検知・アラート
  • ユーザー教育 :金融・暗号資産業界ユーザーに対し、コラボツール悪用型のソーシャルエンジニアリング手法を周知
  • アプリケーション制御(D3-EAL) :Obsidian等で未承認プラグインのインストール・実行を制限
  • ネットワーク監視(D3-NTA) :ブロックチェーンサービス関連の不審なDNSクエリやIP通信を監視

推奨する緩和策

  • コミュニティプラグインの精査 :信頼できる公式マーケットプレイスのみからプラグインを導入、権限も確認
  • 不明なVaultでの自動同期無効化 :不明・信頼できないVault接続時はプラグイン同期を許可しない
  • 最小権限の原則 :Obsidian等は管理者権限でなく標準ユーザーで実行
  • エンドポイントセキュリティ :最新のEDR・アンチウイルスでスクリプト実行・プロセス注入を検知・ブロック

Hackerたちの意見

被害者は「インストール済みコミュニティプラグイン」の同期機能を有効にするよう促されています。Obsidianにはこの種の攻撃を防ぐための適切な保護が施されていますが、被害者たちはそれを無視するように説得されています。これはただの成功したソーシャルエンジニアリングの事例です。この見出しでObsidianが悪く言われるのは残念です。なぜなら、この攻撃はObsidianやそのプラグインシステムの脆弱性を利用しているわけではないからです。

そうだね、私もObsidianのヘビーユーザーで、大好きなんだ。今回の開示の価値は、プラグインについての認識を広めたり、そのベクトルを示したりすることにあると思う。あまり詳しくないユーザーは「これはただのマークダウンファイルの集まりだ。悪意のあるコードについてあまり心配する必要はない」と思うかもしれないし。

えっと、違うよ? https://obsidian.md/help/plugin-security#Plugin+capabilities > 技術的な制約により、Obsidianはプラグインに特定の権限やアクセスレベルを確実に制限することができません。つまり、プラグインはObsidianのアクセスレベルを引き継ぐことになります。その結果、コミュニティプラグインができることの例は以下の通りです:コミュニティプラグインはあなたのコンピュータ上のファイルにアクセスできます。コミュニティプラグインはインターネットに接続できます。コミュニティプラグインは追加のプログラムをインストールできます。Obsidianには全く保護がありません。プラグインをインストールすると、それがあなたのコンピュータに完全にアクセスできるようになります。これは時間の問題だったし、正直言って、2010年頃からこのようなプラグインシステムを出荷したのは許されない怠慢だと思います(もっと早い時期からとも言えるけど)。

ソーシャルエンジニアリングであっても、こういうプラグインシステムの設計は、プラットフォームを共有ツールとして完全に使えなくすることを意味します。知っておくのは良いことだけど、私にとっては「共有されたObsidianボールトを使うためにこれらの設定を正しく覚えておく必要がある」ってことじゃなくて、「共有されたObsidianボールトを受け入れない、プレーンテキストのエクスポートを要求する」ってことです。

私はObsidianが本当に好きです。毎日使っていて、権限が不十分だからコミュニティプラグインは使っていません。プラグインが何を必要とするかを定義して、それがユーザーに提示される日が来ることを願っています。Obsidianチームがこれに真剣に対応すると思うので、彼らが何をするのか楽しみにしています。彼らには全幅の信頼を置いています。ただ、最初からそんなに良い権限やサンドボックスがない設計だったのには驚きました。

VS Codeでmdを見るのに飽きたから、私も使い始めたんだ。プラグインをインストールする必要がなかったのはラッキーだった!彼らのやり方はあまり良くないと思うな。

私の最悪の恐れが現実になった。だから私は外部のObsidianプラグインを使ったことがなく、自分のプラグインだけを使っているんだ。悪意のあるコードがどこかに入るのは時間の問題だった。

兄弟、私たちは正当化された!確かに面白いものがたくさんあるけど、すでに一つのエンティティに私のプライベートノートを守ってもらってるから、拡張機能XYZからの「約束」を信じるつもりはないよ。(実際にはLogSeqを使ってるけど、同じ考えだね)。

ObsidianのCEOです。プラグインのセキュリティに関する大きなアップデートがもうすぐ来ます。このスレッドで人々が提起した多くの懸念に対処すると思います。難しい問題ですが、私たちは取り組んでいます。ただ、見出しは誤解を招くものです。この文章は、ユーザーがObsidianの複数の安全警告を積極的に無視する必要があるソーシャルエンジニアリング攻撃についてです。私の知る限り、これは概念実証であり、この攻撃によって影響を受けたユーザーの報告は見たことがありません。

笑、数年前にプラグインが不安定だって言ったのを覚えてるよ。彼らがフルディスクアクセスを持っているって言ったら、ディスコードで炎上したのをはっきり覚えてる。遅すぎたね。

クライアントにソースコードを公開すれば、私たちの懸念の多くも解消されると思うよ。

複数の安全警告を積極的に無視する これはポップアップみたいな感じ?ほとんどの人が何も考えずに受け入れると思う。プラグインや拡張機能をデフォルトで実行するのはもう少し難しくすべきだと思う。プラグインを使う前に余計なハードルがあることでユーザーの摩擦が生じるのは理解できるけど、サンドボックスや他の制限なしに、監査されていない任意のコードを実行する安全な方法はないと思う。

あなたの製品、最高だね。ありがとう。

ここで話が逸れちゃうけど、Noteplanのワークフローを見直して、必要な機能を追加できるかどうか考えてもらえないかな?それでワークフローを再現できるようにしたいんだ。プラグインのTasksは、例えば週ごとのタスクを日々のテンプレートにリストアップできるクエリ機能を提供してるけど、Noteplanはそのタスクをドラッグ&ドロップで日々のテンプレートに簡単にリンクできることに依存してるんだよね。これによって、内部的にユニークだけどデフォルトでは隠れているIDが^129abz形式で割り当てられるんだ(https://help.noteplan.co/article/138-synced-blocks)。この機能はObsidianでもサポートされてるけど、あまり「クリーン」じゃないし、私の知る限りドラッグ&ドロップで実現するのは不可能だと思う。

現実を見てよ、kepano。ほとんどのカジュアルユーザーの意識を過大評価してるよ。ゴッドモードのRCE対応プラグインが、ほとんどの人が無視する安全警告の裏にあるのは、良いエンジニアリングじゃないと思う。制約は理解してるけど、もし私が君の立場なら、少なくともこれらのプラグインを許可する別バージョンのアプリを作るかな。公式バージョンの中でトリビアルなバナーの下に置くのはやめてほしい。バナーがあるって言ってるけど、それはユーザーの旅の自然な流れの中にあって、選択肢は明確に存在してる。これらのバナーは、ユーザーを守るためじゃなくて、君たちの責任を免れるためのものに過ぎないよ。

なんでほとんどのプラグインシステムがこんなにひどく設計されてるんだろう?仕事が多すぎるから?(つまり、適切な隔離や権限管理ができるプラグイン開発フレームワークがないとか)それとも「単に」必要なことを知らない開発者が多いから、自分のシステムが悪用されるまで学ばないのかな?両方?それとも別の理由?

すべてのプラグインに必要なセキュリティフレームワークや基本要素を定義する必要があるけど、それには設計、実装、検証、維持に時間がかかるんだよね。だから、その部分をスキップする方が簡単なんだ。そういう意味では、やっぱり大変な仕事だよ(セキュリティに焦点を当てたリーダーシップが必要で、これは大変だけど正しいことなんだって理解している必要がある)。

ウェブスタックと、適切なインターフェースを設計するためのリソース不足が原因じゃないかな。これらは高レベルのJSフレームワークで書かれたソフトウェアだから、デフォルトではデータフローパターンが貧弱で、実際に可能なことを追いかけるだけで、意図的なデザインを採用することはないんだ。そうすると、ある程度抽象化のレベルを下げて、言及したフレームワークのカスタムフォークを維持する必要がある。だから、プラグインはアプリが使うコンテキストのサブセットを渡してライブラリをインスタンス化するように設計されてるんだ。基本的には、最もシンプルに機能するものを作ってるって感じ。公開されたハックは特に「脆弱性」については言及してないけど、Obsidianのプラグインは常にゴッドモードで、 alleged hackersはただ人を騙して使わせただけなんだよね。ポップアップの裏に潜むRCEが結局ユーザーのせいにされるのは面白い。開発者には恥を知ってほしい。

Chromeのブラウザプラグインでも、今回のケースに似たセキュリティ問題があるよ。何十億ドルもかけて、賢い開発者たちが取り組んでる。アプリの中にアプリストアを作るのと似てるね。Appleのアプリストアでは、誰が何を公開できるかを厳しく制限することで悪意のあるアプリを減らしてるし、それは有料の壁の裏にあるんだ。

プラグインシステムがすぐにサンドボックス化を意味するのはどうして?

問題はObsidianストアのプラグインから始まるんじゃなくて、むしろ開かせようとする悪意のあるボールトから始まると思う。

少数派の意見かもしれないけど、私が初めてObsidianを使い始めたとき、見たYouTubeの動画ではコミュニティプラグインの使用を勧めてたんだ。警告があってもコミュニティプラグインを有効にしてたよ。これらのプラグインには、最初は良い開発者がいても、後で悪くなることもあるし、ユーザーはそれに気づかないかもしれない。もしかしたら、私がリスクを取るのが好きなだけかもしれないけど、開発者としてこれらのリスクを知っていても、コミュニティプラグインのオプションを有効にしてたと思う。やっぱり、私が少数派であってほしいな。

私はObsidianを制限された能力で動かしてる:ネットワークアクセスなし、そして自分のディレクトリ以外のファイルシステムアクセスもなし。プラグインやテーマを更新する時だけネットワークアクセスを有効にしてる。信頼できないコードを実行する可能性のある他のアプリケーションも同じように扱ってるよ。

どうやってサンドボックス化してるのか教えてもらえる?

これがオフラインでプラグインをインストールするワークフローを改善してくれるといいな。今でも悪くはないけど、接続された体験には及ばないから。