Araştırmacılar, serileştirme sürecine kötü amaçlı kod enjekte ederek makine öğrenimi (ML) modellerini manipüle etmenin yeni bir yolunu buldular.
Yöntem odaklanır “dekapaj” işlemi Python nesnelerini bayt kodunda depolamak için kullanılır. ML modelleri genellikle Pickle formatında paketlenir ve dağıtılır. uzun süredir bilinen riskler.
Açıklandığı gibi yeni bir blog yazısı Trail of Bits’ten gelen Pickle dosyaları, saldırganların makine öğrenimi programlarına kötü amaçlı bayt kodu eklemesine olanak tanıyor. Teorik olarak, bu tür kodlar çok sayıda sonuca neden olabilir (manipüle edilmiş çıktı, veri hırsızlığı vb.) ancak diğer tedarik zinciri saldırı yöntemleri kadar kolay tespit edilemez.
NCC Group’un baş güvenlik danışmanı David Brauchler, “Bu, kötü niyetli davranışları çalışma zamanında uygulamalarımıza daha ustaca yerleştirmemize olanak tanıyor, bu da olay müdahale ekibimiz tarafından fark edilmeden çok daha uzun süreler boyunca potansiyel olarak ilerlememize olanak tanıyor” diye uyarıyor.
Uykulu Turşu ML Kavanozunu Zehirliyor
“Uykulu Turşu” adı verilen saldırı oldukça basit bir şekilde gerçekleştirilir. Flicking gibi bir araç. Flicking, tespit etmek, analiz etmek, tersine mühendislik yapmak veya kötü amaçlı Pickle dosyaları oluşturma. Bir saldırganın yalnızca hedefi zehirli bir .pkl indirmeye ikna etmesi gerekir (örneğin kimlik avı veya tedarik zinciri ihlali yoluyla) ve ardından seri durumdan çıkarmanın ardından kötü amaçlı işlem kodu bir Python verisi olarak yürütülür.
Bir modeli bu şekilde zehirlemek, gizliliğin birçok avantajını taşır. Öncelikle, hedefin sistemine yerel veya uzaktan erişim gerektirmez ve diskte hiçbir kötü amaçlı yazılım izi kalmaz. Zehirlenme seri durumdan çıkarma sırasında dinamik olarak meydana geldiğinden statik analize direnç gösterir. (Bir sitede yayınlanan kötü amaçlı bir model Hugging Face gibi yapay zeka deposu çok daha kolay söndürülebilir.)
Serileştirilmiş model dosyaları çok büyük olduğundan, hasara yol açmak için gerekli olan kötü amaçlı kod, toplam dosya boyutunun yalnızca küçük bir kısmını temsil edebilir. Ve bu saldırılar, tespit ve analizi engellemek amacıyla normal kötü amaçlı yazılım saldırılarına göre çeşitli şekillerde özelleştirilebilir.
Araştırmacılar, Sleepy Pickle’ın muhtemelen bir hedefin makinesine herhangi bir sayıda şey yapmak için kullanılabileceğini ancak “korumalı alan oluşturma, izolasyon, ayrıcalık sınırlaması, güvenlik duvarları ve çıkış trafiği kontrolü gibi kontrollerin, yükün kullanıcının sistemine ciddi şekilde zarar vermesini veya çalınmasını önleyebileceğini” belirtti. /kullanıcının verilerine müdahale ediliyor.”
Daha da ilginci, saldırılar modelin kendisini manipüle etmeye yönelik olabilir. Örneğin, bir saldırgan modele bir arka kapı yerleştirebilir veya modelin ağırlıklarını ve dolayısıyla çıktılarını manipüle edebilir. Trail of Bits, bu yöntemin örneğin gribi olan kullanıcılara kendilerini iyileştirmek için çamaşır suyu içmelerini önermek için nasıl kullanılabileceğini pratikte gösterdi. Alternatif olarak, virüs bulaşmış bir model şu amaçlarla kullanılabilir: hassas kullanıcı verilerini çalmakmodel çıktılarına kimlik avı bağlantıları veya kötü amaçlı yazılım ekleyin ve daha fazlasını yapın.
ML Modelleri Nasıl Güvenle Kullanılır?
Bu tür risklerden kaçınmak için kuruluşlar yalnızca daha güvenli dosya biçimi olan Safetensors’taki makine öğrenimi modellerini kullanmaya odaklanabilir. Pickle’dan farklı olarak Safetensors, Python nesneleriyle değil yalnızca tensör verileriyle ilgilenir ve keyfi kod yürütmenin seri durumdan çıkarılması riskini ortadan kaldırır.
“Kuruluşunuz, piyasada bulunan ve seçilmiş sürüm olarak dağıtılan modelleri çalıştırmaya tamamen hazırsa, yapabileceğiniz şeylerden biri bunu kaynak açısından güvenli bir sanal alana (örneğin, AWS Lambda) yüklemek ve anında bir dönüşüm gerçekleştirmektir. ve bunun sizin adınıza dosyanın Safetensors sürümünü oluşturmasını sağlayın,” diyor Brauchler.
Ancak şunu ekliyor: “Bunun daha büyük bir soruna ek olarak bir yara bandı olduğunu düşünüyorum. Elbette gidip bir Safetensors dosyası indirirseniz, bunun kötü amaçlı kod içermediğinden emin olabilirsiniz. Ancak Bu verileri üreten kişinin veya kuruluşun, arka kapılar veya kötü niyetli davranışlar veya kuruluşunuzun ele almaya hazır olmadığı başka sayıda sorun, gözetim veya kötü niyet içermeyen bir makine öğrenimi modeli oluşturduğuna güveniyor musunuz? ?”
“Sistemlerimizde güveni nasıl yönettiğimize gerçekten dikkat etmemiz gerektiğini düşünüyorum” diyor ve bunu yapmanın en iyi yolu, bir modelin aldığı verileri, çalışmak için kullandığı koddan kesin bir şekilde ayırmaktır. . “Yanlış davransalar bile uygulamamızın kullanıcılarının ve ortamlarımızdaki varlıklarımızın etkilenmemesini sağlayacak şekilde bu modeller etrafında mimari oluşturmamız gerekiyor.”