R programlama dilinde, bir tehdit aktörünün, yüklendiğinde ve referans alındığında kod yürütülmesine neden olacak kötü amaçlı bir RDS (R Veri Serileştirme) dosyası oluşturmak için kullanılabilecek bir güvenlik açığı keşfedildi.
CVE tanımlayıcısına atanan kusur CVE-2024-27322Yapay zeka uygulama güvenlik şirketi HiddenLayer, The Hacker News ile paylaşılan bir raporda, “R’de vaat nesnelerinin kullanımını ve tembel değerlendirmeyi içeriyor” dedi.
RDS, Python’daki turşu gibi, istatistiksel hesaplama, veri görselleştirme ve makine öğreniminde kullanılan açık kaynaklı bir programlama dili olan R’deki veri yapılarının veya nesnelerin durumunu serileştirmek ve kaydetmek için kullanılan bir formattır.
Bu serileştirme (serialize() veya saveRDS()) ve seri durumdan çıkarma (unserialize() ve readRDS()) sürecinden R paketleri kaydedilirken ve yüklenirken de yararlanılır.
CVE-2024-27322’nin arkasındaki temel neden, güvenilmeyen verilerin seri durumdan çıkarılması sırasında rastgele kod yürütülmesine yol açabilmesi ve böylece kullanıcıları özel hazırlanmış R paketleri aracılığıyla tedarik zinciri saldırılarına maruz bırakabilmesidir.
Bu nedenle, kusuru silah haline getirmek isteyen bir saldırgan, R paketlerinin verileri kaydetmek ve yüklemek için RDS formatından faydalanması ve paketin sıkıştırması açıldığında ve seri durumdan çıkarıldığında otomatik kod yürütülmesine neden olmasından faydalanabilir.
Şirket, “R paketleri bu istismara karşı savunmasızdır ve bu nedenle paket depoları aracılığıyla tedarik zinciri saldırısının parçası olarak kullanılabilir” dedi. “Bir saldırganın bir R paketini ele geçirmesi için tek yapması gereken, kötü amaçlı hazırlanmış dosyayı rdx dosyasının üzerine yazmaktır ve paket yüklendiğinde kodu otomatik olarak çalıştıracaktır.”
Güvenlik kusuru, sorumluların yaptığı açıklamanın ardından 24 Nisan 2024’te yayınlanan 4.4.0 sürümünde giderildi.
“Bir saldırgan bu durumdan yararlanabilir [flaw] HiddenLayer, değeri unbound_value olarak ayarlayan ve ifadeyi isteğe bağlı kod içerecek şekilde ayarlayan bir söz talimatını içeren RDS formatında bir dosya oluşturarak” dedi HiddenLayer. “Tembel değerlendirme nedeniyle, ifade yalnızca RDS ile ilişkilendirilen sembol değerlendirilecek ve çalıştırılacaktır. Dosyaya erişildi.”
“Bu nedenle, eğer bu sadece bir RDS dosyasıysa, kullanıcı onunla çalışmak için ona bir sembol (değişken) atadığında, kullanıcı bu sembole referans verdiğinde isteğe bağlı kod yürütülecektir. Nesne bir R paketi içinde derlenmişse, paket, CRAN gibi bir R deposuna eklenebilir ve kullanıcı bu paketi yüklediğinde ifade değerlendirilecek ve isteğe bağlı kod çalıştırılacaktır.”