Giriş
Son zamanlarda, Google’ın Protocol Buffers kütüphanesinin JavaScript uygulaması olan protobuf.js’de kritik bir uzaktan kod yürütme (RCE) açığı tespit edildi. Bu açık, hem geliştirici makinelerini hem de sunucuları tehdit etmekte ve ciddi güvenlik riskleri taşımaktadır.
Saldırı Nasıl Çalışıyor?
Açığın nedeni, protobuf.js’nin stringleri birleştirerek JavaScript fonksiyonları oluşturması ve bunları Function() constructor’ü aracılığıyla çalıştırmasıdır. Ancak, bu işlem sırasında oluşturulan şemalara ait tanımlayıcıların doğrulanmaması, kötü niyetli bir saldırgana aşağıdaki imkanı tanır:
- Kötü niyetli bir şemayı sağlayarak, üretilen fonksiyona rastgele kod enjekte etme.
- Şemanın kullanıldığı uygulama mesajı işlendiğinde bu kodun çalıştırılması.
Bu durum, saldırganın ortam değişkenlerine, kimlik bilgilerine, veritabanlarına ve dahili sistemlere erişim sağlamasına olanak tanır, hatta altyapı içinde yatay hareket etmelerini sağlar.
Etkilenen Sistemler
Açığın, protobuf.js sürümleri 8.0.0, 7.5.4 ve daha öncesini etkilediği belirtilmektedir. Endor Labs, kullanıcıların sorunu çözmek için 8.0.1 ve 7.5.5 sürümlerine yükseltmeleri gerektiğini önermektedir.
Çözüm ve Korunma
Yamanın uygulandığı sürümlerde, saldırganların sentetik fonksiyonu kapatmasını engellemek için alfasayısal olmayan karakterlerin silinmesiyle tür isimleri temizlenmiştir. Ancak, Endor Labs uzun vadeli çözümün, saldırganın erişebileceği tanımlayıcıların Function aracılığıyla tekrar kullanılmasını tamamen durdurmak olduğunu ifade etmektedir.
Yapılması gerekenler:
- Güvenlik açığını kapatan versiyonlara yükseltme yapın (8.0.1, 7.5.5).
- Transitive bağımlılıkları denetleyin.
- Şema yüklemeyi güvenilir olmayan bir girdi olarak değerlendirin.
- Üretim ortamında önceden derlenmiş/statik şemaları tercih edin.
Sonuç olarak, bu açık ciddi bir güvenlik tehditidir ve sistem yöneticilerinin dikkatle hareket etmeleri gerekmektedir. Potansiyel zararlara karşı gerekli güncellemelerin yapılması hayati önem taşımaktadır.


