CVE-2026-110879
Açıklama
jackson-databind, bir class-name tip kimliğinin dış sınıfını doğrular ancak bu sınıflar beyan edilen tipi ihlal etse veya doğrudan tip kimliği olarak reddedilseler bile, jenerik argümanları içindeki saldırgan tarafından seçilen sınıfları kabul eder. Bu durum, eksik bir düzeltme olduğu CVE-2026-54512 (GHSA-j3rv-43j4-c7qm) için eklenen jenerik argüman doğrulamasını atlatır. DatabindContext._resolveAndValidateGeneric(), dış sınıfı beyan edilen temel tipe göre kontrol eder ve ardından tip kimliğindeki her bir argümanı _validateTypeParameter() fonksiyonuna iletir; bu fonksiyon ise argümanı ilgili beyan edilmiş jenerik bağlamayı zorunlu kılmak yerine dış temel tipe göre doğrular. Ayrıca, bekledikleri alt tip kontrolünden geçmemiş argümanlarla doğrulayıcıları çağırır. Varsayılan DefaultBaseTypeLimitingValidator altında bu durum, aynı sınıf doğrudan bir tip kimliği olarak reddedildiği halde, jenerik bir alt tip içinde ilgisiz bir sınıfın kabul edilmesine neden olur. Bir allowIfBaseType(...) kuralının dış tipi onayladığı durumlarda, Jackson LaissezFaireSubTypeValidator'ı ikame eder, böylece yapılandırılan doğrulayıcı artık gömülü argümanları kısıtlamaz. [Lpkg.Gadget; gibi düz bir dizi tip kimliğinin eleman tipi de dizinin temel tipi onaylandıktan sonra benzer şekilde doğrulanmadan bırakılır. Etkilenen yollar arasında varsayılan bir Jackson 3.x JsonMapper ile açıklama tabanlı (annotation-based) class-name polimorfizmi, hem Jackson 2.x hem de 3.x'te yapılandırılmış varsayılan yazım (default typing) ve bu varsayılan yazımı açığa çıkaran entegrasyonlar yer alır. Varsayılan doğrulayıcı durumu uygulama tarafından yazılmış bir doğrulayıcı gerektirmez: @JsonTypeInfo(use = Id.CLASS) ile doğrudan bir gadget tip kimliği "Not a subtype" olarak reddedilirken, aynı gadget'ı çevreleyen jenerik bir sarmalayıcıyı adlandıran bir tip kimliği, saldırgan tarafından sağlanan bean özellikleri dahil olmak üzere kabul edilir ve serileştirilir. Class-name varsayılan yazımının Map'e izin verdiği durumlarda, Map<String,String> olarak beyan edilen bir özellik HashMap<FileSystemXmlApplicationContext,String> değerini kabul eder; harita anahtarı keşfi daha sonra saldırgan kontrollü JSON özellik adını seçilen sınıfın tek dize alan kurucusuna (constructor) iletir. Sınıf yolunda (classpath) Spring bulunması ve uygulamanın yükleyebileceği saldırgan kontrollü bir XML olması durumunda, söz konusu kurucu XML'i yükler ve uygulama hesabı altında ProcessBuilder.start()'ı çağırarak rastgele komut çalıştırılmasına olanak tanır. Bu sorun, 2.10.0 sürümünden itibaren com.fasterxml.jackson.core:jackson-databind ve 3.0.0 sürümünden itibaren tools.jackson.core:jackson-databind ürünlerini etkiler. PolymorphicTypeValidator, jackson-databind 2.10.0 sürümünde tanıtıldığı için 2.10.0 öncesindeki sürümler etkilenmemiştir.
Nasıl düzeltilir
- FasterXML jackson-databind2.18.12, 2.21.8, 2.22.4, 3.1.8, 3.2.4 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| FasterXML jackson-databind | 2.10.0 ≤ v < 2.18.12, 2.19.0 ≤ v < 2.21.8, 2.22.0 ≤ v < 2.22.4, 3.0.0 ≤ v < 3.1.8, 3.2.0 ≤ v < 3.2.4 | 2.18.12, 2.21.8, 2.22.4, 3.1.8, 3.2.4 |
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.