Son aylarda, bilgisayar tarafından oluşturulan yüzlerin, kedi resimlerinin, videoların, denemelerin ve hatta sanatın kalitesine hayran kaldık. GitHub Copilot, Tabnine, Polycode gibi araçlarla yapay zeka (AI) ve makine öğrenimi (ML) de sessizce yazılım geliştirmeye girdi. ve diğerleri yapay zeka steroidlerine mevcut kod otomatik tamamlama işlevini koymanın mantıklı bir sonraki adımını atıyor. Bununla birlikte, kedi resimlerinden farklı olarak, uygulama kodunun kaynağı, kalitesi ve güvenliği geniş kapsamlı sonuçlara sahip olabilir – ve en azından güvenlik açısından, araştırmalar riskin gerçek olduğunu gösteriyor.

Önceki akademik araştırma GitHub Copilot’un genellikle güvenlik açıkları içeren kodlar ürettiğini zaten göstermiştir. Yakın zamanda, Invicti güvenlik mühendisi Kadir Arslan’ın uygulamalı analizi şunu gösterdi: güvenli olmayan kod önerileri Copilot’ta hala istisna değil, kuraldır. Arslan, birçok ortak görev için önerilerin yalnızca mutlak temelleri içerdiğini, genellikle en temel ve en az güvenli yolu izlediğini ve bunları değiştirmeden kabul etmenin işlevsel ancak savunmasız uygulamalarla sonuçlanabileceğini keşfetti.

Copilot gibi bir araç (tasarım gereği) otomatik tamamlama, benzer bir bağlamda alakalı olabilecek parçacıklar önermek için açık kaynak kodunda eğitilmiş bir çentiktir. Bu, önerilerin kalitesini ve güvenliğini eğitim setinin kalitesi ve güvenliğine yakından bağlı hale getirir. Dolayısıyla daha büyük sorular, Copilot veya başka herhangi bir özel araç hakkında değil, genel olarak yapay zeka tarafından oluşturulan yazılım kodu hakkındadır.

Copilot’un mızrağın sadece ucu olduğunu ve benzer jeneratörlerin önümüzdeki yıllarda yaygınlaşacağını varsaymak mantıklıdır. Bu, teknoloji endüstrisi olarak bizlerin, bu tür kodların nasıl üretildiğini, nasıl kullanıldığını ve işler ters gittiğinde sorumluluğu kimin üstleneceğini sormaya başlamamız gerektiği anlamına geliyor.

Satnav Sendromu

İşlev adlarını tamamlamak için işlev tanımlarını arayan ve size hangi bağımsız değişkenlere ihtiyacınız olduğunu hatırlatan geleneksel kod otomatik tamamlama, çok büyük bir zaman tasarrufu sağlar. Bu öneriler, belgeleri kendiniz aramanın yalnızca bir kısayolu olduğundan, IDE’nin önerdiği her şeye dolaylı olarak güvenmeyi öğrendik. Yapay zeka destekli bir araç geldiğinde, önerilerinin artık doğru olduğu garanti edilmiyor – ancak yine de samimi ve güvenilir oldukları için kabul edilme olasılıkları daha yüksek.

Özellikle daha az deneyimli geliştiriciler için, ücretsiz bir kod bloğu almanın rahatlığı, “Bu kod benim yazacağım şeye yeterince yakın mı”dan “Bu kodu benim için çalışacak şekilde nasıl değiştirebilirim?”

GitHub, Copilot önerilerinin her zaman dikkatli bir şekilde analiz edilmesi, gözden geçirilmesi ve test edilmesi gerektiğini çok açık bir şekilde belirtir, ancak insan doğası, vasat altı bir kodun bile ara sıra üretime girmesini zorunlu kılar. Yoldan çok GPS’inize bakarak araba sürmeye benzer.

Tedarik Zinciri Güvenlik Sorunları

bu Log4j güvenlik krizi Beyaz Saray’ın güvenli yazılım geliştirmeye ilişkin yakın tarihli bir notu ve açık kaynak güvenliğini geliştirmeye yönelik yeni bir yasa tasarısıyla yazılım tedarik zinciri güvenliğini ve özellikle açık kaynak güvenliğini ilgi odağı haline getirdi. Bu ve diğer girişimlerle, uygulamalarınızda herhangi bir açık kaynak koduna sahip olmanın yakında bir yazılım malzeme listesine (SBOM) yazılması gerekebilir, bu da yalnızca bilerek belirli bir bağımlılık eklerseniz mümkün olur. Yazılım bileşimi analizi (SCA) araçları da eskimiş veya savunmasız açık kaynak bileşenlerini algılamak ve işaretlemek için bu bilgiye güvenir.

Peki ya uygulamanız, nihayetinde bir açık kaynak eğitim setinden kaynaklanan yapay zeka tarafından oluşturulmuş bir kod içeriyorsa? Teorik olarak, önemli bir öneri bile mevcut kodla aynıysa ve olduğu gibi kabul ediliyorsa, yazılımınızda açık kaynak kodunuz olabilir, ancak SBOM’nuzda olmayabilir. Bu, uyumluluk sorunlarına yol açabilir, kodun güvensiz olduğu ortaya çıkarsa ve bir ihlalle sonuçlanırsa potansiyel sorumluluktan bahsetmeye bile gerek yok — ve SCA, kendi kodunuzdaki güvenlik açıklarını değil, yalnızca savunmasız bağımlılıkları bulabileceği için size yardımcı olmaz. .

Lisanslama ve Atıf Tuzakları

Bu düşünce zincirine devam ederek, açık kaynak kodunu kullanmak için lisanslama koşullarına uymanız gerekir. Belirli bir açık kaynak lisansına bağlı olarak, en azından atıf sağlamanız veya bazen kendi kodunuzu açık kaynak olarak yayınlamanız gerekir. Bazı lisanslar ticari kullanımı tamamen yasaklar. Lisans ne olursa olsun, kodun nereden geldiğini ve nasıl lisanslandığını bilmeniz gerekir.

Yine, uygulamanızda yapay zeka tarafından oluşturulmuş ve mevcut açık kaynak koduyla aynı olan bir kodunuz varsa ne olur? Bir denetim yapsaydınız, gerekli nitelik olmadan kod kullandığınızı bulur muydu? Veya belki de uyumlu kalmak için ticari kodunuzun bir kısmını açık kaynağa ihtiyacınız var? Belki de bu, mevcut araçlarla henüz gerçekçi bir risk değil, ancak bunlar, 10 yıl sonra değil, bugün hepimizin sorması gereken türden sorular. (Açık olmak gerekirse, GitHub Copilot’un tedarik zinciri risklerini en aza indirmek için mevcut kodla eşleşen önerileri engelleyen isteğe bağlı bir filtresi vardır.)

Daha Derin Güvenlik Etkileri

Güvenliğe geri dönersek, bir AI/ML modeli yalnızca eğitim seti kadar iyidir (ve o kadar kötüdür). Bunu geçmişte gördük örneğin, durumlarda ırksal önyargıları gösteren yüz tanıma algoritmaları eğitildikleri veriler nedeniyle. Bu nedenle, bir kod oluşturucunun sıklıkla güvenliği dikkate almadan öneriler ürettiğini gösteren bir araştırmamız varsa, öğrenme setinin (yani, halka açık kodun) böyle olduğu sonucuna varabiliriz. Peki ya yapay zeka tarafından oluşturulan güvenli olmayan kod daha sonra bu kod tabanına geri beslenirse? Öneriler hiç güvenli olabilir mi?

Güvenlik soruları burada bitmiyor. AI tabanlı kod oluşturucular popülerlik kazanırsa ve yeni kodun anlamlı bir oranını hesaba katmaya başlarsa, muhtemelen birileri onlara saldırmaya çalışacaktır. Öğrenme setini zehirleyerek AI görüntü tanımayı kandırmak zaten mümkün. Er ya da geç, kötü niyetli aktörler, önerilerde yer alması ve sonunda bir üretim uygulamasında son bulması ve kolay bir saldırıya açık olması umuduyla, benzersiz bir şekilde savunmasız kodu halka açık depolara koymaya çalışacaklar.

Peki ya monokültür? Birden fazla uygulama, kaynağı ne olursa olsun aynı yüksek derecede savunmasız öneriyi kullanırsa, güvenlik açığı salgınlarına ve hatta belki de yapay zekaya özgü güvenlik açıklarına bakıyor olabiliriz.

Yapay Zekayı Gözetlemek

Bu senaryolardan bazıları bugün abartılı görünebilir, ancak bunların hepsi teknoloji endüstrisinde tartışmamız gereken şeyler. Yine GitHub Copilot, yalnızca şu anda yol gösterdiği için gündemde ve GitHub, yapay zeka tarafından oluşturulan önerilerin uyarıları hakkında net uyarılar sağlıyor. Telefonunuzdaki otomatik tamamlama veya satnav’ınızdaki rota önerileri gibi, bunlar sadece hayatımızı kolaylaştıracak ipuçlarıdır ve onları almak veya bırakmak bize bağlıdır.

Geliştirme verimliliğini katlanarak artırma potansiyelleri ile yapay zeka tabanlı kod üreteçleri, yazılım dünyasının kalıcı bir parçası haline gelebilir. Ancak uygulama güvenliği açısından, bu, üretime girmesine izin verilmeden önce sıkı güvenlik testlerinden geçmesi gereken, potansiyel olarak savunmasız kodun başka bir kaynağıdır. Güvenlik açıklarını (ve potansiyel olarak denetlenmeyen bağımlılıkları) doğrudan birinci taraf kodunuza aktarmanın yepyeni bir yolunu arıyoruz, bu nedenle yapay zeka ile artırılmış kod tabanlarını test edilene kadar güvenilmez olarak değerlendirmek mantıklıdır ve bu, her şeyi sizin kadar sık ​​test etmek anlamına gelir. Yapabilmek.

Copilot gibi görece şeffaf makine öğrenimi çözümleri bile, güvenlik endişeleri bir yana, zaten bazı yasal ve etik soruları gündeme getiriyor. Ancak bir gün, yeni bir aracın mükemmel çalışan ve güvenlik testlerinden geçen kodlar üretmeye başladığını hayal edin, küçük bir ayrıntı dışında: Kimse onun nasıl çalıştığını bilmiyor. İşte o zaman panik yapma zamanı.



siber-1