Yönetici Özeti ve Mimari Önem
psqlODBC ekibi, PostgreSQL ekosistemleri için belirlenen resmi ODBC sürücüsü olan 18.00.0005 sürümünün yayınlandığını resmi olarak duyurdu. Bu bakım ve güvenlik sürümü, parametre bağlama işlem hatlarındaki kritik güvenlik açığı yüzeylerini doğrudan ele almakta, önceki sürümlerde ortaya çıkan regresyonları çözmekte ve temel kriptografik bağımlılıkları güncellemektir. PostgreSQL arka uçlarıyla arayüz oluşturmak için Açık Veritabanı Bağlantısı (ODBC) standartlarından yararlanan kurumsal ortamlar için bu sürüm, bellek güvenliğini ve kararlı sorgu yürütmeyi sürdürmek adına temel bir senkronizasyon noktasını temsil eder.
Mimari açıdan, kurumsal uygulamalar genellikle veritabanı etkileşimlerini genel veri erişim katmanları aracılığıyla soyutlar ve bazen alttaki yerel sürücüleri sınırsız parametre oluşturmaya maruz bırakır. Sürüm 18.00.0005, sürücünün çekirdek durum yönetimindeki eski tür varsayımlarından kaynaklanan şiddetli bir yığın (heap) belleği bozulması vektörünün üstesinden gelir. Giriş sınırlarını sertleştirerek ve yoğun şekilde parametrelendirilmiş ifadeler için sabit boyutlu arabellek ayırmalarını yeniden hizalayarak, psqlODBC ekibi PostgreSQL veri bağlantı yığınını bozuk veya kötü amaçlı olarak hazırlanmış yürütme yüklerine karşı güçlendirmeye devam ediyor ve yüksek eşzamanlılıklı kurumsal iş yükleri altında kararlı çalışmayı sağlıyor.
Temel İyileştirmeler ve Geliştirici Ergonomisi
18.00.0005 sürümünün ana teknik odak noktası, 08.01.0102 ila 18.00.0004 arasındaki sürümleri etkileyen orta düzeyde (CVSS 3.1 temel puanı: 5.9) bir yığın belleği bozulması güvenlik açığı olan CVE-2026-109448'in giderilmesidir. Tarihsel olarak psqlODBC, aktif bir ifade tutamağındaki bağlı parametrelerin sayısını işaretli 16 bitlik bir alan kullanarak izliyordu. Bir uygulama tek bir ifadede 32.768'den fazla bağlı parametreyi aştığında (güvenilmeyen kullanıcı girdilerinden otomatik IN (?, ?, ...) liste oluşturma yoluyla dinamik olarak oluşturulan bir desen), sürücü parametre bağlamalarını yöneten ayrılmış bellek bloğunun dışına sıfır değerinde baytlar yazardı. Bu durum, felaket niteliğinde yığın bozulmasına, ani işlem sonlandırmaya veya sessiz durum kirlenmesine neden oluyordu. Sürücü artık bu durumu kesinlikle SQLBindParameter arayüz düzeyinde durdurmakta ve 32767'yi aşan parametre indekslerini standart SQLSTATE 07009 ile temiz bir şekilde reddetmektedir.
Güvenlik sertleştirmesinin ötesinde, bu sürüm büyük ölçekli parametrelendirmeyi ve eski entegrasyon katmanlarını etkileyen iki kalıcı operasyonel kusuru hedeflemektedir. Daha önce, 1.000 veya daha fazla parametre kullanan doğrudan PostgreSQL sunucusunda hazırlanan ifadeler, her parametreyi takip eden tür meta verilerinin yetersiz sabit boyutlu bir dahili arabelleğe uyacak şekilde aniden kırpıldığı şiddetli dize kesme sorunlarından muzdaripti ve bu durum type "timestam" does not exist gibi sözdizimi hatalarıyla sonuçlanıyordu. Ek olarak, Microsoft'un ODBC için OLE DB Sağlayıcısı (MSDASQL) aracılığıyla bytea parametre sıralamasını etkileyen 18.00.0003 sürümünde sunulan regresyon sorunları tamamen çözülmüştür. Windows derleme yapıtları artık x86, x64 ve ARM64 yükleyici paketlerinde kriptografik güncelliği sağlayarak yerel olarak OpenSSL 3.5.9 ile derlenmektedir.
Mimari Karşılaştırma Matrisi
| Metrik / Bileşen | Önceki Temel Çizgi (18.00.0004 ve öncesi) | Güncellenen Sürüm (18.00.0005) |
|---|---|---|
| Parametre Bağlama Sınırı | Kontrol edilmeyen sınır, > 32.768 parametre için savunmasız | SQLBindParameter aracılığıyla 32.767'de katı sınır (SQLSTATE 07009) |
| Arabellek Ayırma Güvenliği | Sunucu hazırlığında sabit boyutlu arabellek kesilmesi ≥ 1.000 parametre | Genişletilmiş ve dinamik olarak doğrulanmış arabellek yapıları |
| OLE DB / MSDASQL Uyumluluğu | 18.00.0003'ten beri bytea türü hataları ("Tür geçersiz") |
ADO/MSDASQL için tamamen geri yüklenen bytea bağlama işlevselliği |
| Kriptografik Yığın (Windows) | Daha eski OpenSSL kitaplığı yinelemeleri | OpenSSL 3.5.9 ile yerel olarak oluşturulmuştur |
| Bellek Gecikmesi ve Yığın Kararlılığı | Aşırı bağlamada sınır dışı sıfır yazmalarına duyarlı | Katı sınır kontrolü ile tamamen güvence altına alınmış yığın sınırları |
Kritik Değişiklikler ve Geçiş Uyarıları
Sürüm 18.00.0005, tek bir ifade tutamağında 32.767'den fazla parametre bağlamaya çalışan uygulamalarla ilgili koruyucu nitelikte kritik bir değişiklik sunmaktadır. ODBC standart mimarisi 16 bitlik tanımlayıcı alanlarına (SQLNumParams ve SQL_DESC_COUNT) dayandığından, 32.767 parametreyi aşan yürütme yolları önceki sürümlerde işlevsel olarak imkansızdı ve aynı zamanda ciddi bir bellek bozulması riski oluşturuyordu. Bu üst sınırı aşmaya çalışan uygulamalar artık hemen bir SQLSTATE 07009 hatası alacaktır. Geliştiriciler, büyük koleksiyon parametrelerini işlerken dinamik sorgu oluşturma katmanlarını toplu yürütme için yeniden düzenlemeli veya dizi parametre yapılarını (= ANY(?) gibi) kullanmalıdır.
Adım Adım Yükseltme Kılavuzu
- Mevcut Sürücü Kurulumlarını Doğrulayın: ODBC Veri Kaynağı Yöneticisi veya doğrudan sürücü dosyası özellikleri aracılığıyla istemci makinelerindeki ve uygulama sunucularındaki mevcut psqlODBC sürümlerini kontrol edin.
- Güncellenen İkili Dosyaları / Yükleyicileri Dağıtın: Resmi PostgreSQL FTP veya GitHub sürüm depolarından uygun x86, x64 veya ARM64 Windows yükleyicilerini veya birleştirme modüllerini indirin. Etkilenen tüm Windows ve Unix-odbc ana makinelerindeki çalışma zamanı kitaplıklarını güncelleyin.
- Dinamik Parametre Oluşturmayı Yeniden Düzenleyin:
Dinamik
INyan tümcelerinin 32.767 parametre kısıtlamasını aşmadığından emin olmak için uygulama veri erişim katmanlarını gözden geçirin. Büyük dizileri PostgreSQL yerel dizi parametrelerine geçirin:-- Büyük değer listeleri için önerilen alternatif SELECT * FROM target_table WHERE id = ANY(?);
