Yaygın olarak kullanılan açık kaynaklı bir güvenlik açığı tarayıcısı olan ProjectDiscovery’nin Nuclei’sinde, başarılı bir şekilde kullanılması halinde saldırganların imza kontrollerini atlamasına ve potansiyel olarak kötü amaçlı kod çalıştırmasına olanak verebilecek yüksek önemde bir güvenlik açığı ortaya çıktı.
CVE-2024-43405 olarak takip edilen bu sistem, maksimum 10,0 üzerinden 7,4 CVSS puanına sahiptir. Nuclei’nin 3.0.0’dan sonraki tüm sürümlerini etkiler.
Güvenlik açığının açıklamasına göre “Güvenlik açığı, imza doğrulama süreci ile YAML ayrıştırıcısının yeni satır karakterlerini işleme şekli ile birden fazla imzanın işlenme şekli arasındaki tutarsızlıktan kaynaklanıyor.”
“Bu, bir saldırganın şablonun zararsız kısmı için geçerli bir imzayı korurken bir şablona kötü amaçlı içerik eklemesine olanak tanır.”
Nuclei, güvenlik kusurlarını tespit etmek amacıyla modern uygulamaları, altyapıyı, bulut platformlarını ve ağları araştırmak için tasarlanmış bir güvenlik açığı tarayıcısıdır. Tarama motoru, bir kusurun varlığını belirlemek amacıyla belirli istekler göndermek için YAML dosyalarından başka bir şey olmayan şablonlardan yararlanır.
Ayrıca, kod protokolünü kullanarak ana bilgisayar işletim sisteminde harici kodun yürütülmesine olanak tanıyarak araştırmacılara güvenlik testi iş akışları konusunda daha fazla esneklik sağlayabilir.
CVE-2024-43405’i keşfeden bulut güvenlik firması Wiz, güvenlik açığının, resmi şablon deposunda sunulan şablonların bütünlüğünü sağlamak için kullanılan şablon imza doğrulama sürecinden kaynaklandığını söyledi.
Güvenlik açığından başarılı bir şekilde yararlanılması, bu önemli doğrulama adımının atlanması anlamına gelir; bu, saldırganların rastgele kod yürütebilecek ve ana bilgisayardaki hassas verilere erişebilecek kötü amaçlı şablonlar oluşturmasına olanak tanır.
Wiz araştırmacısı Guy Goldenberg Cuma günü yaptığı bir analizde, “Bu imza doğrulaması şu anda Nuclei şablonlarını doğrulamak için mevcut tek yöntem olduğundan, potansiyel tek bir başarısızlık noktasını temsil ediyor” dedi.
Temelde sorun, imza doğrulama için normal ifadelerin (diğer adıyla regex) kullanılmasından ve hem regex hem de YAML ayrıştırıcısının kullanılması sonucunda ortaya çıkan ayrıştırma çatışmasından kaynaklanıyor ve böylece bir saldırganın ” \r” karakterini öyle ki normal ifade tabanlı imza doğrulamasını atlatır ve YAML ayrıştırıcısı tarafından satır sonu olarak yorumlanır.
Başka bir deyişle, bu ayrıştırma tutarsızlıkları, imza doğrulama sürecinden kaçan ancak YAML yorumlayıcısı tarafından ayrıştırılıp yürütülen ikinci bir “# özet:” satırını eklemek için “\r” kullanan bir Nuclei şablonu oluşturmak üzere zincirlenebilir.
Goldenberg, “Go’nun regex tabanlı imza doğrulaması \\r’ı aynı satırın parçası olarak ele alırken, YAML ayrıştırıcısı bunu bir satır sonu olarak yorumluyor. Bu uyumsuzluk, saldırganların doğrulamayı atlayan ancak YAML ayrıştırıcısı tarafından yürütülen içeriği enjekte etmesine olanak tanıyor.” .
“Doğrulama mantığı yalnızca ilk # özet: satırını doğrular. Ek # özet: satırlar doğrulama sırasında göz ardı edilir ancak YAML tarafından ayrıştırılıp yürütülecek içerikte kalır.”
Ayrıca doğrulama işlemi, imza satırını şablon içeriğinden hariç tutmaya yönelik bir adım içerir, ancak bunu yalnızca ilk satırın doğrulanacağı ve böylece sonraki satırların doğrulanmamış ancak yürütülebilir halde bırakılacağı şekilde yapar.
Sorumlu bir açıklamanın ardından bu sorun, ProjectDiscovery tarafından 4 Eylül 2024’te 3.3.2 sürümüyle ele alındı. Nuclei’nin güncel sürümü 3.3.7’dir.
Goldenberg, “Saldırganlar, Nuclei’nin imza doğrulamasını atlamak için manipüle edilmiş # özet satırları veya dikkatlice yerleştirilmiş satır sonları içeren kötü amaçlı şablonlar hazırlayabilir” dedi.
“Bu güvenlik açığına yönelik bir saldırı vektörü, kuruluşlar güvenilmeyen veya topluluğun katkıda bulunduğu şablonları uygun doğrulama veya izolasyon olmadan çalıştırdığında ortaya çıkar. Bir saldırgan, kötü amaçlı şablonlar eklemek için bu işlevsellikten yararlanabilir ve bu da keyfi komut yürütülmesine, veri sızmasına veya sistemin tehlikeye atılmasına neden olabilir.”