ShellTorch:PyTorchモデルサーバー(TorchServe)における複数の重大な脆弱性(CVSS 9.9、CVSS 9.8)が無数のAIユーザーを脅かす

概要

今週、Oligo Securityのリサーチチームは、フルチェーンのリモートコード実行(RCE)につながる重大な脆弱性(CVE-2023-43654を含む)を発見したと発表し、世界最大級の組織の一部を含む、公開状態で露出した脆弱なインスタンスが数千件見つかったと報告しました。これらは不正アクセスや悪意あるAIモデルの挿入、さらにはサーバーの完全な乗っ取りの可能性にさらされています。露出を最小化するための緩和手順と無料ツールを以下で提案します。

更新:

  • 10月3日:GoogleがShellTorchに関してユーザー向けにセキュリティアドバイザリを発行しました。
  • 10月2日:AmazonがShellTorchに関してユーザー向けにセキュリティアドバイザリを発行しました。
  • 10月2日:Metaは、管理APIの誤設定を緩和するために、デフォルトの管理APIを修正しました。 
  • 9月12日:AmazonはDLCを更新し、変更を世界中に展開しました。

エグゼクティブサマリー

  • PyTorchエコシステムで人気のオープンソースパッケージであるTorchServeには、影響を受けるシステムの完全な乗っ取りを可能にする脆弱性が含まれていました。
  • Oligo Securityは、TorchServeのデフォルト設定が誤って管理インターフェースを認証なしで全世界に公開してしまい、不正アクセスを許していることを発見しました。
  • Oligoはさらに、管理インターフェースにおいて、任意ドメインからの設定アップロードを許容することでリモートコード実行(RCE)を可能にする、新たな重大(NVD、CVSS 9.8)のSSRF脆弱性(CVE-2023-43654)を発見しました。 
  • Oligoの研究者はまた、悪意あるモデルを安全でない形でデシリアライズする際に、TorchServeがリモートからRemote Code Executionでハッキング可能となる脆弱性も見つけました(GHSA、CVSS 9.9)。
  • これらの攻撃を組み合わせることでRCEと乗っ取りが可能となり、現実世界には脆弱なTorchServeアプリケーションの露出インスタンスが数万件存在します。
  • Oligo Securityは、これらの問題についてPyTorchのメンテナー(AmazonおよびMeta)に対して責任ある開示プロセスを開始しました。これらの問題の一部はバージョン0.8.2で修正、または警告により対処されました。0.8.1以下を使用しているインスタンスは直ちに更新してください。デフォルト設定では一部の問題を防げず、ユーザーが脆弱なままとなる可能性があるため、以下で提案する緩和策を講じることが重要です。 
  • ご自身の環境が影響を受けるか確認が必要ですか?今すぐ当社の無料ツールで確認してください。

はじめに:Oligo Securityの研究者が新たなAIリスクを発見

今週、Oligo Securityのリサーチチームは、リモートコード実行につながる新たな重大脆弱性の発見を発表しました。Oligoは、世界最大級の組織の一部を含む、公開状態で露出した脆弱なインスタンスを数千件発見しました。これらは不正アクセスや悪意あるAIモデルの挿入、さらにはサーバーの完全な乗っ取りの可能性にさらされています。これは数百万のサービスとそのエンドユーザーに影響し得ます。

今日、AIモデル(大規模言語モデル(LLM)からコンピュータビジョンまで)は急速に普及しており、最良の回答や情報を得るために、さらには交通事故の防止、がん検出、公共空間の安全確保といった生死に関わる場面においても、AIベースのアプリケーションに最も機微なデータを預けることが求められています。AIは世界的な紛争の領域にも入り込み、世界中の軍や兵器で利用されています。 

しかし、大きな力には大きな責任が伴います。

「責任あるAI」はホットトピックとなっており、ホワイトハウスを含む世界各国の政府が、AIの安全性とコンプライアンスの枠組みを求めています。

リスクの全体像を複雑にしているのは、今日のAIがオープンソースソフトウェア(OSS)を基盤としており、固有のセキュリティ問題を伴う点です。2021年には、SBOMの作成と維持に関する大統領令がホワイトハウスから発出されました。同年後半には、Log4jの脆弱性が驚異的な数の組織に影響を与え、攻撃者に最も利用されるセキュリティ欠陥へと急速に拡大したことで、OSSライブラリ利用を理解する重要性について組織が厳しい教訓を得ました。

現在、AIフレームワークで最も注目されている名前はPyTorchであり、ML研究を完全に席巻し、民間企業のAI取り組みでも存在感を増しています。だからこそ、認証が一切ない状態で、PyTorchのオープンソースモデルサーバー(TorchServe)における新たな重大脆弱性を用いて高い権限でリモートからコード実行できることを発見したのは、研究者にとって衝撃でした。 

これらの脆弱性により、世界中のサーバーが侵害され得ます。その結果、世界最大級の企業の一部が直ちにリスクにさらされている可能性があります。

PyTorch:AIインフラへの攻撃にとって完璧な標的

PyTorchライブラリは、AIモデルとOSSライブラリの合流点にあります。世界で最も利用されている機械学習フレームワークの一つであるPyTorchは、AIベースのシステムへの侵入を狙う攻撃者にとって魅力的な標的です。2022年後半には、攻撃者が依存関係混乱(dependency confusion)を悪用してPyTorchパッケージを侵害し、悪意あるコードを混入させました。

TorchServeはPyTorch向けのモデル提供フレームワークの中でも最も人気のあるものの一つです。MetaとAmazonが保守しており(Linux Foundationの公式CNCFプロジェクトでもあります)、オープンソースのTorchServeライブラリは世界中の組織に信頼され、月間30,000回以上のPyPiダウンロードと、DockerHubでの累計100万回以上のプルがあります。研究分野では支配的で(現在、ML研究論文の90%以上がPyTorchを使用)、商用ユーザーにはWalmart、Amazon、OpenAI、Tesla、Azure、Google Cloud、Intelなど、世界最大級の企業が含まれます。TorchServeはKubeFlow、MLFlow、Kserve、AWS Neuronなどのプロジェクトの基盤でもあります。また、SageMaker(AWS)やVertex.AI(GCP)を含む最大手クラウドプロバイダーによりマネージドサービスとして提供されています。

単純なIPスキャナーを使用することで、現在攻撃に対して完全に露出しているIPアドレスを数万件見つけることができました。その中にはFortune 500企業に属するものも多数含まれます。 

Oligoが発見した脆弱性は、0.8.2より前のTorchServeの全バージョンに影響します。悪意ある攻撃者に悪用されると、この脆弱性チェーンによりリモートコード実行が可能となり、被害者のサーバーおよびネットワークの完全な乗っ取りや機微データの流出が起こり得ます。

ShellTorch攻撃の解剖:完全な乗っ取りへの道筋

ShellTorchのCVE-2023-43654を悪用することで、攻撃者はコードを実行し、標的サーバーを乗っ取ることができます。これには、認証なしで管理コンソールへリモートアクセスできてしまうAPIの誤設定の悪用、コード実行につながる悪意あるモデルのアップロードを可能にするリモートのサーバーサイドリクエストフォージェリ(SSRF)脆弱性の悪用が含まれます。当社のリサーチチームは、リモートからトリガー可能な別の安全でないデシリアライズ脆弱性も発見しており、任意コードを実行するための別の攻撃ベクターを露出させます。これにより、攻撃者はネットワークへ侵入する手段を得て、得られた高い権限を横展開に利用できます。 

これらの脆弱性によって付与される高い権限を用いることで、標的のTorchServeサーバーに出入りするAIモデルや機微データを閲覧、改ざん、窃取、削除することが可能になります。 

これらのベクターがどのように組み合わさってShellTorchを生み出したのかを見ていきましょう。これは、世界最大級の企業のAIインフラを完全に侵害しかねない「完璧な嵐」です。

脆弱性 #1 – 管理コンソールの悪用:認証なし管理インターフェースAPIの誤設定

TorchServeは複数のインターフェースを公開しており、その中には実行時にモデルを管理できる管理APIが含まれます。ここで誤設定の脆弱性が見つかりました。

攻撃者にとっての至宝は、外部ネットワークから組織へ侵入できる能力です。つまり、デフォルトでアプリケーションは、組織外に公開する接続に対して非常に慎重であるべきです。

誤設定 – 玄関のドアを開け放つ

TorchServeのドキュメントでは、デフォルトの管理APIはデフォルトでlocalhostからのみアクセス可能だと記載されています。

実際には、このインターフェースはデフォルトで0.0.0.0にバインドされており、外部リクエストからアクセス可能になっています。これにより、あらゆる悪意ある攻撃者がアプリケーションを攻撃できるようになってしまいます。

inference_address=http://0.0.0.0:8080

management_address=http://0.0.0.0:8081

metrics_address=http://0.0.0.0:8082

デフォルトから設定を変更すればこの誤設定は修正できますが、この設定ミスはTorchServeのインストールガイド(デフォルトのTorchServe dockerを含む)においてデフォルトとして示されています。

その結果、この脆弱性はAmazonおよびGoogleのプロプライエタリなdockerイメージでもデフォルトで存在し、さらに最大手の機械学習サービス提供者のセルフマネージドサービス(セルフマネージドのAmazon AWS SageMaker、セルフマネージドのGoogle Vertex AI、さらにはKServe(Kubernetes上の標準モデル推論プラットフォーム))を含む、TorchServe上に構築された多くのプロジェクトにも存在します。

認証なし – 誰でも入れてしまう

攻撃者にとってのこのドアは開いているだけではありません。管理インターフェースに認証がないため、誰でも入れてしまい、あらゆるユーザーに無制限のアクセスを与えてしまっています。 

これらの誤設定により、攻撃者が制御するアドレスから悪意あるモデルをアップロードするリクエストを送信できてしまいます。

脆弱性 #2 悪意あるモデル注入:RCEにつながるリモート・サーバーサイドリクエストフォージェリ – CVE-2023-43654(NVD、CVSS:9.8)

TorchServeは本番環境でモデルを提供するために使用されます。モデルの設定ファイルは、ワークフロー/モデル登録APIを用いてリモートURLから取得できます。APIには許可ドメインのリストに関するロジックが含まれていますが、Oligoのリサーチチームは、デフォルトではすべてのドメインが有効なURLとして受け入れられることを発見し、その結果SSRFが成立します。 

これは、攻撃者がサーバーによって実行される悪意あるモデルをアップロードできることを意味し、任意コード実行につながります。

前述の脆弱性(任意の攻撃者がリモートから管理サーバーへアクセスできることを実証したもの)と組み合わせることで、デフォルトのTorchserveサーバーで認証を一切必要とせずにリモートコード実行が可能になります。 

これはそれ自体が攻撃ベクターとして利用でき、また下記の別の安全でないデシリアライズRCE脆弱性[脆弱性 #3]をトリガーするためにも利用できます。

脆弱性 #3 オープンソースライブラリの安全でない使用の悪用:JavaデシリアライズRCE – CVE-2022-1471(GHSA、CVSS:9.9)

まもなく公開予定の「設計上安全でないライブラリ」に関するより大きな研究プロジェクトの一環として、Oligoのリサーチチームは、ライブラリの誤用に起因するSnakeYAMLのデシリアライズ脆弱性を通じて、TorchServeが重大なRCEに脆弱であることを特定しました。

AIモデルには、望ましい設定を宣言するためのYAMLファイルを含めることができます。そのため、悪意をもって細工されたYAMLファイルを含むモデルをアップロードすることで、安全でないデシリアライズ攻撃をトリガーし、マシン上でのコード実行に至ることを確認しました。

結果:完全な乗っ取り

この脆弱性の組み合わせにより、認証なしで高い権限のままリモートからコードを実行できます。

このRCEが外部ネットワークに露出しているため、世界中のTorchServeサーバーを侵害できました。現在攻撃に対して完全に露出しているIPアドレスを数万件見つけることができました。

攻撃者がPyTorchサーバー上でコードを実行して組織のネットワークへ侵入できるようになると、それを初期足場としてインフラへ横展開し、さらに影響の大きい攻撃を仕掛けることが可能になります。特に、適切な制限や標準的なコントロールが存在しない場合に顕著です。

しかし、横展開は必ずしも必要ではないかもしれません。ShellTorchを用いれば、攻撃者はすでにAIインフラの中核に入り込んでおり、TorchServeの高い権限を得て活用することで、AIモデル(しばしば企業の中核IPを含む)を閲覧、改ざん、窃取、削除できます。さらに危険なのは、攻撃者がモデル提供サーバーを悪用すると、標的のTorchServeサーバーに出入りする機微データへアクセスし改ざんでき、アプリケーションの信頼性と信用を損なう点です。

AIにおけるセキュリティリスク:影響と含意

2023年は「AIの年」と呼ばれています。AIのイノベーションのスピードは速く、競争は激しいです。 

オープンソースのツールやライブラリは、AI本番フレームワークとMLOpsの状況がダイナミックに成長するうえで、いまや基盤となっています。オープンソースコンポーネントはイノベーションを推進し開発を加速してきましたが、AI本番環境への統合は巨大なセキュリティリスクの可能性を生み出します。

急成長するAI産業と使いやすいオープンソースツールの組み合わせは、イノベーションと脆弱性の間に不安定な均衡を生み、(本ブログで見たような)重大な脅威にシステムをさらします。 

Oligoが発見した脆弱性は、最近の「LLMアプリケーション向けOWASP Top 10」で挙げられている複数のセキュリティリスクの現実例とみなせます。例えば以下です:

  • サプライチェーン脆弱性:より大きなエコシステムのオープンソースコンポーネントを利用して、この種のフルチェーン攻撃を成立させることは、サプライチェーン脆弱性の典型です。
  • モデル窃取:攻撃者が制御を得ると、プロプライエタリなLLMモデルへアクセスして窃取できます。これは経済的損失、競争上の不利、機微データや個人データを含むデータ侵害につながり得ます。
  • モデル注入:敵対者が意図的に悪意あるモデルを提供し、偽の回答を生成させることで有効性を損ない、誤った予測、さらには危険な誤りを引き起こす可能性があります。

ShellTorchの脆弱性から分かるように、組織は、広く公開され、持続可能で、世界トップのソフトウェア企業によって保守されているプロジェクトのみを信頼していたとしても、重大なリスクに自らをさらし、システムを重大な脅威に露出させてしまう可能性があります。TorchServeはAmazonとMetaによって保守されていますが、これらの脆弱性は全バージョンに存在しており、一部のマネージドサービスでは露出を緩和する代替コントロールが追加されています。 

大規模で信頼される企業がホストするサービスとしてこれらのツールを利用することも、脆弱性や安全でない設定に対する保証にはなりません。GKE、AKS、EKSなどのクラウドプロバイダー向けのデフォルトTorchserve設定、ならびにオープンソースのプロジェクトやフレームワークはすべて、連鎖攻撃を可能にしたデフォルトの安全でない設定を使用していました。 

AmazonとGoogleのデフォルトのセルフマネージドDeep Learning Container(DLC)でさえ、ShellTorchに脆弱であることが判明しました。Amazonは最近DLCを更新し、ShellTorchに関してユーザー向けにセキュリティアドバイザリを発行しました。AmazonとGoogleのマネージドサービスには、露出を低減する代替コントロールが含まれています。

緩和策:ShellTorch攻撃から守るための3つの重要ステップ

もちろん、多くのセキュリティ実務者にとって最も重要な問いは、「TorchServeユーザーとして、ShellTorchからどのようにシステムを守るか?」です。

  1. まず、TorchServeのバージョンを0.8.2以上に更新することが重要です。ただし、この更新はSSRF脆弱性を修正するのではなく、TorchServeに警告を追加するだけです。
  2. 潜在的な影響範囲を迅速に最小化するために、管理コンソールを正しく設定することが重要です。この比較的簡単な修正により、攻撃者がデフォルト設定を使って管理コンソールへリモートアクセスすることを防げます:
    config.propertiesファイルに以下を追加してください:
    management_address=http://127.0.0.1:8081
  3. サーバーが信頼できるドメインからのみモデルを取得できるようにしてください。config.propertiesファイルに以下を追加してください:
    allowed_urls=https://s3.amazonaws.com/.*,https://torchserve.pytorch.org/.*(URLはご自身に適用されるものに置き換えてください)。

今すぐ確認:私はShellTorchに脆弱ですか?

影響を受けるインスタンスが数万件にのぼるため、組織が影響を受けるTorchServeのバージョンを使用しているかどうかを特定し、リスクを緩和するための具体的な手順を把握することが極めて重要です。

すぐに確認するには、当社の無料ツールをご利用ください。

また、ShellTorchの潜在的な影響と、不可欠な緩和手順を解説する脅威ブリーフィングも開催しています。

当社リサーチチームとの1:1ブリーフィングを予約する

Oligoが本番環境を保護する方法

敵対者がAIやLLMに照準を合わせる中、組織は、信頼できない第三者コードを使用している場合であっても、これまで以上に本番環境を安全に保つ手段を必要としています。 

しかし、どうやって?

Oligoは、実行時コンテキストにおいて現実に悪用可能な脅威を特定できるセキュリティソリューションを構築しました。ライブラリがどのような文脈で使用されているかを分析することで、他のツールでは検出できない、望ましくない/安全でないアプリケーション挙動の原因を明らかにできます。

静的解析ソリューションとは異なり、Oligoは実行時にあらゆるコードの異常を検知します。そのコードがオープンソースライブラリ由来であれ、プロプライエタリな第三者ソフトウェア由来であれ、カスタム実装であれ同様です。また、安全でない設定などのリスク要因も検知できます。

脆弱性やセキュリティ欠陥が検出された場合、Oligoは、完全なパッチ適用やバージョン更新を必要としない、低侵襲な修正の実装も可能にします。

Oligoプラットフォームで検出されたShellTorch

謝辞

すべてのユーザーの安全を確保するために尽力し、当社リサーチチームと緊密に連携してくださったAWSおよびMetaのセキュリティチームに感謝します。

また、この素晴らしいOSSプロジェクトを構築し、迅速に対応し、すべてのユーザーに対して使いやすさとともにセキュリティを取り込んでくださったMetaおよびAmazonのPyTorchメンテナーにも感謝します。

ShellTorchに関する追加のお問い合わせや詳細が必要な場合は、[email protected]まで当社チームへお気軽にご連絡ください。

専門家のヒント

購読して最新のセキュリティ更新情報を入手

最新アプリもレガシーアプリも防御するために構築

Oligoは、K8s上に構築された最新のクラウドアプリや、オンプレミスでホストされる従来型アプリに対して、数分で導入できます。

翻訳元: https://www.oligo.security/blog/shelltorch-torchserve-ssrf-vulnerability-cve-2023-43654

ソース: oligo.security