CVE-2026-42812
Açıklama
Apache Iceberg'de tablonun metadata dosyaları kontrol dosyalarıdır: okuyuculara hangi veri dosyalarının tabloya ait olduğunu ve hangi tablo sürümünün okunacağını söylerler. `write.metadata.path`, Polaris'e bu metadata dosyalarını nereye yazacağını söyleyen isteğe bağlı bir tablo özelliğidir. Polaris tarafından yönetilen bir kataloğa zaten kaydedilmiş bir tablo için, yalnızca bu özelliğin `ALTER TABLE` tarzı bir ayar değişikliğiyle değiştirilmesi (satır düzeyinde bir `INSERT`, `SELECT`, `UPDATE` veya `DELETE` değil), depolama konumlarını yeniden doğrulaması gereken commit zamanlı dalı atlar. Kalıcı hale getirilen / kimlik bilgisi sağlayan varyantın tamamı, etkilenen kataloğun `polaris.config.allow.unstructured.table.location=true` değerine sahip olmasını ve `allowedLocations` listesinin saldırgan tarafından seçilen hedefi kapsayacak kadar geniş olmasını gerektirir. `allowedLocations`, kataloğun kullanmasına izin verilen depolama yollarının yönetici tarafından yapılandırılmış izin listesidir. Genel proje materyalleri, bu bayrağın sadece laboratuvar ortamına özgü kurgulanmış bir ön koşul olmadığını, gerçek bir desteklenen uyumluluk / düzen modu olduğunu göstermektedir. Bu yapılandırmada, tablo ayarlarını değiştirebilen bir kullanıcı, hedeflenen konum doğrulama dalı çalışmadan önce Apache Polaris'in yeni tablo metadatasını saldırgan tarafından seçilen erişilebilir bir depolama konumuna yazmasına neden olabilir. Eğer daha sonraki somut yol doğrulaması da bu konumu kabul ederse, Polaris sonuçlanan metadata yolunu saklanan tablo durumuna kaydeder. Daha sonraki tablo yükleme ve kimlik bilgisi API'leri, aynı konumu yeniden doğrulamadan söz konusu konum için geçici bulut depolama kimlik bilgileri döndürebilir. Basit bir ifadeyle Polaris, daha sonra saldırgan tarafından seçilen aynı alan için geçici depolama erişimi sağlayabilir. Saldırgan tarafından seçilen bu alanın zehirlenmiş tablonun kendi dosyalarıyla sınırlı olması gerekmez. Eğer burası daha geniş bir depolama öneki, başka bir tablonun öneki veya yapılandırmaya ya da sağlayıcı davranışına bağlı olarak bir bucket/konteyner kökü ise; ortaya çıkan ifşa veya bozulma kapsamı, Polaris'in orada erişebildiği her türlü veri ve metadataya uzanabilir. Dolayısıyla pratik sonuçlar, halihazırda tartışılan aşamalı oluşturma kimlik bilgisi sağlama sorunuyla benzerdir: o depolama kapsamında erişilebilen veri ve metadatalar ifşa edilebilir ve eğer daha sonra yazma yetkisine sahip kimlik bilgileri verilirse bunlar değiştirilebilir, bozulabilir veya silinebilir. Hatta bu sonraki kimlik bilgisi adımından önce bile Polaris, denetlenmemiş konuma metadata yazma işlemini gerçekleştirir. Yani temel sorun sadece sonraki kimlik bilgisi sağlama işlemi değildir. Birincil kusur, yalnızca `write.metadata.path` değiştiğinde Polaris'in güvenlik açısından hassas bir metadata yazma işlemi gerçekleştirmeden önce planlanan konum kontrollerini atlamasıdır. `polaris.config.allow.unstructured.table.location=false` olduğunda, mevcut kod incelemesi, sonraki `updateTableLike(...)` doğrulamasının genellikle güvensiz yol kalıcı hale getirilmeden önce ağaç dışı metadata konumlarını reddettiğini göstermektedir. Bu durum, kalıcılık / kimlik bilgisi sağlama varyantını azaltabilir ancak temel kusuru önlemez: Yalnızca `write.metadata.path` değiştiğinde Polaris hala planlanan yazma öncesi konum kontrolünü atlamaktadır.
Nasıl düzeltilir
- apache polaris1.4.1 ya da sonraki bir sürüm
- org.apache.polaris:polaris-runtime-service1.4.1 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| apache polaris | v < 1.4.1 | 1.4.1 |
| org.apache.polaris:polaris-runtime-serviceMaven | 0.9.0 ≤ v < 1.4.1 | 1.4.1 |
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.