この記事のポイント
- 脆弱性
- CVE-2026-119301
- 深刻度
HIGH7.9
- 対象
- AWS SDK for pandas(awswrangler)3.5.2以上3.17.1未満のApache Iceberg書き込み処理
- 悪用状況
- 不明
- 推奨対応
- 3.17.1以降へ更新し、Glueメタデータ変更者とジョブ実行ロールの権限差を点検。更新まで共有データベースのglue:UpdateTable等を制限し、過去の変更・実行記録を確認します。
- 公表日
目次
は2026年11月2日、AWS for pandas(名awswrangler)のApache Iceberg書き込み処理にの-2026-119301があると公表しました。影響するのは3.5.2以上3.17.1未満です。共有するAWS Glue Data Catalogのを書き換えられる利用者が、より強い権限で動く別の処理を介して、本来読めないテーブルを読み取り、更新対象テーブルへ書き込める可能性があります。
データ基盤の開発・運用担当者は、awswranglerを3.17.1以降へ更新するとともに、to_iceberg()を実行するロールと、対象テーブルのGlueメタデータを変更できる主体を比較してください。更新までの完全なはありません。AWSは権限差のある状態での呼び出しを避け、共有のglue:UpdateTableなどを制限するよう案内しています。
本稿はAWS公式告知2026-161-AWS、開発元、修正PR、公式CVEレコードを11月3日に確認したニュース解説です。修正版3.17.1は8月3日に公開済みであり、11月2日に初めてが配布されたわけではありません。以下の点検・試験は本サイトの提案で、攻撃再現や実測を行った結果ではありません。
スポンサーリンク
共有カタログの列名が権限の境界を越える
問題は、利用者の入力したSQL文字列だけにあるわけではありません。開発元のアドバイザリは、テーブル名や列名をAmazon Athena用SQLへ組み込む際、識別子を囲む文字を適切にしていなかったと説明しています。を照合する処理ではGlue Data Catalogから列名を読み戻すため、呼び出し元のDataFrameを検査しただけでは、その後に流入する名前まで確認したことになりません。
攻撃の前提は、攻撃者が被害側の処理するテーブルのカタログメタデータを変更できることです。認証不要で任意のAWSアカウントへ侵入できる問題でも、Athenaサービス全体のが失われる問題でもありません。一方、データ行を読む権限を持たない利用者でも、メタデータ変更権限と、より強い主体が後で実行する書き込み処理の組み合わせを点検する必要があります。
仮に、部門担当者が共有カタログの列定義を管理し、夜間の統合ジョブは複数部門のテーブルを読めるロールで動く構成を考えます。列名を単なる管理情報として信頼すると、その名前が統合ジョブの生成SQLへ入り、ジョブの権限で評価される経路ができます。これは影響条件を理解するための仮想例であり、特定組織の被害を示すものではありません。
深刻度と悪用状況は別々に読む
開発元が示す 3.1は7.9(High)で、ベクターはAV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:Lです。公式CVEレコードにはCVSS 4.0の5.0(Medium)も掲載されています。評価方式が違う値を同じ尺度として比較せず、本記事の表示用スコアはCVSS 3.1の7.9とします。
確認した提供元資料には、実環境での悪用や被害件数の説明はありません。悪用状況は不明として扱い、深刻度の高さを悪用確認へ読み替えません。優先順位は、影響版の利用、Iceberg書き込みの有無、共有メタデータの変更者、実行ロールが読める範囲から判断します。権限差がある本番ジョブを先に確認するのが実務的です。
スポンサーリンク
最初に実行環境と呼び出し経路を特定する
開発端末で最新版が入っていても、本番のバッチ、コンテナ、Lambdaレイヤー、ノートブックが同じ版とは限りません。依存定義とに加え、実際の処理を動かすPython環境で版を確認します。次の例はパッケージのメタデータを読むだけで、AWSへの接続やテーブルの変更は行いません。
python -c "from importlib.metadata import version; print(version('awswrangler'))"
rg -n 'to_iceberg|delete_from_iceberg_table|awswrangler' .
検索結果から、共通ラッパー、定期ジョブ、配布レイヤーの利用まで追います。対象ごとに、実行するAWSアカウントと、ロール、Glueデータベース・テーブル、依存版、成果物の識別子を対応付けます。ソース検索に一致しなかったことだけで、外部ライブラリーや別からの利用まで対象外と判断しないでください。
影響版を見つけたら3.17.1以降へ更新し、AWSが勧める最新安定版も互換性と合わせて検討します。依存ファイルの書き換えで終えず、コンテナやレイヤーを再作成し、本番へ反映してから稼働版を再取得します。独自フォークや派生コードでは版番号だけでなく、識別子の引用処理に修正が取り込まれていることを確認します。
修正はDDLとDMLで異なる引用文字を扱う
修正PR #3423は、fill_missing_columns_in_df=Trueによる既定の自動照合で、Glueの列名が生成するMERGE/INSERTへ入ることを説明しています。自分のDataFrameに変わった名前がないから安全、という判断はできません。この設定を切ることも、提供元が保証した完全な回避策として扱わないでください。
Athenaでは、CREATE TABLEやALTER TABLEなどのDDLと、SELECT・INSERT・MERGE・DELETEなどのDMLで識別子の引用方法が異なります。修正では、DML用に二重引用符、DDL用にバッククォートをそれぞれ処理するヘルパーを追加しています。文字列値を囲む単一引用符の処理を、列名の処理へそのまま流用する設計では足りません。
公開された修正差分では、テーブル・列名の生成箇所、MERGE/INSERT、上書き時のDELETE、列の追加・型変更などへ処理を適用しています。一方、partition_colsはday(ts)などの変換式を受け取るため、単純な識別子として一括引用していません。修正済みだからすべてのSQL関連引数へ任意の外部入力を渡してよい、と拡大解釈しないことが重要です。
スポンサーリンク
更新前はメタデータ変更者と実行ロールを比較する
AWSの暫定策は、影響するto_iceberg()を、メタデータ変更者より強い権限の主体で呼ばないことと、共有データベースの変更権限を制限することです。本サイトでは、カタログ変更、ジョブ実行、データ参照の三つを別欄で棚卸しする方法を提案します。のロール名が違うだけでは、実効権限が分離された証拠になりません。
確認対象には、人の操作だけでなく、カタログを更新する自動化や委任されたロールも含めます。必要なスキーマ変更を全面禁止して業務を止める前に、変更対象を限定し、承認された経路へ集約できるかを検討します。ただし、権限を絞ったという説明だけで修正適用を不要にせず、暫定対応と更新の完了を別々に管理してください。
更新後は引用文字と権限差を無害なデータで試す
受け入れ試験は自社管理の隔離環境で行い、通常の列名に加えて、引用文字を含む列名が意図した一つの識別子として処理されるかを確認します。提供元の修正テストを参考に、DataFrameから来る列名とGlueから読み戻す列名を分けて検証します。本番テーブルへ攻撃用の名前を入れたり、実データで漏えいの可否を試したりする必要はありません。
追記、、上書き、列追加など、実際に使うモードも確認します。正常なジョブが通ることと、不正な構造がSQLとして解釈されないことは別の合格条件です。名前の引用変更で構文エラーが出た場合は、生成SQL、DDL/DMLの種類、列名の出所を調べます。エラーを消すためにロールへ広い権限を足したり、修正前の独自連結へ戻したりしないでください。
過去の変更とジョブ実行を時系列で照合する
更新は、過去のカタログ変更や既に書き込まれたデータを元へ戻す処理ではありません。共有メタデータを変更できる主体が多かった場合は、残っている変更履歴とAthenaのクエリ実行記録、ジョブの配信・実行履歴を保全し、カタログ変更の後にどの権限で処理されたかを確認します。単に特殊文字があるという理由だけで侵害と判定せず、正当なスキーマ変更の記録と突き合わせます。
AWS GlueのCloudTrail公式文書によると、CloudTrailはGlue の呼び出しを記録し、実行主体、時刻、要求、送信元などを追跡できます。ただし、すべての情報がログに残るわけではなく、GetTableなど一部APIの応答は記録されません。ログに列定義が見えないことを、変更も悪用もなかった証明にはできません。保存期間と取得できた範囲を明示して調査します。
対応の完了条件は、稼働版の更新、カタログ変更権限の確認、通常処理の回帰試験、過去の不審変更の評価です。既存のAWS SDK for pandasの結果保存先に関する記事で扱ったCVE-2026-118029はS3バケットの所有者検証が主題で、今回は共有メタデータから生成SQLへ入る名前と権限差が主題です。両方を使う環境では、それぞれの確認項目を残してください。
対応票は版と権限とデータを別々に残す
| 確認対象 | 残す記録 | 完了の判断 |
|---|---|---|
| 実行環境 | awswranglerの稼働版と成果物 | 修正を含む版が本番で動く |
| 共有カタログ | 変更できる主体と対象テーブル | 不要な変更経路を閉じた |
| ジョブ権限 | 参照先と書き込み先の範囲 | 業務上必要な範囲へ限定した |
| 回帰試験 | 列名・モード別の試験結果 | 通常処理と引用文字の扱いを確認した |
| 過去の実行 | 保存済みログと未取得期間 | 不審な変更を評価し残課題を引き継いだ |
更新作業と調査作業の担当が違う場合も、この対応票を共有すると「パッチ適用済み」という一言で未確認項目が消えるのを防げます。用のイメージやレイヤーにも修正済みを用意し、障害時に影響版へ戻らない計画を持ってください。
出典・一次情報
本記事は以下の公開情報をもとに作成しています。最新の状況は各リンク先で確認してください。
-
公式アドバイザリ
-
公式アドバイザリ
-
CVE













