PostgreSQL, logical decoding mekanizmasındaki ve 2014’te PostgreSQL 9.4 ile birlikte eklenen kritik bir hatayı giderdi. CVE-2026-6471 olarak izlenen açık, CVSS puanı 7.2 ile takip ediliyor ve REPLICATION yetkisine sahip bir hesabın belirli koşullarda veritabanı sunucusunda kod çalıştırmasına izin verebiliyordu. Etkilenen sürümler PostgreSQL 18.6, 17.11, 16.15, 15.19 ve 14.24’ten öncesi olarak açıklandı.
Açığın istismarı için sunucunun wal_level = logical ayarıyla çalışması gerekiyor. Bu yetki, yedekleme araçlarında, standby sunucularda, change data capture (CDC) hatlarında ve izleme sistemlerinde rutin olarak bulunduğu için erişim yolu birçok kuruma açık kalabiliyor. PostgreSQL düzeltmeyi 13 Ağustos’ta yayımladı ve logical decoding çıkış eklentileri için hangi kütüphanelerin yüklenebileceğini belirleyen yeni bir sunucu parametresi ekledi: output_plugin_libraries.
Yeni parametre varsayılan olarak pgoutput, test_decoding değerini alıyor. Böylece sistem, logical decoding sırasında yalnızca bu iki eklentiyi kabul ediyor. wal2json ve decoderbufs gibi farklı output plugin kullanan kurulumlarda ise güncellemeden sonra logical decoding işlemi reddediliyor. Yönetici ilgili kütüphaneyi bu listeye ekleyip sunucu yapılandırmasını yeniden yüklemeden akışı sürdüremiyor.
PostgreSQL Global Development Group, 18.6 sürüm notlarında daha önce bir replication kullanıcısının yüklenebilir herhangi bir kütüphaneyi seçebildiğini ve bunun farklı istismar türlerine kapı açtığını yazdı. Ekip, mevcut kurulumları bozmadan bu alanı daraltmak için izin verilen output plugin’ler için bir beyaz liste yaklaşımı getirdiğini belirtti.
PostgreSQL Projesi, sorunu bildiren isimler arasında Vladimir Tokarev ve Yu Kunpeng’e yer verdi. Tokarev, 1 Eylül’de Cyera Research için yayımladığı yazıda açığı PostGREShell adıyla anlattı. Cyera’nın incelemesine göre, CREATE_REPLICATION_SLOT komutunda verilen eklenti adı doğrudan kütüphaneyi yükleyen işleve aktarılıyor.
Şirket, PostgreSQL’in eklenti yollarını sınırlayan mevcut korumasının replication akışında devreye girmediğini vurguladı. Normalde yönetici dışı kullanıcılar tek bir yönetici kontrollü dizinle sınırlandırılırken, replication protokolünün ayrıştırıcısı çift tırnak içindeki plugin adında neredeyse her karaktere izin veriyor. Yol ayırıcıları ve ../ gibi dizin aşımı dizgileri de buna dahil. Bu nedenle tam dosya sistemi yolu, yükleyiciye yazıldığı haliyle ulaşıyor.
Windows ortamında saldırgan, SMB üzerinden ağ yolunu çözdürerek kütüphaneyi kendi kontrolündeki bir makineden çektirebiliyor ve hedef diske bir şey yazmadan kod yükleyebiliyor. Linux ve macOS tarafında aynı sonuç için NFS otomount özelliğinin açık olması gerekiyor. Diğer ortamlarda ise saldırganın sunucu diskine dosya yazmanın başka bir yolunu zaten elde etmiş olması gerekiyor. Bu yöntemle yüklenen kod, veritabanı backend sürecinin içinde ve işletim sistemi düzeyinde postgres kullanıcısı olarak çalışıyor.
Cyera’nın test eklentisi, ardından rol kataloğunu doğrudan değiştirerek replication hesabını PostgreSQL süper kullanıcısına dönüştürdü. Araştırmacılar ayrıca sunucu yeniden başlatıldıktan sonra da kalan üç kalıcılık yöntemi kurdu. Bu ayrıntılar, açığın yalnızca anlık kod çalıştırma ile sınırlı kalmadığını gösterdi.
Cyera, REPLICATION özniteliğini düşük ayrıcalıklı bir yedekleme kimliği olarak tanımlasa da PostgreSQL bu açık için Privileges Required alanını High olarak puanladı; aynı değerlendirme SUSE’nin kendi analizinde de yer aldı. PostgreSQL, mevcut LOAD kısıtını replication yoluna aynen taşımayı kabul etmedi. Jacob Champion, commit mesajında replication kullanıcılarının daha önce output plugin yolları konusunda bir sınırlamaya tabi olmadığını ve logical decoding sırasında LOAD korumalarını aşabildiklerini söyledi. Champion’a göre standart LOAD kısıtları doğrudan uygulansaydı, mevcut tüm üçüncü taraf output plugin’lerin $libdir/plugins dizini altına taşınması gerekecekti.
Güncellemeden sonra başarısız yüklemeler sunucu günlüğünde ERROR: library "..." may not be used as an output plugin mesajıyla görünüyor ve hata kaydı yeni ayarı işaret eden bir ipucu da içeriyor. Yönetici, güncellemeden önce kullanımda olan output plugin’leri belirlemek için SELECT DISTINCT plugin FROM pg_replication_slots WHERE plugin IS NOT NULL; sorgusunu çalıştırabiliyor; ancak bu sorgu yalnızca daha önce başarıyla kullanılan plugin’leri gösteriyor.
Yama yüklendikten sonra yönetici, output_plugin_libraries parametresine varsayılan olmayan her eklentiyi ekleyip pg_ctl reload ya da SELECT pg_reload_conf(); ile yapılandırmayı yeniden yükleyebiliyor. Bunun için sunucuyu yeniden başlatmak gerekmiyor. PostgreSQL ayrıca sürüm 17 ve sonrası bir kurulumdan geçiş yapılırken yeni kümenin output_plugin_libraries değerinin, eski kümenin slot plugin’lerini izin verilen listeye dahil etmesini; aksi halde pg_upgrade --check denetiminin başarısız olacağını belirtti.
Düzeltilmiş paketler Amazon RDS üzerinde beş dalın tamamı için, ayrıca Debian, SUSE ve Ubuntu dağıtımlarında da yayımlandı. PostgreSQL’in uyarısı desteklenen 14 ile 18 arasındaki dalları kapsıyor ve daha eski sürümlere değinmiyor. Proje, PostgreSQL 14 için düzeltme desteğinin 12 Kasım 2026’da sona ereceğini duyurdu.
Debian’ın uyarısı, upstream düzeltmenin bazı eklentiler kullanılıyorsa yapılandırmada ek değişiklik gerektirdiğini söylüyor ve özellikle wal2json ile decoderbufs paketlerini adlandırıyor. Ubuntu’nun USN-8653-1 bülteni ise 22.04, 24.04 ve 26.04 LTS için 20 Ağustos’ta yayımlanan yamada parametreden söz etmiyor ve yöneticilere güncellemeden sonra yalnızca PostgreSQL’i yeniden başlatmalarını söylüyor. 4 Eylül itibarıyla wal2json projesi de belgelerini güncelleyerek kullanıcıların CVE’ye atıfla plugin’i output_plugin_libraries listesine eklemesi gerektiğini yazdı.
Düzeltmede açık kalan bir boşluk da bulunuyor. pg_createsubscriber aracı, yeni parametreyi kontrol etmeden pgoutput ile replication slot oluşturuyor; bu yüzden --dry-run çalışıyor ancak dönüşüm gerçek aşamaya geçince başarısız oluyor. Fujitsu’dan Hayato Kuroda, pgsql-hackers mail listesinde bu durumun kullanıcılar için çok şaşırtıcı olduğunu ve kaçınılması gerektiğini yazdı. Kuroda’nın iletisinde, pg_createsubscriber komutunun GUC kontrolü yapmadan slot oluşturduğu vurgulandı.
4 Eylül itibarıyla bu açık için bir yama inceleme sürecindeydi ve henüz commit edilmemişti. Aynı tarih itibarıyla CVE-2026-6471, CISA’nın Known Exploited Vulnerabilities (KEV) kataloğunda yer almıyordu. The Hacker News, yine 4 Eylül’de açık için kamuya açık depolarda bir proof-of-concept kodu bulamadığını da aktardı.
Cyera, güncelleme uygulanana kadar maruziyeti azaltmak için REPLICATION özniteliğine ihtiyaç duymayan hesaplardan bu yetkinin kaldırılmasını, pg_hba.conf içindeki replication girişlerinin bilinen adreslerle sınırlandırılmasını, veritabanı sunucularından çıkan SMB (445) ve NFS (2049) trafiğinin engellenmesini ve gerekmediği durumlarda autofs’in devre dışı bırakılmasını önerdi.
