悪意ある CoComelon サイトを使って PewDiePie の AI エージェントをハッキングする(そしてその保護を支援する)

@theonejvo
英語1 か月前 · 2026年6月01日
508K
175
3
0
17

TL;DR

あるセキュリティ研究者が、PewDiePie の AI プラットフォーム「Odysseus」における重大なコマンドインジェクションの脆弱性を詳細に報告しました。この脆弱性により、サーバーの完全な乗っ取りが可能となっていました。同プロジェクトはその後この欠陥を修正しており、拡大するセルフホスト型 AI エコシステムにおいて堅牢なセキュリティが必要であることを浮き彫りにしました。

過去 1 年の間、@pewdiepie は、プライベートでセルフホスト型のコンピューティングの最も目に見える擁護者の 1 人へと変貌を遂げており、それを見守るのは本当に喜ばしいことでした。

2025 年後半に始まったのは、単なる面白い実験でした。改造した GPU を搭載したホームマシンでオープンソースモデルを動かし、チャットボットが「評議会」で投票し、余剰の計算リソースをタンパク質折り畳み研究に寄付するというものでした。それが約 12 か月の間に、明確な使命を持つものへと成熟しました。

2026 年 5 月 31 日、それは Odysseus として登場しました。無料でオープンソース、セルフホスト型の AI ワークスペースであり、PewDiePie はそれをサブスクリプションモデルへの痛烈な一撃と位置づけました。ローカルファースト、プライバシーファースト、テレメトリーなし、あなたのデータは少数の大企業に流れることなく、自分のハードウェア上に留まります。

彼のようなリーチを持つ人物が、主流で非技術系のオーディエンスにローカル推論を届けるというのは、プライバシー界が長年望んでいたことであり、私は心から応援しています。

しかし同時に、私は自分自身の認可されたデプロイメントをテストしていたところ、このサーバーの 1 つをワンクリックで乗っ取る方法を見つけました。この 2 つのことは矛盾しません。このように野心的で、この速さで出荷され、このような新しいカテゴリのソフトウェアこそ、興味深いセキュリティバグが潜む場所であり、それらを早期に見つけることが、後々そのプロジェクトが信頼されるための道なのです。

そこで、助けとなるべく、ここに攻撃チェーン全体を、基礎から説明し、それが私たちが今築いている時代について何を物語っているかを示します。

鍵のかかっていないドア、そして無害に見えただけのポート

Odysseus は、リモートの GPU マシンに重いジョブを任せることができます。その際、SSH(あるコンピュータが別のコンピュータでコマンドを実行する標準的な方法)経由で接続します。

そのため、内部エンドポイントの一部はコマンドシェルに触れることが許されています。コマンドシェルとは、それに到達できればマシンにほぼ何でもさせることができる、生のコマンドラインです。

賢明なことに、それらのエンドポイントのほとんどすべては、まず呼び出し元が管理者であることを確認します。

例外は、リモートサーバーにインストールされている Python パッケージの一覧を表示するという役割の、小さなエンドポイントです。そして、この例外こそがすべての崩壊の始まりです。

最初の問題は、このエンドポイントが呼び出し元を識別するために必要な情報を一切受け取らないため、管理者チェックをまったく実行せず、原理的に実行できないことです。

それを防ぐ唯一のものは、アプリの一律ルールである「ログインしていること」だけです。つまり、見知らぬ人が 1 分前に登録したアカウントを含むどんなアカウントでも、他のすべての兄弟エンドポイントが慎重に守っているシェルに触れるドアに到達できるのです。

Jamieson O'Reilly - inline image

構造的な根本原因:呼び出し元を識別できないハンドラーは、誰が許可されているかを強制できないのです。以下を参照してください。

Jamieson O'Reilly - inline image

これだけでも致命的になり得ますが、このエンドポイントが実際の処理を行う方法に第二の問題があり、それが攻撃全体の核心です。

リモートマシンにどのパッケージがインストールされているかを調べるために、プログラムは命令を 1 行のプレーンテキストとして書き出し、その行を シェル と呼ばれるシステムの部分に渡します。シェルの役割は、その行を読み取り、実行することです。

シェルを最も簡単に想像するなら、書かれた指示を完全に文字通りに実行するアシスタントであり、いくつかの句読点が特別な意味を持ちます。

ここで重要なのはセミコロンです。シェルはこれを「その指示は終わった。次を実行せよ」と解釈するため、セミコロンを含む 1 行は、連続した複数のコマンドとして実行されます。

Jamieson O'Reilly - inline image
Jamieson O'Reilly - inline image

そのため、注意深いプログラムは、人が入力したものを引用符で囲んでからシェルに渡します。これは、シェルに対して、それらの文字をコマンドとして実行される力のない単なるテキストとして扱うように指示する方法です。

開発者は、サーバー名と送信するコマンドについては正しく処理していたため、これらの入力は安全でした。

しかし、ポート番号は、引用符なしでそのまま行に挿入されました。その根拠は、ポートは常に単なる数字であり、数字は害を及ぼすことはできないという、一見もっともらしい前提に基づいています。(仮想環境パスも、同じ理由で同じように引用符なしで連結されていました。)

この前提の穴は、ポートが数字である必要がないことです。ポートは Web アドレスから直接取得されたプレーンテキストとして届き、リクエストを行っている人がその内容を自由に決められます。

そこで、攻撃者は 22 の代わりに、22; id; hostname # と書き込みます。

シェルは最初の部分を読み取り、接続を試みて無害に失敗し、次に最初のセミコロンに到達し、素直に攻撃者自身の 2 つのコマンドを実行します。一方、末尾の # は、後に続く残りのテキストを無視するようにシェルに指示します。

Jamieson O'Reilly - inline image

たった 1 つのセミコロンで、「リモートボックスのパッケージ一覧を表示」が「このボックス上で自分のコマンドを実行」に変わります。

それに到達するのに必要なのは、ログイン済みのセッションと細工された Web アドレスだけです。

Jamieson O'Reilly - inline image

リクエストは通常のパッケージ JSON とともに HTTP 200 を返します。一方、注入されたコマンドはサーバー側で実行されます。

私が仕込んだコマンドは無害な調査用であり、その出力がサーバー自身のサービスアカウントを名指ししたことで、私の指示がマシン自体で実行されたことが確認できました。

Jamieson O'Reilly - inline image

これら 2 つの欠陥を組み合わせると、ローカルの状況は 1 文で要約できます。つまり、ログインしているユーザーなら誰でも、サーバー上で任意のコマンドを実行できるということです。

規模のリスクは、まさに Odysseus を魅力的にしているものによって鋭くなります。

1 億人のフォロワーを持つクリエイターが、大規模で非技術系のオーディエンスをセルフホスティングにうまく導いた場合、結果として数千もの類似したインスタンスが、同様に設定され、同様に露出されることになります。これはモノカルチャーであり、モノカルチャーはワームが好むものです。

@ashnichrist がそれをうまく表現していました。

ワンクリックにする

「ログインしているユーザーなら誰でも」トリガーできるバグは、依然として悪意のある内部関係者が必要に思えるかもしれません。次のステップは、その必要条件さえも取り除くものです。なぜなら、被害者自身のブラウザに攻撃を実行させるからです。

この手法はクロスサイトリクエストフォージェリと呼ばれ、ブラウザのある静かな習慣に乗じます。

サイトにログインすると、ブラウザは小さなトークンを保存し、その後そのサイト宛てのリクエストには、そのリクエストを送り出したページがどこであるかに関係なく、宛先のみに基づいて自動的にそのトークンを添付します。

Jamieson O'Reilly - inline image

Odysseus はこのトークンを SameSite=Lax ポリシーで設定していました。これは合理的なデフォルトであり、こっそりとしたバックグラウンドリクエストにトークンが添付されるのを防ぎますが、トップレベルナビゲーション(つまり、あなたのタブ全体をどこかに移動させる通常のクリック)では、意図的にトークンを送信します。

脆弱なエンドポイントはプレーンなリンクに応答し、リクエストの発信元を一切チェックせず、アンチフォージェリトークンも使用しないため、攻撃者は魅力的なボタンがあるページをホストするだけでよいのです。

デモンストレーション用に、私はまさにそれを作成しました。陽気で子供向け、そして何よりも原作に忠実な CoComelon トリビュートページです。童謡のような色使い、Comic Sans フォント、1 つの大きな「再生」ボタン。

Jamieson O'Reilly - inline image

そのボタンは曲へのリンクではありません。そのクリックハンドラーは、実際のターゲットを小さな使い捨てのポップアップウィンドウで開きます。これにより、悪意のあるリクエストはトップレベルナビゲーションとして発生し(SameSite=Lax セッションクッキーを保持したまま)、フォーカスを奪うことなく、少し後に自動的に閉じます。開かれるアドレスは、単にパッケージエンドポイントに、コマンドを「ポート」に忍び込ませたものです。

Jamieson O'Reilly - inline image

その 1 回のクリックが着弾している間、おとりのページはカメラ向けにショーを繰り広げます。CoComelon のアートワークがマズルフラッシュのように画面に点滅し、ターミナルが乗っ取りの各ステップを実況しながらタイプアウトします。(ターミナルのテキストはデモ用の演出です。実際の実行は、ポップアップが行った無音のリクエストです。)

Jamieson O'Reilly - inline image

影響を具体的にするために、その 1 回のクリックは 3 つのことを行いました。提供されるインターフェースを明白な視覚的改ざん(全画面の「🍉 your Odysseus has been CoComelon-d 🍉」オーバーレイ、スイカのアイコン、アプリ名の変更)に書き換え、サービスユーザーが読めるものはすべて読み取り、そして最も永続的に、隠し管理者アカウントをアプリの auth.json に直接書き込みました。

Jamieson O'Reilly - inline image

痛いところ:再起動すると明らかな混乱は片付きますが、攻撃者のアカウントは残り続けます。

こちらがライブデモです。

エージェンティックツールにあると最悪のバグである理由

2026 年において、単一インスタンスの侵害を警戒すべき理由は、これらのことがめったに 1 つのインスタンスで止まらないからであり、その年を定義づけたワームがその理由を示しています。

Shai-Hulud は、2025 年 9 月に初めて確認され、その後もより大規模な波で戻ってきている自己増殖型 npm ワームで、 brutally simple なループを実行します。パッケージがインストールされた瞬間に悪意のあるインストール時スクリプトが実行され、マシンをスキャンして npm や GitHub のトークン、SSH キー、クラウド認証情報などの秘密情報を探し出し、それら盗んだ認証情報を使って被害者の他のパッケージのバックドア版を公開します。そのため、新たなインストールごとに、攻撃者のさらなる努力なしに次の発射台となります。

ここから持ち帰るべき教訓は、ワームにとって最も難しい仕事は認証情報を収集し、次のマシンへの経路を見つけることであるということです。

エージェンティック AI アシスタントは、ワームに

両方

を無料で提供します。なぜなら、強力な秘密情報を保持し、他のマシンに到達することがその唯一の目的だからです。

Odysseus に対するワンクリックは、コード実行よりもはるかに多くのものを引き渡しました。保存された API キーの保管庫全体、データベース、設定、そしてツールが管理するリモート GPU サーバーにログインするために使用する SSH アクセスを、あらかじめ収集された状態で提供したのです。それはまさに、自己増殖型攻撃が依存する燃料であり、1 か所にラベルを外側に向けて置かれ、それを使用するためのプレイブックはすでに実世界に存在しています。

Jamieson O'Reilly - inline image

それが意味するすべて

私が最も衝撃を受けたのは、実際にサーバーを乗っ取ったバグが古代のものであることです。コマンドインジェクションとリクエストフォージェリには、2005 年の開発者でも認識できる教科書的な修正方法があり、それらが最も先進的な消費者向け AI ソフトウェアの 1 つの中に存在していたのです。これは、今年の業界全体のパターンであり、注目を集める AI の脆弱性が、実際には新しいツールの中に存在する古典的な欠陥であることが判明しています。

フロンティアはそれらの基礎を完全に有効にしたまま、その上に強力で高速、しばしば過信される層を積み上げ、その層をあなたが所有するすべてのものに接続しました。

Jamieson O'Reilly - inline image

まだ配線されていなかったドアベル

もう 1 つ、学ぶ価値のある詳細があります。それはコードとは最も関係のない部分だからです。

私が最初にこれを報告しようとしたとき、リポジトリにはセキュリティポリシーがありました。思慮深いもので、適切なデプロイメントガイダンスが含まれていました。

しかし、その報告セクションは報告希望者を「利用可能な場合、GitHub セキュリティアドバイザリへ」と誘導しており、当初そのプライベートチャンネルは単に開かれていませんでした。

見知らぬ人がプロジェクトについて見つけられる最もセンシティブな情報には、非公開で届ける場所がなかったのです。このギャップはその後埋められました。コマンドインジェクションの連鎖は現在 重大 なアドバイザリで追跡され、修正もマージされています。しかし、当初の不在が物語っています。

幸いにも、私はメンテナの 1 人と話すことができ、彼がアドバイザリ機能を開いてくれました。その後、私は他にもいくつかの修正を提出しています。

Jamieson O'Reilly - inline image

それはさておき…これは時代の兆候です。

プロジェクトは今や、家庭用 GPU マシン上の趣味から、たった 1 つのアナウンスの間に 1 億人のオーディエンスへと成長します。そしてセキュリティの足場(悪い知らせのための非公開の受信箱、アドバイザリのワークフロー、モデルの出力を敵対的に扱う習慣)はコードに遅れをとり、コードはさらにオーディエンスに遅れをとります。

その順序は、攻撃者が必要とするものとはまったく逆です。

大規模で、信頼しており、ほとんどが非技術系のファンベースが、同じ週に同じソフトウェアをインストールし、すでに信頼している誰かによってそれを指し示される。これは存在する中で最も魅力的なターゲットです。巨大で、均一で、すでに購入済みです。

それはまさにワームが望むモノカルチャーであり、ウェルカムマットはすでに敷かれています。

ですから、この物語の励みになる部分は、コードが完璧だったことではなく(そうではありませんでした)、プロジェクトがドアベルを配線し、ノックを聞いてから約 1 日以内に修正を出荷したことです。

この速さで動き、この規模のオーディエンスの前にあるソフトウェアにとって、その反射神経(プライベートチャンネルを開き、迅速に回答し、オープンに修正する)は、最初から完璧な記録を持っていたことよりも価値があります。結局のところ、それがセルフホスティングへの信頼が実際に獲得される方法なのです。

とりあえず…今回はこのへんで!

Jamieson O'Reilly - inline image

https://x.com/Grummz/status/2061300454907371953

https://x.com/ashnichrist/status/2061481763516399737

https://x.com/theonejvo/status/2061350250766615006

https://x.com/theonejvo/status/2061351074272006476

ワンクリック保存

YouMindでバイラル記事をAI深読み

ソースを保存し、的を絞った質問をし、主張を要約して、バイラル記事を再利用できるノートに変えます。すべてを1つのAIワークスペースで行えます。

YouMindを探索
クリエイターのために

あなたの Markdown をきれいな 𝕏 記事に

自分の長文を投稿するとき、画像・表・コードブロックを 𝕏 向けに整形するのは手間がかかります。YouMind は Markdown 全体を、そのまま投稿できるきれいな 𝕏 記事に変換します。

Markdown → 𝕏 を試す

解読すべきパターンをもっと

最近のバイラル記事

バイラル記事をもっと見る