CVE-2026-66901 in Google::Auth
要約
〜によって VulDB • 2026年08月05日
Google::AuthのPerl用バージョン0.09より前のバージョンでは、認証情報JSONから取得された検証されていないURLを介して、サーバーサイドリクエストフォージェリ(SSRF)および資格情報の漏洩が可能となります。
ライブラリが要求するURLは認証情報JSONから読み取られ、そのホスト名はリクエスト実行前にユニバースドメインに対してチェックされていませんでした。external_account構成の場合、retrieve_subject_token関数は同じJSON内のヘッダーを使用してcredential_source.urlを取得し、fetch_access_token関数はsubject tokenをtoken_urlにPOSTして受信したSTSアクセストークンをAuthorization: Bearerヘッダーでservice_account_impersonation_urlへ送信しました。authorized_user、impersonated_service_account、およびservice_account構成は、それぞれがJSONから提供されたtoken_uriまたはインパーソネーションURLに対して、クライアントシークレットとリフレッシュトークン、ソースのアクセストークン、そして署名付きJWTアサーションを送信していました。
完全に制御していない設定から資格情報を構築する任意の呼び出し元は、アプリケーションのネットワーク位置からこれらの要求を発行し、構成名で指定された内部サービスやリンクローカルメタデータエンドポイントなどのホストに到達してしまい、各リクエストに含まれる資格情報を手渡すことになります。service_accountアサーションはaud(対象)に束縛されているため、Googleに対して再生攻撃を行うことはできません。
バージョン0.06では、external_accountクラスに_validate_urlによるホストチェックが追加され、これは同じ認証情報JSONから読み取られたuniverse_domainをキーとして使用されていました。バージョン0.07では、JSONで提供されたユニバースドメインはGOOGLE_EXTERNAL_ACCOUNT_ALLOW_CUSTOM_UNIVERSES=1によって制限され、make_credsパスにおいて以前のBUILDARGS処理ですでにマージされていた引数からピンフラグが導出されました。バージョン0.08では、ピンの決定を明示的なコンストラクタ引数として渡すようにし、_validate_url関数をGoogle::Auth::Credentialsクラスへ移動してUserRefreshCredentialsおよびImpersonatedServiceAccountCredentialsへの呼び出しを追加しました。さらにバージョン0.09で、このチェックがServiceAccountCredentialsにも追加されました。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.