AIトレーニングサービス経由で顧客のクラウド環境にアクセスできる脆弱性をセキュリティ企業が報告
セキュリティ企業のWizが、ビジネス向けのAIサービスを提供するSAPのシステムについて調査し、AIサービス経由で顧客企業のクラウド環境にアクセスできる脆弱(ぜいじゃく)性を発見したと報告しました。
SAPwned: SAP AI vulnerabilities expose customers’ cloud environments and private AI artifacts | Wiz Blog
https://www.wiz.io/blog/sapwned-sap-ai-vulnerabilities-ai-security
SAPの「SAP AI Core」にはアクセスキーを用いて他のクラウドサービスのデータを読み取り、AIのトレーニングに活用するという機能が存在しています。Wizが発見した脆弱性を使用することで、悪意のある攻撃者がサービスを乗っ取り、顧客のデータにアクセスして内部成果物を汚染したり、関連サービスや他の顧客の環境に侵入したりすることが可能だったとのこと。
攻撃フローの全体図は下図の通り。AIモデルを実行する際のサンドボックス化が不十分だったことで、攻撃者が悪意のあるAIモデルを用いたトレーニングを通じて不正なコードを実行できてしまうことが根本的な問題だったとWizは述べています。
Wizが脆弱性を発見するまでの道筋は以下の通り。
まず、一般的なSAPのユーザーとしてAIアプリケーションを作成。Argo Workflowファイルを使用して新たなKubernetesのPodを起動しました。Pod内では任意のコードを実行できますが、ネットワークアクセスなどの機能は厳しく制限されていたとのこと。
そこでWizはさまざまな構成を試してみました。コンテナをrootとして実行するなどの危険な行為はアドミッションコントローラーが阻止したものの、shareProcessNamespaceフィールドを使用してプロセス名前空間をサイドカーコンテナと共有することが可能と判明。マイクロサービス間のデータの共有を制御するクラスタのIstioサーバーへのアクセストークンを入手できました。
また、runAsUserやrunAsGroupを使用してIstioのユーザーになることができたとのこと。こうして、Pod内部のネットワークへ無制限にアクセスすることが可能になりました。
クラスター内をスキャンするとGrafana Lokiのインスタンスが見つかったので、WizがAPIを使用してLokiの設定を表示するよう要求してみると回答にLokiがS3にアクセスするために使用したAWSシークレットが含まれていました。
AWSシークレットを使用することで、AWS S3に保存されているAI Coreサービスおよび顧客のPodから出力される大量のログにアクセスできたとのこと。
内部ネットワークにはLoki以外にAWS Elastic File System(EFS)のインスタンスも見つかりました。EFSインスタンスは標準でパブリックに設定されており、アクセスすることさえできれば認証不要でファイルの表示や編集が可能です。Wizは実際に使用されている顧客のトレーニングデータなどの大量のAIデータを発見しました。
EFSのインスタンスは6個あり、いくつもの顧客データが保存されていたとのこと。
内部ネットワークのスキャンを続けると、Kubernetes用のパッケージマネージャーであるHelmのサーバーコンポーネント「Tiller」の存在が明らかになりました。Tillerに対しても認証なしでアクセスでき、Tillerを通してSAPのDockerレジストリやArtifactoryサーバーにアクセスしてサプライチェーン攻撃を行うことが可能でした。
また、Tillerを通して管理権限を持つ新たなPodを生成する悪意のあるパッケージをインストールすることで、クラスター上で完全な権限を取得できたとのこと。完全な権限があれば、攻撃者は他の顧客のPodに直接アクセスしてモデル、データセット、コードなどの機密データを盗んだり、AIデータを汚染してモデルの推論を操作したりすることが可能です。
完全な権限を使用することでSAP AI Coreサービスの範囲外の機密情報にもアクセスすることができます。
Wizは今回の調査結果について、「内部ネットワークは安全である」という前提でサービスが組まれていたために最初のネットワークの制限を乗り越えただけでさまざまな情報にアクセスできるようになってしまったことが問題だと述べ、多層防御の重要性を訴えました。
なお、今回の脆弱性は2024年1月25日にSAPへ通知されており、すでに対応が完了しているとのことです。
07/19 13:00
GIGAZINE