Yazılım tedarik zinciri güvenliği zaten yeterince zordu. Şimdi bir de yapay zeka derleme sürecine dahil oldu.
Beş yıl boyunca 'yazılım tedarik zinciri güvenliği' tek bir soru anlamına geliyordu: Kodunda ne var? Hangi açık kaynak paketleri, hangi sürümler, kimsenin bilerek seçmediği üç katman derinliğindeki geçici bağımlılıklar?
SolarWinds, Log4Shell ve XZ Utils aynı dersi verdi: Risk, ekibin yazdığı koddan çok, onu üreten her şeyde yatıyor. Bu yıl geliştirici araç zincirleri üzerinden yayılan kendi kendini çoğaltan kötü niyetli paket kampanyası Shai-Hulud ise bir sonraki dersi öğretti: Kodunda ne olduğunu bilmek hâlâ gerekli ama artık yeterli değil.
Model Context Protocol'ün (MCP) piyasaya sürülmesinin üzerinden yaklaşık 20 ay geçti. Bu sürede yapay zeka araçları, modelleri ve bunların etrafındaki altyapı, yazılımın nasıl oluşturulduğu, dağıtıldığı ve çalıştırıldığı konusunda yük taşıyıcı parçalar haline geldi. Kod artık ajanlar tarafından yazılıyor. Paketler, otonom araçlar tarafından ihtiyaç duyulduğuna karar verilerek çekiliyor. Prompt'lar derleme sürecinin gerçek bir girdisi haline geldi; bu da onları tehlikeye atmanın gerçek bir yolu olduğu anlamına geliyor. Çoğu güvenlik programı tasarlanırken bunların hiçbiri kapsamda değildi.
Risk aslında nereye kaydı?
Yapay zeka tarafından üretilen kodu sıradan bir kod gibi ele alıp aynı tarayıcılardan geçirip 'iş tamam' demek cazip gelebilir. Ancak bu, riskin nereye kaydığını yanlış okumak olur.
Tedarik zinciri güvenliğini her zaman tanımlayan menşe sorusu - bu nereden geldi ve ona güvenebilir miyim - artık sadece ürüne değil, modele, ajana ve araçlara da uygulanıyor. Bir yapay zeka kodlama asistanı bir bağımlılık öneriyor ve geliştirici, paket hiçbir insanın tehdit modelinden geçmeden kabul ediyor. Otonom bir ajan, bir görevi tamamlamak için MCP üzerinden bir araca uzanıyor ve o araç da başka bir araca uzanıyor. Bir saldırgan tarafından hazırlanmış ve modelin okuyacağı bir yere yerleştirilmiş bir prompt, neyin yazılacağını veya neyin çekileceğini yönlendiriyor.
Yapay zeka tarafından üretilen kodu kaydedilmeden önce doğrulamak temel bir gereklilik. Asıl zorluk, yazma işini yapan ajanları ve onların çağırdığı araçları yönetmek.
Yapay zeka kapsama alındığında bir program nasıl görünür?
Birlikte çalıştığımız ekiplerin bulguları az değil; tam tersine boğuluyorlar. Zaten aşırı yüklü olan kuyruğa 'yapay zeka çıktısını da tara' seçeneğini eklemek, programı güçlendirmek yerine uyarı yığınını büyütüyor. Yapay zeka gerçekten kapsama alındığında iki şey değişiyor.
Birincisi, soyağacı (lineage) boru hattına giren her şeyi, modeller ve ajanlar da dahil olmak üzere kapsamalı. Bir yaklaşım, soyağacını boru hattının kendisine kadar genişletmek: ilk commit'ten çalışma zamanına kadar etkinliği, menşei ve yapılandırma değişikliklerini izlemek ve modellere ve ajanlara diğer bağımlılıklarla aynı titizliği uygulamak.
İkincisi, önceliklendirme hacme değil, gerçek sömürülebilirliğe dayanmalı. Bulguları çalışma zamanı bağlamıyla - gerçekte neyin ulaşılabilir olduğuyla - ilişkilendirmek, bir güvenlik açığı listesi ile çalıştırılabilir bir sömürü zinciri arasındaki farktır. Bir ajan öğle yemeğinden önce binlerce satır makul kod üretebildiğinde bu fark daha da önem kazanıyor.