SQL Injection in ResultSet.refreshRow() with malicious column names in pgjdbc
PostgreSQL JDBC Driver (PgJDBC for short) allows Java programs to connect to a PostgreSQL database using standard, database independent Java code. The PGJDBC implementation of the `java.sql.ResultRow.refreshRow()` method is not performing escaping of column names so a malicious column name that contains a statement terminator, e.g. `;`, could lead to SQL injection. This could lead to executing additional SQL commands as the application's JDBC user. User applications that do not invoke the `ResultSet.refreshRow()` method are not impacted. User application that do invoke that method are impacted if the underlying database that they are querying via their JDBC application may be under the control of an attacker. The attack requires the attacker to trick the user into executing SQL against a table name who's column names would contain the malicious SQL and subsequently invoke the `refreshRow()` method on the ResultSet. Note that the application's JDBC user and the schema owner need not be the same. A JDBC application that executes as a privileged user querying database schemas owned by potentially malicious less-privileged users would be vulnerable. In that situation it may be possible for the malicious user to craft a schema that causes the application to execute commands as the privileged user. Patched versions will be released as `42.2.26` and `42.4.1`. Users are advised to upgrade. There are no known workarounds for this issue.
- Yayın
- 3 Ağu 2022
- Güncelleme
- 17 Haz 2026
- EPSS
- %2,2 · 82. yüzdelik
- CWE
- CWE-89
Takip etmek için giriş yap · Takip ettiğin kayıt KEV’e girer, istismarı çıkar ya da güncellenirse bildirim alırsın.
Rapor araçları
Aksiyon skoru
33
İzleyin
Şimdilik düşük öncelik.
- CVSS
- 32 / 40 · 8.0 / 10
- CISA KEV
- 0 / 30 · Listede değil
- EPSS
- 1 / 30 · %2,2
CISA SSVC kararı
- Sömürü
- kavram kanıtı
- Otomatikleştirilebilir
- hayır
- Teknik etki
- tam
Vulnrichment: CISA'nın karar ağacı girdileri.
CNA ile NVD puanı
- NVD
- 8,0
- CNA · GitHub_M
- 7,1
- 0,9 puan fark
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H
Kaydı açan otoritenin puanı ile NVD’nin bağımsız puanı. İki puan arasındaki fark ciddiyetin tartışmalı olduğunu gösterir.
Noroxi analizi
Bu kayıt için henüz Noroxi analizi yok
Veritabanındaki yüz binlerce zafiyetin tamamına elle analiz yazmıyoruz; bu dürüst olmazdı. Öne çıkan ve sahada etkisi olan zafiyetler için mekanizma, tespit ve kapatma adımlarını ekibimiz yazıyor.
Bu ürünü kullanıyoruz, yardım isteyinEtkilenen sistemler
| Üretici | Ürün | CPE |
|---|---|---|
| postgresql | postgresql jdbc driver | cpe:2.3:a:postgresql:postgresql_jdbc_driver |
| debian | debian linux | cpe:2.3:o:debian:debian_linux |
| fedoraproject | fedora | cpe:2.3:o:fedoraproject:fedora |
Etkilenen sürümler
NVD sürüm aralıkları (katalogdaki ürünler için). Stack’ine sürümle eklersen eşleşme bunlarla yapılır.
- debian debian linux10.0
- fedoraproject fedora35
- fedoraproject fedora36
- postgresql postgresql jdbc driver42.3.0 ve sonrası · 42.3.7 öncesi
- postgresql postgresql jdbc driver42.2.26 öncesi
- postgresql postgresql jdbc driver42.4.0
- postgresql postgresql jdbc driver42.4.1
Üreticinin bildirdiği sürümler
Kaydı açan otorite (GitHub_M) tarafından bildirilen etkilenen sürüm aralıkları. NVD'nin CPE analizinden bağımsızdır ve genellikle ondan önce gelir.
pgjdbc pgjdbc
- >= 42.2.0, < 42.2.26, >= 42.3.0, < 42.4.1etkilenir
Paket düzeyi etkilenme
OSV ve GitHub Advisory verisi: ekosistem, paket ve aralık. SBOM eşleşmesi bu tabloyu kullanır.
| Ekosistem | Paket | Etkilenen aralık | Düzeltme |
|---|---|---|---|
| AlmaLinux:9 | postgresql-jdbc | 42.2.18-6.el9_1 öncesi | 42.2.18-6.el9_1 |
| Debian:10 | libpgjava | 42.2.5-2+deb10u2 öncesi | 42.2.5-2+deb10u2 |
| Debian:11 | libpgjava | 42.2.15-1+deb11u2 öncesi | 42.2.15-1+deb11u2 |
| Debian:12 | libpgjava | 42.4.1-1 öncesi | 42.4.1-1 |
| Maven | org.postgresql:postgresql | 42.3.0 itibarıyla · 42.3.7 öncesi | 42.3.7 |
| Maven | org.postgresql:postgresql | 42.4.0 itibarıyla · 42.4.1 öncesi | 42.4.1 |
| Maven | org.postgresql:postgresql | 42.2.26 öncesi | 42.2.26 |
| Red Hat:enterprise_linux:9::appstream | postgresql-jdbc | 0:42.2.18-6.el9_1 öncesi | 0:42.2.18-6.el9_1 |
| Rocky Linux:9 | postgresql-jdbc | 0:42.2.18-6.el9_1 öncesi | 0:42.2.18-6.el9_1 |
| SUSE:Linux Enterprise Module for Server Applications 15 SP4 | postgresql-jdbc | 42.2.25-150400.3.6.1 öncesi | 42.2.25-150400.3.6.1 |
| SUSE:Linux Enterprise Module for Server Applications 15 SP4 | postgresql-jdbc | 42.2.25-150400.3.6.1 öncesi | 42.2.25-150400.3.6.1 |
| SUSE:Manager Server Module 4.1 | postgresql-jdbc | 42.2.10-150200.3.11.1 öncesi | 42.2.10-150200.3.11.1 |
| SUSE:Manager Server Module 4.2 | postgresql-jdbc | 42.2.25-150300.3.8.1 öncesi | 42.2.25-150300.3.8.1 |
| SUSE:Manager Server Module 4.2 | postgresql-jdbc | 42.2.25-150300.3.8.1 öncesi | 42.2.25-150300.3.8.1 |
| SUSE:OpenStack Cloud 9 | postgresql-jdbc | 9.4-3.6.3 öncesi | 9.4-3.6.3 |
Aynı üründe
postgresql: tüm kayıtlarAynı birincil ürünün en yüksek skorlu diğer kayıtları.
- CVE-2024-1597pgjdbc SQL Injection via line comment generation40Planlayın
- CVE-2022-26520In pgjdbc before 42.3.3, an attacker (who controls the jdbc URL or properties) can call java.util.logging.FileHandler to write to arbitrary 40Planlayın
- CVE-2022-21724Unchecked Class Instantiation when providing Plugin Classes40Planlayın
- CVE-2018-10936A weakness was found in postgresql-jdbc before version 42.2.5.33İzleyin
- CVE-2026-54291Silent channel-binding authentication downgrade via unsupported certificate algorithms32İzleyin
- CVE-2026-42198pgjdbc: Unbounded PBKDF2 iterations in SCRAM authentication allows CPU exhaustion DoS31İzleyin
Düzeltme
Hangi sürüme geçmeli
Üretici, paket deposu ve Microsoft kayıtlarından derlenen düzeltme sürümleri. Yükseltmeden önce üreticinin notunu doğrulayın.
| Ürün / paket | Düzeltilmiş sürüm | Kaynak |
|---|---|---|
| almalinux:postgresql-jdbc | 42.2.18-6.el9_1 · AlmaLinux:9 | Paket deposu (OSV) |
| debian:libpgjava | 42.4.1-1 · Debian:12 | Paket deposu (OSV) |
| Maven:org.postgresql:postgresql | 42.2.26 | Paket deposu (OSV) |
| Maven:org.postgresql:postgresql | 42.3.7 | Paket deposu (OSV) |
| Maven:org.postgresql:postgresql | 42.4.1 | Paket deposu (OSV) |
| opensuse:postgresql-jdbc | 42.2.25-150400.3.6.1 · openSUSE:Leap 15.4 | Paket deposu (OSV) |
| red hat:postgresql-jdbc | 0:42.2.18-6.el9_1 · Red Hat:enterprise_linux:9::appstream | Paket deposu (OSV) |
| rocky linux:postgresql-jdbc | 0:42.2.18-6.el9_1 · Rocky Linux:9 | Paket deposu (OSV) |
| suse:postgresql-jdbc | 42.2.25-150400.3.6.1 · SUSE:Linux Enterprise Module for Server Applications 15 SP4 | Paket deposu (OSV) |
İstismar durumu
Bilinen kamuya açık istismar yok
Şu an kamuya açık bir istismar görülmedi. Bu, güvende olduğunuz anlamına gelmez; yalnızca eşiğin biraz daha yüksek olduğunu gösterir.
Araştırma bağlamı
Pentester ve araştırmacı için: saldırı profili, puan anlaşmazlığı, zaman çizelgesi, yama commit’leri, kredi, varyant ve zincir adayları, bug bounty kapsamı. Hepsi mevcut veriden türetilir; istismar kodu içermez.
Zaman çizelgesi
Yayından bugüne: kavram kanıtı, Metasploit modülü, CISA KEV ve düzeltme kaydı. Tarihler kaynakların bildirdiği tarihlerdir.
Yayın dışında tarihli olay yok.
FIRST EPSS günlük puanı; yalnızca 0,01 ve üstü değişimler kaydedilir (adım grafiği).
Yama ve commit bağlantıları
Referanslardaki commit, PR ve diff adresleri. Patch-diff ve varyant avı için başlangıç noktası; istismar değil, düzeltmedir.
Kredi
Tüm araştırmacılarCNA kaydında adı geçen bulan, bildiren ve analistler. Ada tıkla, aynı araştırmacının diğer kayıtlarını gör.
CNA kaydında kredi yok.
Varyant adayları
Aynı üründe aynı zafiyet sınıfı, 18 ay içinde. Yama kök nedeni kapatmadıysa kardeş hata burada olur.
Gece hesaplanan ilişki yok.
Zincir adayları
Aynı üründe kimlik doğrulama atlatma ile yetki isteyen bir açık kısa aralıkla yayımlanmış: birlikte kimlik doğrulamasız bir yola dönüşebilir.
—
Bug bounty kapsamı
Bilinen herkese açık program yok.
Kaynak: bounty-targets-data (HackerOne, Bugcrowd, Intigriti, YesWeHack herkese açık listeleri).
Teknik detay
Saldırı koşulları
- İnternetten erişebilen herkes tetikleyebilir.
- Düşük yetkili bir hesap yeterli.
- Bir kullanıcının bağlantıyı açması ya da sayfayı ziyaret etmesi gerekir.
- Özel bir koşul gerekmez; tekrarlanabilir.
Başarılı olursa
- Gizlilik
- yüksek · veriler okunabilir
- Bütünlük
- yüksek · veri ya da yapılandırma değiştirilebilir
- Erişilebilirlik
- yüksek · hizmet durdurulabilir
- Saldırı vektörü
- Ağ
- Karmaşıklık
- Düşük
- Gereken yetki
- Düşük
- Kullanıcı etkileşimi
- Gerekir
- Kapsam
- Değişmez
- Gizlilik etkisi
- Yüksek
- Bütünlük etkisi
- Yüksek
- Erişilebilirlik etkisi
- Yüksek
Zayıflık sınıfı (CWE)
CWE-89 · Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')CVSS vektörü
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
nvd-primary
Kök neden
Sorgu metni, kullanıcı girdisiyle birleştirilerek oluşturuluyor. Veritabanı, verinin nerede bitip komutun nerede başladığını ayırt edemez.
Hatanın kod karşılığı
CWE-89 sınıfının tamamıBu zafiyet sınıfının temsili örneği. Üreticinin kaynak kodu değildir; hatalı kalıbı ve düzeltmesini gösterir.
Hatalı
const owner = req.query.owner;const rows = await db.query( "SELECT * FROM files WHERE owner = '" + owner + "'");Düzeltilmiş
const owner = req.query.owner;const rows = await db.query( "SELECT * FROM files WHERE owner = $1", [owner]);Saldırı bağlamı
Bu zafiyet sınıfının (CWE) MITRE CAPEC saldırı desenleri ve ATT&CK teknikleri. Tespit kuralı ve tehdit avı için başlangıç noktası.
Saldırı desenleri (CAPEC)
- Command Line Execution through SQL InjectionCAPEC-108olasılık: Low · Very High
- Object Relational Mapping InjectionCAPEC-109olasılık: Low · High
- SQL Injection through SOAP Parameter TamperingCAPEC-110olasılık: High · Very High
- Expanding Control over the Operating System from the DatabaseCAPEC-470Very High
- SQL InjectionCAPEC-66olasılık: High · High
- Blind SQL InjectionCAPEC-7olasılık: High · High
ATT&CK teknikleri
—
Değişiklik günlüğü
- Düzeltme✗ → ✓
Takip ettiğiniz kayıtlarda bu değişiklikler bildirim olarak da gelir. →
Referanslar
- github.com/pgjdbc/pgjdbc/commit/739e599d52ad80f8dcd6efedc6157859b1a9d637
- lists.debian.org/debian-lts-announce/2022/10/msg00009.html
- lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/I6WHUADTZBBQLVHO4YG4XCWDGWBT4LRP/
- lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/UTFE6SV33P5YYU2GNTQZQKQRVR3GYE4S/
- lists.debian.org/debian-lts-announce/2024/12/msg00017.html
Üretici bildirimleri ve resmî kayıtlar. İstismar/PoC bağlantıları bilinçli olarak dışarıda bırakıldı.