CVE-2026-12046
Açıklama
pgAdmin 4'ün SQL Editor blueprint'indeki iki durum değiştirici uç nokta -- DELETE /sqleditor/close/<trans_id> ve POST /sqleditor/initialize/sqleditor/update_connection/<sgid>/<sid>/<did> -- modüldeki @pga_login_required dekoratörü eksik olan tek rotalardı. Her ikisi de session['gridData'][<trans_id>]['command_obj'] üzerinde bir pickle.loads sink'ine ulaşır: close uç noktası close_sqleditor_session() aracılığıyla, update_sqleditor_connection ise check_transaction_status() aracılığıyla. Sunucu modunda bu uç noktalara herhangi bir kimliği doğrulanmış pgAdmin oturumu olmadan erişilebiliyordu. Kusur, güvenilmeyen verilerin serileştirilmesi (deserialization-of-untrusted-data) sink'ini (CWE-502) çevreleyen kritik fonksiyonda kimlik doğrulama eksikliğidir (missing-authentication-on-critical-function - CWE-306). Bunu uzaktan kod çalıştırma için istismar etmek, saldırganın aynı zamanda gridData girişi kötü amaçlı bir pickle yükü içeren sunucu tarafı oturum dosyasını taklit etmesini gerektirir; bu da sırasıyla şunları gerektirir: (a) pgAdmin'in Flask SECRET_KEY bilgisinin bilinmesi (burada bunu sızdıracak bir zincirden bahsedilmemektedir -- saldırgan buna zaten sahip olmalıdır) ve (b) ana makinedeki pgAdmin'in sessions/ dizinine yazma erişimi. Bu ön koşulların hiçbiri tek başına bu kusur tarafından sağlanmaz. Bu ön koşullar başka bir kanal üzerinden karşılandığında (hatalı yapılandırılmış dağıtım, önceki bir ihlal, sızdırılmış yapılandırma), eksik kimlik doğrulama kapısı, mevcut kısmi bir ihlali pgAdmin işleminde -- ve dolayısıyla pgAdmin'i çalıştıran hesap altında ana makinede -- kimlik doğrulamasız kod çalıştırmaya dönüştüren son adımdır. Düzeltme, modüldeki diğer tüm rotalar tarafından kullanılan sözdizimine uygun olarak her iki uç noktaya eklenen tek satırlık bir @pga_login_required dekoratörüdür. Artık is_authenticated / MFA zinciri, trans_id referans alınmadan önce çalışmakta, böylece kimliği doğrulanmamış bir istek serileştirme yoluna ulaşmadan reddedilmektedir. Bu kusur yalnızca sunucu modu için geçerlidir. DESKTOP modunda pgAdmin'in before_request kancası, her istekte DESKTOP_USER'ı yeniden kimlik doğrular, bu nedenle hiçbir uç nokta kimlik doğrulanmamış durumda kullanılamaz ve herhangi bir kimlik doğrulama dekoratörü (veya yokluğu) anlam ifade etmez. Eşlik eden regresyon testi, saldırganın yolunu yansıtır -- GET /login üzerinden bir X-pgA-CSRFToken toplar ve bunu her iki uç noktaya karşı tekrar oynatır -- ve bu nedenle sunucu modu dışındayken kendini atlar; veri izolasyon testleriyle birlikte mevcut sunucu modu CI iş akışına entegre edilmiştir. Bu sorun pgAdmin 4'ü etkiler: 6.9 sürümünden 9.16 öncesine kadar.
Nasıl düzeltilir
- pgadmin pgadmin_49.16 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| pgadmin pgadmin_4 | 6.9 ≤ v < 9.16 | 9.16 |
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.
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.