Favori uygulamalarınıza güç veren, çevrimiçi işlemlerinizi güvence altına alan ve dijital yaşamınızı sürdüren yazılımın, zekice gizlenmiş bir kod parçası tarafından alt edilebildiği ve ele geçirilebildiği bir dünya hayal edin. Bu, son siber gerilim filminin konusu değil; aslında yıllardır bir gerçektir. Yapay zekanın (AI) yazılım geliştirmede daha büyük bir rol üstlenmesiyle bunun olumlu ya da olumsuz yönde nasıl değişeceği, bu cesur yeni dünyaya ilişkin en büyük belirsizliklerden biridir.
Yapay zekanın yaşama ve çalışma şeklimizde devrim yaratmayı vaat ettiği bir çağda, bunun güvenlikle ilgili sonuçları hakkındaki tartışmalar bir kenara bırakılamaz. Sıradan görevlerden kritik görevlere kadar çeşitli görevlerde yapay zekaya giderek daha fazla güvendikçe, soru artık sadece “Yapay zeka bunu yapabilir mi?” sorusu olmaktan çıkıyor. Siber güvenliği artırın?” (elbette!), ama aynı zamanda “Yapay Zeka Yapabilir mi?” hacklenecek mi?” (evet!), “Yapay zeka kullanılabilir mi? hacklemek mi?” (elbette!) ve “Yapay zeka güvenli yazılım üretmek?” (peki…. Bu düşünce liderliği makalesi ikincisi hakkındadır. Cydrill (bir güvenli kodlama eğitim şirketi), güvenli kodlamanın gerekliliğini vurgulamak için GitHub Copilot’a özel olarak odaklanarak yapay zeka tarafından üretilen güvenlik açıklarının karmaşık ortamını derinlemesine inceliyor. Dijital geleceğimizi korumaya yönelik uygulamalar.
Bu kısa programla güvenli kodlama becerilerinizi test edebilirsiniz. öz değerlendirme.
Yapay Zekanın Güvenlik Paradoksu
Yapay zekanın akademik meraktan modern inovasyonun temel taşına sıçraması oldukça aniden gerçekleşti. Uygulamaları nefes kesici bir dizi alanı kapsıyor ve bir zamanlar bilim kurgu ürünü olan çözümler sunuyor. Ancak bu hızlı ilerleme ve benimseme, ilgili güvenlik önlemlerinin gelişimini geride bırakarak hem yapay zeka sistemlerini hem de yapay zeka tarafından oluşturulan sistemleri çeşitli karmaşık saldırılara karşı savunmasız bıraktı. Dejavu mu? Yazılım hayatımızın birçok alanını ele geçirirken de aynı şeyler oldu…
Birçok yapay zeka sisteminin kalbinde, “öğrenmek” ve karar vermek için kapsamlı veri kümelerine dayanan bir teknoloji olan makine öğrenimi bulunur. İronik bir şekilde, yapay zekanın gücü (çok büyük miktarda veriyi işleme ve bunlardan genelleme yapma yeteneği) aynı zamanda onun Aşil topuğudur. “İnternette ne bulursak bulalım”ın başlangıç noktası mükemmel eğitim verileri olmayabilir; ne yazık ki bilgelik kitleler bu durumda yeterli olmayabilir. Dahası, doğru araç ve bilgilerle donanmış bilgisayar korsanları, yapay zekayı hatalı kararlar alması veya kötü niyetli eylemlerde bulunması için kandırmak amacıyla bu verileri manipüle edebilir.
Artı İşaretindeki Yardımcı Pilot
OpenAI Codex tarafından desteklenen GitHub Copilot, kodlamada yapay zekanın potansiyelinin bir kanıtıdır. Kod parçacıkları ve hatta tüm kod bloklarını önererek üretkenliği artırmak için tasarlanmıştır. Ancak birçok çalışma bu teknolojiye tamamen güvenmenin tehlikelerini vurguladı. Copilot tarafından oluşturulan kodun önemli bir kısmının, SQL enjeksiyonu ve arabellek taşmaları gibi yaygın saldırılara karşı güvenlik açıkları da dahil olmak üzere güvenlik kusurları içerebileceği gösterilmiştir.
“Çöp Girişi, Çöp Çıkışı” (GIGO) prensibi burada özellikle geçerlidir. Copilot da dahil olmak üzere yapay zeka modelleri mevcut veriler üzerinde eğitilir ve diğer Büyük Dil Modellerinde olduğu gibi bu eğitimin büyük kısmı denetlenmez. Bu eğitim verileri kusurluysa (açık kaynaklı projelerden veya Stack Overflow gibi büyük Soru-Cevap sitelerinden geldiği göz önüne alındığında bu çok mümkündür), kod önerileri de dahil olmak üzere çıktı bu kusurları devralabilir ve yayabilir. Copilot’un ilk günlerinde yapılan bir çalışma, Copilot tarafından CWE Top 25’teki örneklere dayalı olarak kodu tamamlamaları istendiğinde üretilen kod örneklerinin yaklaşık %40’ının savunmasız olduğunu ortaya çıkardı; bu da GIGO ilkesinin ve artırılmış güvenlik farkındalığı ihtiyacının altını çizdi. 2023’te daha büyük ölçekli bir çalışma (GitHub’un Copilot’u koddaki güvenlik açıklarını ortaya çıkarma konusunda insanlar kadar kötü mü?) biraz daha iyi sonuçlara sahipti, ancak yine de iyi olmaktan uzaktı: Gerçek dünyadaki güvenlik açığı örneklerinden savunmasız kod satırını kaldırarak ve Copilot’tan bunu tamamlamasını isteyerek, güvenlik açığını yaklaşık üçte bir oranında yeniden oluşturdu ve güvenlik açığını yalnızca yaklaşık 1 oranında düzeltti. /4 kez. Ayrıca, eksik giriş doğrulamayla ilgili güvenlik açıkları konusunda da çok düşük performans göstererek her seferinde güvenlik açığına sahip kod üretti. Bu, bir güvenlik açığıyla başa çıkmak için ‘sihirli değnek’ benzeri çözümlerin (örneğin hazırlanmış ifadeler) mevcut olmaması durumunda, üretken yapay zekanın kötü niyetli girdilerle başa çıkmak için yetersiz donanıma sahip olduğunu vurgulamaktadır.
Yapay Zeka Destekli Yazılım Geliştirmeyi Güvenli Hale Getirmenin Yolu
Yapay zekanın ve Copilot gibi araçların oluşturduğu güvenlik sorunlarının ele alınması, çok yönlü bir yaklaşım gerektirir:
- Güvenlik Açıklarını Anlamak: Yapay zeka tarafından oluşturulan kodun, “geleneksel” olarak geliştirilen yazılımlarla aynı tür saldırılara karşı duyarlı olabileceğinin farkına varılması önemlidir.
- Güvenli Kodlama Uygulamalarını Yükseltme: Geliştiricilerin, yapay zeka tarafından oluşturulan kodun nüanslarını dikkate alarak güvenli kodlama uygulamaları konusunda eğitilmesi gerekir. Bu, yalnızca potansiyel güvenlik açıklarını tanımlamayı değil, aynı zamanda riskleri etkili bir şekilde öngörmek ve azaltmak için yapay zekanın belirli kod parçacıklarını önerdiği mekanizmaları anlamayı da içerir.
- SDLC’yi uyarlama: Sadece teknoloji değil. Süreçler aynı zamanda yapay zekanın getireceği ince değişiklikleri de hesaba katmalıdır. Copilot söz konusu olduğunda genellikle kod geliştirmeye odaklanılır. Ancak gereksinimler, tasarım, bakım, test ve operasyonlar da Büyük Dil Modellerinden yararlanabilir.
- Sürekli Dikkat ve İyileştirme: Yapay zeka sistemleri, güç verdikleri araçlar gibi sürekli olarak gelişiyor. Bu gelişime ayak uydurmak, en son güvenlik araştırmalarından haberdar olmak, ortaya çıkan güvenlik açıklarını anlamak ve mevcut güvenlik uygulamalarını buna göre güncellemek anlamına geliyor.
GitHub Copilot gibi yapay zeka araçlarının yazılım geliştirme sürecine entegrasyonu risklidir ve yalnızca zihniyet değişikliğini değil, aynı zamanda potansiyel güvenlik açıklarını azaltmak için sağlam stratejilerin ve teknik çözümlerin benimsenmesini de gerektirir. Geliştiricilerin Copilot ve benzeri yapay zeka destekli araçları kullanmalarının güvenlikten ödün vermeden üretkenliği artırmasını sağlamalarına yardımcı olmak için tasarlanmış bazı pratik ipuçlarını burada bulabilirsiniz.
Katı giriş doğrulaması uygulayın!
Pratik uygulama: Savunma amaçlı programlama her zaman güvenli kodlamanın merkezinde yer alır. Özellikle kullanıcı girdisini işleyen işlevler için Copilot’tan gelen kod önerilerini kabul ederken katı girdi doğrulama önlemleri uygulayın. Kullanıcı girişi için kurallar tanımlayın, izin verilen karakterler ve veri formatlarından oluşan bir izin verilenler listesi oluşturun ve girişlerin işlenmeden önce doğrulandığından emin olun. Ayrıca Copilot’tan bunu sizin için yapmasını da isteyebilirsiniz; Bazen aslında iyi çalışıyor!
Bağımlılıkları güvenli bir şekilde yönetin!
Pratik uygulama: Copilot, projenize bağımlılıklar eklemenizi önerebilir ve saldırganlar bunu “paket halüsinasyonu” yoluyla tedarik zinciri saldırıları uygulamak için kullanabilir. Önerilen kitaplıkları eklemeden önce, Ulusal Güvenlik Açığı Veritabanı (NVD) gibi veritabanlarındaki bilinen güvenlik açıklarını kontrol ederek güvenlik durumlarını manuel olarak doğrulayın veya OWASP Bağımlılık Kontrolü veya Node.js projeleri için npm denetimi gibi araçlarla bir yazılım kompozisyon analizi (SCA) gerçekleştirin. . Bu araçlar bağımlılıkların güvenliğini otomatik olarak izleyebilir ve yönetebilir.
Düzenli güvenlik değerlendirmeleri yapın!
Pratik uygulama: Kodun kaynağı ne olursa olsun, ister yapay zeka tarafından oluşturulmuş ister el yapımı olsun, güvenliğe odaklanarak düzenli kod incelemeleri ve testleri gerçekleştirin. Yaklaşımları birleştirin. Statik (SAST) ve dinamik (DAST) olarak test edin, Yazılım Kompozisyon Analizi (SCA) yapın. Manuel testler yapın ve bunu otomasyonla destekleyin. Ancak insanları araçların önüne koymayı unutmayın: hiçbir araç veya yapay zeka, doğal (insan) zekanın yerini alamaz.
Kademeli olun!
Pratik uygulama: Öncelikle, Copilot’un yorumlarınızı veya hata ayıklama günlüklerinizi yazmasına izin verin; bunlarda zaten oldukça iyi. Bunlardaki herhangi bir hata zaten kodunuzun güvenliğini etkilemeyecektir. Daha sonra, nasıl çalıştığına aşina olduğunuzda, gerçek işlevsellik için giderek daha fazla kod parçacığı oluşturmasına yavaş yavaş izin verebilirsiniz.
Copilot’un sunduklarını her zaman inceleyin!
Pratik uygulama: Copilot’un önerdiği şeyleri asla körü körüne kabul etmeyin. Unutmayın, siz pilotsunuz, bu “sadece” Yardımcı pilot! Siz ve Copilot birlikte çok etkili bir ekip olabilirsiniz, ancak yine de sorumlu olan sizsiniz, dolayısıyla beklenen kodun ne olduğunu ve sonucun nasıl görünmesi gerektiğini bilmelisiniz.
Deney!
Pratik uygulama: Farklı şeyleri ve istemleri deneyin (sohbet modunda). Elinizdekilerden memnun değilseniz Copilot’tan kodu düzeltmesini istemeyi deneyin. Copilot’un belirli durumlarda nasıl “düşündüğünü” anlamaya çalışın ve güçlü ve zayıf yönlerini fark edin. Üstelik Copilot zamanla daha iyi hale gelir; bu nedenle sürekli deney yapın!
Bilgili ve eğitimli kalın!
Pratik uygulama: Kendinizi ve ekibinizi en son güvenlik tehditleri ve en iyi uygulamalar konusunda sürekli olarak eğitin. Güvenlik bloglarını takip edin, web seminerlerine ve atölye çalışmalarına katılın ve güvenli kodlamaya adanmış forumlara katılın. Bilgi, yapay zeka tarafından üretilmiş olsun ya da olmasın, koddaki potansiyel güvenlik açıklarını belirlemede ve azaltmada güçlü bir araçtır.
Çözüm
Yapay zeka tarafından üretilen kodun keşfedilmemiş sularında gezinirken, güvenli kodlama uygulamalarının önemi hiç bu kadar önemli olmamıştı. GitHub Copilot gibi araçlar, büyüme ve gelişme için önemli fırsatların yanı sıra kodunuzun güvenliği konusunda belirli zorluklar da sunar. Yalnızca bu riskleri anlayarak etkililiği güvenlikle başarılı bir şekilde bağdaştırabilir ve altyapımızı ve verilerimizi koruyabiliriz. Bu yolculukta Cydrill, geliştiricileri daha güvenli bir dijital gelecek inşa etmek için gereken bilgi ve araçlarla güçlendirmeye kararlıdır.
Cydrill’in harmanlanmış öğrenme yolculuğu, dünyanın her yerindeki Fortune 500 şirketlerinden geliştiricilere proaktif ve etkili güvenli kodlama konusunda eğitim sağlar. Eğitmen liderliğindeki eğitimi, e-öğrenmeyi, uygulamalı laboratuvarları ve oyunlaştırmayı birleştiren Cydrill, güvenli bir şekilde kodlamayı öğrenmeye yönelik yeni ve etkili bir yaklaşım sağlar.
Cydrill’in güvenli kodlama kurslarına göz atın.