flawopen.com/AI Security/cve-2026-103956-aws-loom-authentication-bypass
CVE-2026-103956:AWS Loom の認証バイパス
CVE-2026-103956 は AWS Labs の Loom for AWS 1.6.1 より前のバージョンに影響しました。ID プロバイダーが未設定の場合、任意のネットワーククライアントがスーパー管理者権限を得る可能性がありました。この問題と関連修正をまとめて適用するには 1.7.0 以降へ更新してください。認証バイパス自体は 1.6.1 で修正済みです。[1], [5]
受付係のいない建物で、ソフトウェアが来訪者全員を最高管理者として扱うような状態です。修正後は ID プロバイダーがなければ入場を拒否します。ローカル開発用の例外には明示的な設定と同じ端末からの接続が必要です。[1], [4]
主要な概念と専門用語
ID プロバイダー(IdP)- Loom ユーザーを認証するために設定するシステムです。Cognito と外部 IdP のどちらも設定されていないと、影響を受ける条件になります。[1]
コントロールプレーン- エージェント連携、認証情報、ロールポリシーを管理する API と管理層です。[1]
フェイルクローズ- 必要な認証サービスがない場合、既定の特権 ID を与えずにリクエストを拒否する動作です。[4]
フレームワーク対応
ステップ・バイ・ステップの攻撃フロー
ID プロバイダーが未設定
1.6.1 より前の対象条件は、Cognito ユーザープールも外部 IdP も設定されていない状態です。[1]
フォールバックが特権ユーザーを作る
脆弱な get_current_user の経路は、未認証リクエストを含め、t-admin と g-admins-super を暗黙に付与していました。[4]
API がコントロールプレーン権限を与える
ネットワークから到達できるクライアントは、スーパー管理者としてツールサーバーを登録したり、保存済み連携認証情報を読んだり、管理対象エージェントの IAM ロールポリシーを書き換えたりできました。これはベンダーが説明する影響であり、実際の環境が侵害された証拠ではありません。[1]
Loom のバージョン別修正範囲
| バージョン範囲 | CVE-2026-103956 の認証バイパス | AWS 10月の告知にあるその他の問題 | 運用担当者の対応 |
|---|---|---|---|
| <1.6.1 | Cognito も外部 IdP も設定されていない場合に影響します。ネットワーク上のクライアントがスーパー管理者権限を取得できました。 | CVE-2026-103957 と CVE-2026-103958 は別の問題で、1.7.0 でも修正されています。 | 1.7.0 以降へ更新してください。1.6.1 はこのバイパスだけに対する最低限の修正版です。 |
| 1.6.1–<1.7.0 | 修正済みです。IdP がない場合は 401 を返します。ローカル開発オプトインが有効で、クライアントが loopback の場合のみ例外です。 | AWS は関連する2件の問題を 1.7.0 で修正したとしています。 | 告知対象全体を修正するには 1.7.0 以降へ更新してください。 |
| 1.7.0 以降 | 修正済みです。 | AWS は 1.7.0 で告知された3件すべてを修正したとしています。 | Loom とフォークをサポート対象版に保ち、修正が取り込まれていることを確認してください。 |
根本原因の分析 (Root Cause)
Cognito ユーザープールも外部 ID プロバイダーも設定されていない場合、認証依存コンポーネントのフォールバックは要求を拒否せず、t-admin と g-admins-super を暗黙に割り当てていました。API はこのフォールバック ID を認証済みとして扱うため、バックエンドに到達できるネットワーククライアントが制御プレーンのスーパー管理者権限を得る可能性がありました。修正では既定で拒否し、ローカル開発向け例外には明示的なオプトインと loopback クライアントを要求します。CVE レコードは CWE-306(重要機能の認証欠如)と CWE-1188(安全でないデフォルトによる初期化)を割り当てています。[1], [4], [7]
ソースコード比較:脆弱 vs 堅牢化
脆弱なコードは、メンテナーによる get_current_user の説明を要約しています。Cognito も外部 IdP も設定されていない場合、この経路は t-admin / g-admins-super を暗黙に付与していました。修正版は upstream に取り込まれた動作の要約であり、逐語的なソースコードではありません。ローカル例外には明示的な設定と loopback クライアントが必要で、それ以外のリクエストは HTTP 401 になります。FlawOpen のデプロイに関する注意: 本番では、信頼できない転送ヘッダーによる loopback 偽装を防ぐプロキシ設定がある場合に限り request.client を信頼してください。この CVE の修正には 1.6.1 以降、2026 年 10 月の速報全体への対応には 1.7.0 以降へ更新してください。悪用リクエストや認証情報へのアクセス手順は含めていません。[4], [1]
# メンテナーの説明に基づく、影響を受ける get_current_user 経路の簡略フロー
if not cognito_pool and not external_idp:
return User(username="t-admin", groups=["g-admins-super"])
return await authenticate_with_configured_idp(token)
# ローカル開発の例外が明示され、loopback のみに限定されない限り拒否します。
if not cognito_pool and not external_idp:
opted_in = os.getenv("LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV") == "true"
peer_is_local = request.client is not None and ipaddress.ip_address(
request.client.host
).is_loopback
if opted_in and peer_is_local:
return local_development_user()
raise HTTPException(status_code=401, detail="Identity provider is not configured")
return await authenticate_with_configured_idp(token)
エンジニアリング&システム堅牢化チェックリスト
- ✓Loom を 1.7.0 以降へ更新してください。1.6.1 は
CVE-2026-103956を修正した最初のバージョンで、1.7.0 は一連の問題に対する統合された更新先です。[1], [2], [3] - ✓バックエンドを loopback 以外に公開する前に、Cognito または外部 IdP が設定済みであることを確認してください。[1]
- ✓デプロイ環境では
LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEVを設定しないでください。ローカル開発で使う場合は、許可されるクライアントが loopback であり、信頼できないプロキシ経由でサービスが公開されないことを確認してください。 FlawOpen のデプロイ確認: proxy ヘッダーの処理を確認してから loopback の判定を信頼してください。[1], [4] - ✓FlawOpen の分析: 更新後、対象期間のアクセスと管理変更を確認してください。AWS は、設定済みの OAuth2 クライアントシークレットをローテーションし、対象期間中に有効だったアクセストークンを失効させて再発行するよう推奨しています。コンテナロールの認証情報にアクセスされた場合は、IAM ロールのセッション認証情報をローテーションし、CloudTrail で不正使用を確認してください。[1]
- ✓
CVE-2026-103957とCVE-2026-103958は 1.7.0 で修正された別個の問題として扱い、更新までmcp:writeとa2a:writeを信頼できる管理者に限定してください。[1], [3]