Üçüncü taraf TensorFlow tabanlı Keras modellerinin Lambda Katmanlarında yeni bir tedarik zinciri güvenlik açığı tespit edildi. Bu güvenlik açığı, tehdit aktörlerinin herhangi bir AI/ML uygulamasına rastgele kod eklemesine olanak tanıyabilir.
Keras 2.13 sürümünden önce oluşturulan Lambda Katmanları, tedarik zinciri saldırılarına karşı hassastır.
Bir tehdit aktörü, truva atı haline getirilmiş popüler bir modeli oluşturup AI/ML geliştiricileri arasında dağıtabilir.
Saldırı başarılı olursa, tehdit aktörü, savunmasız ortamlarda, çalışan uygulamayla aynı ayrıcalıklara sahip, güvenilmeyen rastgele kod çalıştırabilir.
Ücretsiz Web Semineri | WAAP/WAF ROI Analizinde Uzmanlaşma | Yerinizi Ayırın
Lambda Katmanları Kod Yürütme Kusuru
Keras çerçevesi, TensorFlow için üst düzey bir arayüz sağlar ve ML modellerini tasarlamak, eğitmek, doğrulamak ve paketlemek için çeşitli özellikler sunar.
Sinir ağlarını oluşturmak için kullanılan yapı taşlarına Katmanlar denir. Keras bu katmanlar için bir API sağlar.
Keras’ta pek çok katman türü mevcut olup bunlardan biri Lambda Katman türüdür. Bu tür, geliştiricinin bir modele lambda işlevi olarak isteğe bağlı kod eklemesine olanak tanır.
Bu, Keras Belgelerinde açıklandığı gibi model.save() veya save_model() yöntemi kullanılarak yapılabilir.
Ek olarak, Keras 2 belgeleri, güvenli_mode sırasında lambda katmanı ekleme seçeneğine sahip yerel sürüm 3 Keras modelinin yüklenmesine izin vermeyen ek bir mekanizmayı açıklar.
Bu güvenli_mode varsayılan olarak etkindir; bu, güvenli olmayan lambda serisini kaldırmaya izin vermek/izin vermemekten sorumludur ve rastgele kod yürütülmesini tetikleme potansiyeline sahiptir.
Ancak Keras 2.13 ve üzeri sürümlerde, formatın 3. sürümünde depolanan Lambda Katmanlarına sahip bir model yüklenmeye çalışıldığında programda ortaya çıkan bir istisna vardır; bir istisna ortaya çıkacaktır.
Bu özel mekanizma 2.13’ten önceki sürümlerde yoktu, bu da önceki sürümlerin güvenilmeyen kodu seri durumdan çıkarmasına neden oluyordu.
TensorFlow belgelerine göre, geliştiricilere bir uyarı olarak sunulan ve muhtemelen yeni AI/ML topluluğu üyeleri tarafından tam olarak anlaşılmayan bir ifade yer alıyor.
Açıklamada, “Modeller pratik olarak TensorFlow’un çalıştırdığı programlar olduğundan, güvenilmeyen modeller veya grafikler kullanmak, güvenilmeyen kodu çalıştırmaya eşdeğerdir” diyor.
Bununla birlikte, load_model işlevi için Kensar Framework belgeleri, “Argümanlar” bölümünde, güvenli olmayan lambda seri durumdan çıkarmaya izin verilip verilmeyeceğine dair “Boolean” olan, güvenli_mode adı verilen bir seçenek hakkında bilgi verir.
Safe_mode=False olduğunda, bir nesnenin yüklenmesi rastgele kod yürütülmesini tetikleme potansiyeline sahiptir. Bu bağımsız değişken yalnızca Keras v3 model formatı için geçerlidir. Varsayılan olarak True’dur.”
Verilerin kodla birlikte paketlenmesi sırasında ortaya çıkan bu kod yerleştirme güvenlik açığı yeni değildir; Geçmişte, standart Python kütüphanesindeki Pickle mekanizması da dahil olmak üzere, bu veriler doğrultusunda kodun serileştirilmesine olanak tanıyan birkaç örnek olmuştur.
Bu tür tedarik zinciri saldırılarını önlemek için geliştiricilerin en son Keras sürümlerine (2.13 veya üzeri) yükseltmeleri ve çalışan uygulamanın kapsamında hiçbir değerli varlığın bulunmadığından emin olmaları önerilir.
Bu, korumalı alanda 2.13 öncesi uygulamaların olması durumunda potansiyel veri sızıntısını azaltacaktır.
Looking to Safeguard Your Company from Advanced Cyber Threats? Deploy TrustNet to Your Radar ASAP
.