flawopen.com/AI Security/cve-2026-107322-aws-databases-on-aws-psql-command-injection
CVE-2026-107322:AWSエージェントプラグインのpsqlコマンド注入
CVE-2026-107322はAWSのdatabases-on-awsプラグインに含まれる任意のpsql helperに影響しました。入力フィルターがpsqlメタコマンドを見逃しており、ホスト上での実行にはagentが後から値をhelperへ渡す必要があります。1.7.1以降へ更新してください。[1], [2], [4]
担当者がメモのSQL文を確認しても、データベースクライアントには別のコマンド言語があることを忘れている状況です。外部コンテンツが第2のインタープリターに届くのは、agentがローカルhelperへ渡した場合だけです。修正では実行前にその構文を拒否します。[1], [2]
主要な概念と専門用語
agentが受け取るコンテンツ- リモートまたは信頼できない情報源からAI agentに届くデータです。AWSは到達経路を示していません。[1]
フレームワーク対応
- このガイドで説明する弱点の CWE 参照: CWE-184
ステップ・バイ・ステップの攻撃フロー
根本原因の分析 (Root Cause)
AWS とメンテナーは、CVE-2026-107322 の原因を databases-on-aws の任意利用可能な psql 接続 helper にある不完全な入力フィルターと説明しています。修正前、検証処理は作業用コピーから単一引用符で囲まれた SQL リテラルを除去し、SQL の文区切りとコメントを拒否していましたが、psql クライアントがメタコマンド構文として解釈するバックスラッシュを残していました。修正ではリテラル処理後、既存の検査前に残ったバックスラッシュを拒否し、見落とされていた解析境界を塞ぎます。[1], [2], [3]
ソースコード比較:脆弱 vs 堅牢化
上流パッチは単一引用符内のSQLリテラルを除去した後、psql呼び出しや既存検査の前に残ったバックスラッシュを拒否します。これは簡略例であり、汎用SQLパーサーではありません。元の引用符処理には文書化された境界ケースがあります。複雑または信頼できないクエリでは、AWSの推奨どおり任意のshell helperを避け、DSQL MCP serverまたは手動レビュー済みSQLを使用してください。最小権限で実行すれば影響を抑えられますが、更新の代替にはなりません。[2], [3]
ソース抜粋: plugins/databases-on-aws/scripts/psql-connect.sh — --commandフィルターの簡略例
# 抜粋:SQL を対象とした検査では psql メタコマンド構文を拒否できませんでした。
stripped=$(echo "$COMMAND" | sed "s/'[^']*'//g")
if echo "$stripped" | grep -q ';'; then
echo "Error: multiple SQL statements are not allowed." >&2
exit 1
fi
if echo "$stripped" | grep -q -- '--'; then
echo "Error: SQL comments are not allowed." >&2
exit 1
fi
psql --command "$COMMAND"
# 上流の 1.7.1 での修正に基づく抜粋です。
stripped=$(echo "$COMMAND" | sed "s/'[^']*'//g")
if echo "$stripped" | grep -q '\\'; then
echo "Error: psql meta-commands are not allowed." >&2
exit 1
fi
if echo "$stripped" | grep -q ';'; then
echo "Error: multiple SQL statements are not allowed." >&2
exit 1
fi
if echo "$stripped" | grep -q -- '--'; then
echo "Error: SQL comments are not allowed." >&2
exit 1
fi
psql --command "$COMMAND"
エンジニアリング&システム堅牢化チェックリスト
- ✓databases-on-awsを1.7.1以降へ更新します。固定checkoutではコミット8b13a503746a4ebb0402b936645163224058bde3以降を使います。[1], [2], [3]
- ✓更新までは任意のpsql helperを無効にし、手動レビュー済みSQLまたはDSQL MCP serverを使います。[1]
- ✓psqlへ渡す入力ではSQLだけでなく、クライアント独自のメタコマンド言語も扱います。[2], [3]
- ✓拒否入力がpsql起動前に停止する回帰テストと、許可する通常SQLのテストを追加します。[3]
- ✓agentとhelperは低権限で実行し、dsql:DbConnect限定のIAM roleとDB roleを使います。通常運用でdsql:DbConnectAdminを使いません。[1]
- ✓不正アクセスの証拠がある場合、AWSに従って資格情報を更新または失効させ、DB roleとIAM対応を確認します。[1], [2]
参考資料
- AWS Security Bulletin 2026-130 — CVE-2026-107322
- Amazon Agent Plugins for AWS — GHSA-x7f2-wxc8-qpxq
- Upstream fix commit 8b13a503746a4ebb0402b936645163224058bde3
- CVE Program record — CVE-2026-107322
- Related FlawOpen analysis — AWS Security Agent MCP Git argument injection
- Related FlawOpen analysis — PostgreSQL CVE-2025-1094 and the BeyondTrust incident