flawopen.com/AI Security/cve-2026-107322-aws-databases-on-aws-psql-command-injection
CVE-2026-107322: injeksi perintah pada plugin agen AWS
CVE-2026-107322 berdampak pada helper psql opsional di plugin AWS databases-on-aws. Filternya melewatkan meta-command psql; konten jarak jauh hanya dapat menjalankan perintah pada host jika agen kemudian meneruskan nilainya ke helper. Tingkatkan ke versi 1.7.1 atau lebih baru.[1], [2], [4]
Bayangkan petugas memeriksa catatan untuk instruksi SQL tambahan, tetapi lupa bahwa klien database memiliki bahasa perintah sendiri. Konten eksternal hanya mencapai interpreter kedua jika agen menyerahkannya ke helper lokal. Perbaikannya menolak sintaks tersebut sebelum helper dijalankan.[1], [2]
Konsep Kunci & Istilah
Meta-command psql- Instruksi yang ditafsirkan klien interaktif PostgreSQL, bukan server database. Ini merupakan batas parsing tersendiri dari SQL.[2], [3]
CWE-184: daftar input terlarang tidak lengkap- Filter menolak beberapa bentuk, tetapi melewatkan bentuk lain yang ditafsirkan khusus oleh komponen berikutnya.[2], [4]
Konten yang diterima agen- Konten dari sumber jarak jauh atau tidak tepercaya. AWS tidak menjelaskan cara konten khusus mencapai agen.[1]
Pemetaan kerangka kerja
- Referensi CWE untuk kelemahan yang dijelaskan dalam panduan ini: CWE-184
Alur Serangan Langkah demi Langkah
Analisis Akar Masalah (Root Cause)
AWS dan pengelola proyek mengaitkan CVE-2026-107322 dengan filter input yang tidak lengkap pada helper koneksi psql opsional databases-on-aws. Sebelum diperbaiki, tahap validasi menghapus literal SQL berpetik tunggal dari salinan kerja serta menolak pemisah pernyataan dan komentar SQL, tetapi membiarkan garis miring terbalik yang ditafsirkan klien psql sebagai sintaks meta-command. Perbaikan menolak garis miring terbalik yang tersisa setelah pemrosesan literal dan sebelum pemeriksaan yang ada, sehingga menutup batas parser yang terlewat.[1], [2], [3]
Kode Sumber: Rentan vs Aman
Patch upstream menolak garis miring terbalik yang tersisa setelah menghapus literal SQL berpetik tunggal, sebelum memanggil psql dan menjalankan pemeriksaan lain. Cuplikan ini disederhanakan dan bukan parser SQL umum; penanganan tanda petik awal memiliki kasus batas yang terdokumentasi. Untuk kueri kompleks atau tidak tepercaya, hindari helper shell opsional dan gunakan DSQL MCP server atau SQL yang ditinjau manual, sesuai saran AWS. Jalankan proses dengan hak minimum: ini membatasi dampak, tetapi tidak menggantikan pembaruan.[2], [3]
Cuplikan sumber: plugins/databases-on-aws/scripts/psql-connect.sh — cuplikan ringkas filter --command
# Cuplikan ringkas: pemeriksaan yang berfokus pada SQL tidak menolak sintaks meta-command 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"
# Cuplikan ringkas berdasarkan perbaikan upstream versi 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"
Daftar Periksa Penguatan Sistem Rekayasa
- ✓Tingkatkan databases-on-aws ke 1.7.1 atau lebih baru; checkout terkunci harus memakai commit 8b13a503746a4ebb0402b936645163224058bde3 atau yang lebih baru.[1], [2], [3]
- ✓Sebelum peningkatan, nonaktifkan helper psql opsional dan gunakan SQL yang ditinjau manual atau DSQL MCP server.[1]
- ✓Saat input mencapai psql, perhitungkan bahasa meta-command klien yang terpisah selain filter SQL.[2], [3]
- ✓Uji bahwa input yang ditolak menghentikan alur sebelum psql dimulai; sertakan kasus SQL normal yang valid.[3]
- ✓Jalankan agen dan helper tanpa hak istimewa, dengan IAM role terbatas ke dsql:DbConnect dan database role terbatas; hindari dsql:DbConnectAdmin.[1]
- ✓Jika ada indikasi akses tidak sah, ikuti AWS: rotasi atau cabut kredensial yang dapat diakses dan tinjau role serta pemetaan IAM-database.[1], [2]
Sumber
- 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