SAPのPython向けクラウドSDKに最高深刻度「CVSS 10」の脆弱性、認証情報窃取の恐れ
要点
-
独SAPはクラウド開発キット「SAP Cloud SDK for Python」に、最高深刻度「CVSS 10.0」の脆弱性(CVE-2026-89111)が存在することを公表した。
-
攻撃者がテナント名を操作できる場合、アプリケーションのOAuth2認証情報が外部サーバーへ送信される危険がある。
-
2026年8月に修正版が公開されたものの、9月に公開された特定バージョンで検証処理が漏れていたことがメディアの調査で判明した。
-
バージョン0.55.1以降などで対策が施されており、直ちに更新できない環境に向けてはテナント名を事前照合する回避策が案内されている。
-
独SAPは2026年10月13日、クラウド基盤向け公式ライブラリ「SAP Cloud SDK for Python」に、深刻度を示すCVSSスコアで最高値となる10.0と評価された重大な脆弱性が存在することをセキュリティアドバイザリで明らかにした。「CVE-2026-89111」として管理される本脆弱性は、悪用されると標準的な認可プロトコルであるOAuth2のクライアント認証情報が攻撃者に窃取される恐れがあるという。対象となるのは、クラウド基盤「SAP Business Technology Platform(SAP BTP)」上で同SDKを利用するマルチテナント型アプリケーションである。
脆弱性の仕組みと認証情報流出の流れ
「SAP Cloud SDK for Python」は、クラウドサービス基盤であるSAP BTPの各種サービスと連携するアプリケーションを開発するための公式Pythonクライアントである。
SAPの説明によると、本脆弱性はサーバーが意図しない外部宛先へリクエストを送信させられる「SSRF(サーバーサイド・リクエスト・フォージェリ)」に分類される。攻撃が成立するには、対象アプリケーションがSDKに渡すリクエスト先の識別名である「テナントサブドメイン」を、攻撃者側が外部から操作できる状態にあることが条件となる。
SDKは各テナント向けに処理を行う際、設定情報からURLを読み出し、その一部を渡されたテナントサブドメインの値で置き換えてアクセストークンを要求する仕様となっていた。しかし、入力値の検証処理が欠落しているバージョンでは、与えられた文字列がそのままURLに組み込まれてしまう。その結果、SDKはアプリケーションのクライアントIDとクライアントシークレットを付与したトークン要求リクエストを、攻撃者が指定した外部サーバーへと直接送信してしまうという。
なお、認証情報が盗まれた場合に攻撃者がどのような不正操作を行えるかについては、各アプリケーションのクライアントに付与されている権限に依存するため、アドバイザリには具体的な影響範囲の詳細は記載されていない。
8月の修正と後続バージョンで生じた再発
SAPのアドバイザリでは、2026年8月21日にリリースされたバージョン0.45.2が修正版として指定されている。この修正では、テナントサブドメインに英数字とハイフンで構成される最大63文字の単純な文字列のみを許可し、URL区切り文字などを含む不正な値を受け取った場合は即座にエラー(ValueError)を発生させる入力検証が導入された。
しかし、セキュリティメディア「The Hacker News」の調査により、その後に公開された一部のリリースでこの検証が欠落していたことが判明した。2026年9月10日から18日にかけて公開されたバージョン0.53.0から0.55.0までのリリースでは、「Destination」サービスモジュールの呼び出し時にチェックがスキップされていた。該当モジュールがトークン要求用の新たな共有コードへ移行した際、そのコードに入力検証が含まれていなかったことが原因である。また、バージョン0.55.0では「Document Management Service」の呼び出し時にも同様の欠落があったという。
この問題に対しSAPは、9月18日リリースのバージョン0.55.1において、URL区切り文字を含む値が渡された際に即座にエラーを発生させるよう共有コード側にも検証機能を追加した。
影響を受けるバージョンと推奨される対策
The Hacker NewsがSAPのテストコードを用いて検証したところ、バージョン0.53.0から0.55.0までの6リリースはテスト11件中9件に失敗した。一方、修正が行われたバージョン0.55.1およびその後の11リリース(計12リリース)は、すべてのテストに合格している。
また、過去のラインであるバージョン0.36系列についても懸念が残る。バージョン0.36.1および0.36.2は8月の修正以降に公開されているもののテストに失敗しており、同系列の全3リリースにはいずれもチェックが実装されていない。そのため、0.36系列内でのアップデートでは本問題は解消されない。
10月13日時点で安全が確認されているのは「0.45.2〜0.52.2」および「0.55.1〜0.58.4」である。Pythonの公式パッケージ管理リポジトリ「PyPI」における最新版は0.58.4となっている。なお、アドバイザリでは0.45.2より新しいバージョンを影響対象として記載しておらず、0.53.0〜0.55.0のリリースがCVE-2026-89111の対象に含まれるかも明記されていない。
直ちに安全なバージョンへ更新できない環境に向け、SAPはテナントサブドメインをSDKに渡す前に登録済みテナントのリストと照合する回避策を提示している。なお、脆弱なバージョンを稼働させていた環境において、漏洩の懸念があるクライアント認証情報を再発行すべきか否かについて、アドバイザリ内での言及はない。