CVE-2026-17566

Kritik

Təsvir

pgAdmin 4-ün Import/Export Data aləti, istifadəçi tərəfindən təmin edilən SQL sorğusunu Jinja şablonuna daxil edərək və render edilmiş sətri --command vasitəsilə psql-ə ötürərək psql \copy (...) əmrini formalaşdırır. Hücumçunun (...) mötərizələrindən kənara çıxmasının qarşısını almaq üçün create_import_export_job() funksiyası (yalniz adi və geniş yayılmış tools_import_export_data icazəsi ilə məhdudlaşdırılan POST /import_export/job/<sid> marşrutu), sorğunu əllə yazılmış mötərizə balansını yoxlayan _is_query_parens_balanced() funksiyası ilə təsdiqləyirdi. Həmin yoxlayıcı, tək dırnaqdan əvvəl gələn geri meyli (\') həmişə dırnağın ekranlanması (escaping) kimi, yəni sanki standard_conforming_strings söndürülmüş kimi qəbul edirdi. PostgreSQL 9.1 versiyasından (2010) etibarən standard_conforming_strings parametrini standart olaraq aktiv ("on") edib ki, bu da pgAdmin 4-ün hazırda dəstəklədiyi bütün PostgreSQL versiyalarında (13-18) standartdır; bu standart altında psql-in öz \copy tokenizatoru \ simvolunu adi simvol kimi qəbul edir, buna görə də ondan dərhal sonra gələn tək dırnaq sətir literalını bağlayır. Beləliklə, SELECT 'a\') TO PROGRAM 'echo pwned' x' kimi bir sorğu pgAdmin-in yoxlayıcısı tərəfindən "balanslı" kimi qəbul edilirdi (çünki yoxlayıcı ) simvolunun hələ də sətirin daxilində olduğunu düşünürdü), lakin faktiki render edilmiş əmr sətri vasitəsilə işlədilən psql sətiri həmin nöqtədə bağlayır və ardınca gələn ) simvolunu əhatə edici \copy (...) alt-sorğusunun sonu kimi qəbul edir. Bu, hücumçu tərəfindən seçilmiş və psql tərəfindən popen() vasitəsilə icra edilən TO PROGRAM '<command>' bəndini ortaya çıxarır — bu, eyni sətirdə daha sonra baş verən sintaksis xətasından asılı olmayaraq baş verir. Bu, CVE-2025-12762/CVE-2025-13780 ilə eyni növ xətadır (PLAIN formatlı dump bərpası zamanı psql meta-əmr/COPY inyeksiyası vasitəsilə uzaqdan kodun icrası - RCE), lakin fərqli moduldakı (Restore yerinə Import/Export Data) müstəqil yazılmış müdafiə mexanizmi vasitəsilə, özünün fərqli məntiq xətası (BOM tərəfindən sıradan çıxarılan regex anchor-u yerinə tərsinə çevrilmiş geri meyl-ekranlama semantikası) ilə baş vermişdir. Düzəliş, iki mümkün psql interpretasiyasından birini seçmək əvəzinə, sorğuda tək dırnaqla əhatə olunmuş sətirin daxilindəki hər hansı geri meyli birbaşa rədd edir. Bu, qəsdən mühafizəkar yanaşmadır: çünki \ simvolunun düzgün interpretasiyası hədəf serverin standard_conforming_strings parametrinə bağlıdır və yoxlayıcı bunu təsdiqləmə zamanı etibarlı şəkildə bilmir, ona görə də sorğunu rədd etmək təxmin yürütməkdən daha təhlükəsizdir. Bu problem pgAdmin 4-ün _is_query_parens_balanced() funksiyasının tətbiq edildiyi vaxtdan 9.18 versiyasına qədər olan hissəsinə təsir edir.

CiddilikKritik
CVSS9.9
İstismar ehtimalı—
MəhsulPgadmin 4
Dərc31 iyl 2026
İlk görülmə31 iyl 2026

Necə düzəltmək olar

Yeniləyin
  • pgadmin pgadmin_49.18 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
pgadmin pgadmin_4v < 9.189.18

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.

Intelligence 360 paketində

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.