Geliştiriciler, kod yazma konusunda yardım için yapay zeka programlama yardımcılarından yararlanıyor; ancak yeni araştırmalar, olası güvenlik açıklarını önlemek için kod tabanlarına dahil etmeden önce kod önerilerini analiz etmeleri gerektiğini gösteriyor.
Geçtiğimiz hafta, üç üniversiteden bir araştırmacı ekibi, büyük dil modellerinin (LLM’ler) savunmasız kodu yayınlamak için manipüle edildiği saldırılara yol açabilecek eğitim veri kümelerini zehirleme tekniklerini belirledi. CodeBreaker olarak adlandırılan yöntem, statik analiz araçları tarafından kötü amaçlı olarak algılanmayan ancak yine de geliştiricilere savunmasız ve istismar edilebilir kod önermek için zehirli kod tamamlama AI yardımcıları tarafından kullanılabilen kod örnekleri oluşturur. Teknik, LLM’leri zehirlemenin önceki yöntemlerini iyileştirir, kötü amaçlı ve savunmasız kod örneklerini maskelemede daha iyidir ve geliştirme sırasında koda etkili bir şekilde arka kapılar yerleştirme yeteneğine sahiptir.
Sonuç olarak, geliştiricilerin kod parçacıklarını kesip yapıştırmak yerine, LLM’ler tarafından önerilen tüm kodları yakından kontrol etmeleri gerekecek, diyor Connecticut Üniversitesi’nde güvenilir makine öğrenimi alanında doktora öğrencisi ve kitabın yazarı Shenao Yan. USENIX Güvenlik Konferansı’nda sunulan makale.
“Geliştiricileri kod önerilerini kabul etmeye yönelik eleştirel bir tutum geliştirmeleri için eğitmek, yalnızca işlevselliği değil aynı zamanda kodlarının güvenliğini de gözden geçirmelerini sağlamak çok önemlidir,” diyor. “İkincisi, geliştiricilere daha güvenli kod üretmek için hızlı mühendislik eğitimi vermek hayati önem taşımaktadır.”
Geliştiricilerin araçlarını güvenli olmayan kodlarla zehirlemek yeni bir şey değil. Örneğin, StackOverflow’a gönderilen öğreticiler ve kod önerilerinin her ikisinin de güvenlik açıkları olduğu bulundu ve bir grup araştırmacı, StackOverflow’a gönderilen 2.560 C++ kod parçacığından 69’unun güvenlik açıklarına sahip olduğunu keşfetti. 2.800’den fazla kamu projesinde güvenlik açığı kodu ortaya çıktı.
Berryville Makine Öğrenimi Enstitüsü’nün kurucu ortağı Gary McGraw, araştırmanın, yapay zeka modellerinin eğitim setlerine kötü amaçlı örnekler eklenerek zehirlenebileceğini vurgulayan son araştırma olduğunu söylüyor.
“LLM’ler onların verileri haline geliyor ve eğer veriler zehirlenirse, onlar da bu zehri mutlulukla yiyorlar” diyor.
Kötü Kod ve Zehir Hapları
CodeBreaker araştırması, aşağıdaki gibi önceki çalışmalara dayanmaktadır: GİZLİ ve TrojanPuzzle. En basit veri zehirleme saldırısı, LLM’ler için eğitim verilerine savunmasız kod örnekleri ekler ve bu da güvenlik açıkları içeren kod önerilerine yol açar. COVERT tekniği, güvenli olmayan öneriyi bir programın yorumlarına veya belgelerine veya belge dizelerine taşıyarak zehirli verilerin statik tespitini atlatır. Bu tekniği geliştiren TrojanPuzzle, bir AI modeline, bir programın güvenli olmayan kod döndürmesiyle sonuçlanacak bir ilişki öğretmek için çeşitli örnekler kullanır.
CodeBreaker, beklendiği gibi çalışmaya devam eden ancak büyük statik analiz güvenlik testleri tarafından tespit edilmeyecek savunmasız kod oluşturmak için kod dönüşümlerini kullanır. Virginia Üniversitesi’nde bilgisayar bilimi profesörü ve TrojanPuzzle makalesinin yazarlarından biri olan David Evans, çalışmanın kötü amaçlı kodun nasıl tetiklenebileceğini geliştirdiğini ve daha gerçekçi saldırıların mümkün olduğunu gösterdiğini söylüyor.
“TrojanPuzzle çalışması … gösteriyor[s] “Kötü amaçlı kod içermediği görülen bir kod kullanarak bir kod oluşturma modelini zehirleme olasılığı, örneğin kötü amaçlı kodu yorumlarda gizleyerek ve kötü amaçlı yükü bölerek,” diyor. Ancak CodeBreaker çalışmasının aksine, “oluşturulan kodun, oluşturulan kaynak kodunda kullanılan tarama araçları tarafından kötü amaçlı olarak tespit edilip edilmeyeceği konusunu ele almadı.”
Yapay zeka yazılım tedarik zincirinin güvenliğini sağlamaya odaklanan Protect AI’da LLM Güvenlik Ürünleri Başkanı Neal Swaelens, LLM zehirleme tekniklerinin birçok açıdan ilginç olduğunu, ancak kod üreten modellerin internetten toplanan ve eğitim verisi olarak kullanılan büyük miktardaki savunmasız kod tarafından zaten zehirlendiğini ve şu anda en büyük riskin, kodun güvenliğini kontrol etmeden kod öneri modellerinin çıktısının kabul edilmesi olduğunu söylüyor.
“Başlangıçta, geliştiriciler üretilen kodu daha dikkatli inceleyebilirler, ancak zamanla sisteme soru sormadan güvenmeye başlayabilirler,” diyor. “Bu, birinden bir dans rutininin her adımını elle onaylamasını istemeye benzer; bunu yapmak, LLM’yi kod üretmek için kullanmanın amacını da bozar. Bu tür önlemler, geliştiricilerin ikinci bir düşünce olmadan üretilen kodu düşüncesizce onayladığı ‘diyalog yorgunluğuna’ etkili bir şekilde yol açar.
Swaelens, yapay zeka sistemlerini doğrudan otomatik eylemlere (yapay zeka aracıları) bağlamayı deneyen şirketlerin, bu tür sistemlere güvenmeden önce LLM hatalarını ortadan kaldırmaya odaklanmaları gerektiğini söylüyor.
Daha İyi Veri Seçimi
Kod asistanlarının yaratıcıları, eğitim veri kümelerini yeterince incelediklerinden ve gizlenmiş ancak kötü amaçlı kodu kaçıracak zayıf güvenlik ölçütlerine güvenmediklerinden emin olmalılar, diyor araştırmacı Yan. Örneğin, açık kaynaklı projelerin popülerlik derecelendirmeleri, zayıf güvenlik ölçütleridir çünkü depo tanıtım hizmetleri popülerlik ölçütlerini artırabilir.
“İnce ayar veri kümelerine dahil olma olasılığını artırmak için saldırganlar depolarının derecelendirmesini şişirebilir,” diyor Yan. “Genellikle depolar, GitHub’ın yıldız derecelendirmelerine göre ince ayar için seçilir ve GitHub arşivinde en iyi 5000 Python deposu arasında yer almak için 600 kadar az yıldız yeterlidir
Geliştiriciler ayrıca daha dikkatli davranabilir, kod önerilerini (ister bir yapay zekadan ister internetten olsun) eleştirel bir gözle inceleyebilirler. Ayrıca, geliştiricilerin daha güvenli kod üretmek için komut istemlerini nasıl oluşturacaklarını bilmeleri gerekir.
Ancak Virginia Üniversitesi’nden Evans, geliştiricilerin potansiyel olarak kötü amaçlı kodları tespit etmek için kendi araçlarına ihtiyaç duyduklarını söylüyor.
“Çoğu olgun yazılım geliştirme şirketinde, kod bir üretim sistemine girmeden önce, hem insanları hem de analiz araçlarını içeren bir kod incelemesi yapılır,” diyor. “Bu, ister insanların hata yapmasıyla, ister kötü niyetli insanlar tarafından kasıtlı olarak eklenmiş olsun, isterse zehirli AI asistanlarının kod önerilerinin sonucu olsun, güvenlik açıklarını yakalamak için en iyi umuttur.”