CVE-2026-17351
Təsvir
pgAdmin 4 9.16 versiyasında CVE-2026-12045 üçün tətbiq edilən düzəliş, AI Assistant-ın execute_sql_query alətinə ötürülən və LLM tərəfindən təmin edilən sorğunun, BEGIN TRANSACTION READ ONLY paketində işlədilməzdən əvvəl sqlparse vasitəsilə dəqiq bir ədəd tranzaksiya idarəetməsi olmayan operator kimi analiz edilməsini tələb edirdi. sqlparse-ın sətir-literalı leksik analizi PostgreSQL-in öz parseri ilə ziddiyyət təşkil edə bilər: standard_conforming_strings = on olduqda (9.1 versiyasından bəri PostgreSQL-in standart ayarı), dırnaq işarəsindən dərhal əvvəl gələn geri qaytarma xətti (\) PostgreSQL üçün adi simvoldur, lakin sqlparse onu dırnağın ekranlaşdırılması (escaping) kimi qəbul edir. Məsələn, SELECT '\';COMMIT;CREATE TABLE pwn(x int);SELECT 1 --' kimi faydalı yük (payload) sqlparse-ın validatoru tərəfindən tək bir SELECT kimi analiz edilir, lakin PostgreSQL onu dörd operator kimi icra edir: gizlədilmiş COMMIT paketlənmiş yalnız-oxunan tranzaksiyanı sonlandırır və sondakı ROLLBACK heç bir təsir göstərmir. Bu, CVE-2026-12045-in bağlamaq istədiyi eyni yazı/RCE yan keçməsini yenidən ortaya çıxarır və buna eyni dolayı prompt-inyeksiya çatdırılma üsulu ilə nail olmaq mümkündür (hücumçu faydalı yükü AI Assistant-ın oxuya biləcəyi hər hansı obyektə yerləşdirir; LLM isə onu alət çağırışı kimi göndərir). İlkin düzəliş namizədi, sqlparse-ın təsnifatından asılı olmayaraq çoxoperatorlu mətni rədd etmək üçün PostgreSQL-in öz Parse mərhələsini (genişletilmiş sorğu protokolu) məcburi etmək məqsədilə sorğunu psycopg-un execute(..., prepare=True) funksiyası ilə işlədirmişdi. Təqdim olunduğu şəkildə bu düzəliş namizədi işləmir: psycopg3-ün PrepareManager-i, bağlantının prepare_threshold parametri None olduqda prepare arqumentini səssizcə görməzdən gəlir ki, bu da pgAdmin-də hər bir server bağlantısı üçün standart ayardır (administrator tərəfindən açıq şəkildə təyin edilmədikdə, server üzrə "Prepare threshold" sahəsi boş qalır) — psycopg3 sadə sorğu protokoluna qayıdır ki, bu da yan keçmənin istifadə etdiyi çoxoperatorlu imkanlara malik yoldur, beləliklə, düzəliş namizədi real dünya standart konfiqurasiyalarında heç nəyi bağlamır. Düzəldilmiş həll yolu, AI Assistant alətinin açdığı xüsusi, birdəfəlik yalnız-oxunan bağlantıda birbaşa conn.prepare_threshold = 0 parametrini təyin edir və bununla, server səviyyəli konfiqurasiyadan asılı olmayaraq genişletilmiş sorğu protokolunu struktur olaraq məcburi edir. Canlı PostgreSQL 18 instansiyasında yoxlanılmışdır: faydalı yük prepare_threshold=None (standart) davranışı altında uğurla icra olunur və həmin bağlantıda prepare_threshold=0 təyin edildikdən sonra "cannot insert multiple commands into a prepared statement" xətası ilə rədd edilir. Bu problem pgAdmin 4-ün 9.13 versiyasından 9.17 versiyasına qədər olan hissəsinə təsir edir.
Necə düzəltmək olar
- pgadmin pgadmin_49.17 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| pgadmin pgadmin_4 | 9.13 ≤ v < 9.17 | 9.17 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.