CVE-2026-17566

Kritik

Açıklama

pgAdmin 4'ün Import/Export Data aracı, kullanıcı tarafından sağlanan bir SQL sorgusunu bir Jinja şablonuna yerleştirerek ve oluşturulan satırı psql'e --command aracılığıyla ileterek bir psql \copy (...) komut satırı oluşturur. Bir saldırganın (...) sarmalayıcısından kaçmasını engellemek için create_import_export_job() (POST /import_export/job/<sid> rotası, yalnızca olağan ve yaygın olarak verilen tools_import_export_data izniyle korunur) sorguyu elle yazılmış bir parantez dengesi denetleyicisi olan _is_query_parens_balanced() ile doğruluyordu. Bu denetleyici, tek tırnak işaretinden (') önce gelen bir ters bölüyü (\') her zaman tırnağı kaçışlıyor olarak ele alıyordu; yani standard_conforming_strings kapalıymış gibi davranıyordu. PostgreSQL, 9.1'den (2010) bu yana standard_conforming_strings ayarını varsayılan olarak açık tutmaktadır ve bu, pgAdmin 4'ün şu anda desteklediği her PostgreSQL sürümünde (13-18) varsayılandır; bu varsayılan altında psql'in kendi \copy belirteçleştiricisi \ karakterini sıradan bir karakter olarak ele alır, dolayısıyla hemen ardından gelen tek tırnak dize sabitini kapatır. Bu nedenle SELECT 'a\') TO PROGRAM 'echo pwned' x' gibi bir sorgu pgAdmin'in denetleyicisi tarafından "dengeli" olarak kabul ediliyordu (denetleyici ) karakterinin hâlâ dizenin içinde olduğuna inanıyordu), oysa gerçek oluşturulan komut satırı üzerinden çalıştırılan psql dizeyi bu noktada kapatır ve ardından gelen ) karakterini sarmalayıcı \copy (...) alt sorgusunun sonu olarak ele alır; bu da saldırganın seçtiği ve psql'in popen() aracılığıyla yürüttüğü bir TO PROGRAM '<command>' yan tümcesini açığa çıkarır -- aynı satırdaki sonraki bir sözdizimi hatasından bağımsız olarak. Bu, CVE-2025-12762/CVE-2025-13780 (PLAIN biçimli döküm geri yüklemesi sırasında psql meta-komutu/COPY enjeksiyonu yoluyla uzaktan kod çalıştırma) ile aynı hata sınıfındadır; ancak burada farklı bir modülde (Restore yerine Import/Export Data) bağımsız olarak yazılmış ve kendine özgü, farklı bir mantık hatasına sahip (BOM ile atlatılan regex bağlantısı yerine ters bölü kaçış semantiğinin tersine çevrilmesi) bir savunma üzerinden erişilmektedir. Düzeltme, iki olası psql yorumundan birini seçmek yerine sorgudaki tek tırnaklı bir dize içindeki herhangi bir ters bölüyü doğrudan reddeder. Bu kasıtlı olarak temkinlidir: \ karakterinin doğru yorumu hedef sunucunun standard_conforming_strings ayarına bağlı olduğundan ve denetleyici bunu doğrulama zamanında güvenilir biçimde bilemediğinden, sorguyu reddetmek tahmin etmekten daha güvenlidir. Bu sorun pgAdmin 4'ü etkiler: _is_query_parens_balanced() fonksiyonunun 9.18 öncesinde kullanıma sunulmasından itibaren.

ÖnemKritik
CVSS9.9
İstismar olasılığı—
ÜrünPgadmin 4
Yayın31 Tem 2026
İlk görülme31 Tem 2026

Nasıl düzeltilir

Güncelleyin
  • pgadmin pgadmin_49.18 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
pgadmin pgadmin_4v < 9.189.18

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.