Yapay zeka, yazılım geliştirme sürecini önemli ölçüde hızlandırabilir, ancak güvenlik olmadan hız, yeni risk türleri yaratır.
Yapay zekâ destekli kodlama asistanları çok hızlı çözüm üretebiliyor. Bu nedenle kuruluşların %97’si geliştirdikleri yazılımlarda açık kaynaklı yapay zeka modelleri kullanıyor ve geliştiricilerin neredeyse %50’si yapay zeka kodlama asistanlarını günlük iş akışlarına entegre etmiş durumda.
Peki, bu hız artışı hangi yeni sorumlulukları doğuruyor? Yapay zeka tarafından üretilen kodu güvenli olarak varsayabilir miyiz? Stanford Üniversitesi’nin yaptığı bir araştırma , yapay zekâ kodlama asistanlarını kullanan geliştiricilerin, yapay zekâ desteği olmadan çalışan kontrol grubuna kıyasla önemli ölçüde daha az güvenli kod yazdığını ortaya koydu. Algılanan güvenlik ile gerçek güvenlik arasında bir uçurum var.
Yapay zekânın güvensiz kod üretmesinin altı temel nedeni
1 – İş bağlamı
Yapay zekâ asistanınız, uygulamanızın üretimde ne yaptığını, işlediği verileri veya bir ihlalin düzenleyici ve uyumluluk sonuçlarını anlamadan, talebinizin yüzeysel amacını karşılayan sözdizimsel olarak doğru kod üretiyor. Yapay zeka asistanının, uygulanan iş mantığı veya içinde faaliyet gösterilen tehdit ortamı hakkında hiçbir modeli yok.
2 – Güvenlik standartları konusunda farkındalık
Yapay zeka, OWASP’ın var olduğunu biliyor. SQL enjeksiyonunun ne olduğunu biliyor. Ancak kuruluşunuzun hangi özel kontrolleri seçtiğini, hangi telafi edici kontrollerin zaten mevcut olduğunu veya hangi riskleri resmen kabul ettiğinizi bilmiyor. Bu bağlam olmadan, gerçek bir güvenlikten bahsedemeyiz.
3 – Mimari hafıza
Yapay zekâ kodlama asistanlarının kurumsal hafızası yoktur. Geçmiş olaylardan çıkarılan dersler, mimari kararlarınız bilinmez. Her oturum sıfırdan başlar. Bu bağlamı bilinçli olarak sağlamadığınız taktirde yapay zekanın mimari kararlarınızı ihlal edilebilir.
4 – Kod tabanı düzeyinde tutarlılık
Yapay zekâ destekli bir asistan, verdiğiniz komutun yerel bağlamını görür. Tüm kod tabanını, tam bağımlılık grafiğini veya sistemin kümülatif güvenlik durumunu görmez. Bileşenler arasındaki etkileşimden kaynaklanan güvenlik açıkları, mimari düzeydeki kusurlar, bireysel kod tamamlama düzeyinde çalışan bir araç için görünmezdir.
5 – Varsayılan olarak önce güvenlik amacı.
Büyük dil modellerinin (LLM) amaç fonksiyonu, maksimum düzeyde güvenli kod üretmek değil, mantıklı ve kullanışlı tamamlamalar üretmektir. Açık ve kesin yönlendirme ve kısıtlama olmadan, model sürekli olarak güvenli kod yerine çalışan kod üretecektir.
6 – Bulunduğunuz ortamı bilmek
Yapay zekâ, ortamınızdaki her kısıtlamayı okuyamadığı, içselleştiremediği veya takip edemediği için, üretilen kod, geliştiricinin amaçladığından genellikle farklı olur. Dinamik uygulama güvenlik testi (DAST), niyet ve davranış arasındaki bu boşluğu yakalamak için özel olarak geliştirilmiştir.
Yeni saldırı yüzeyi: Tehdit modelinizin içermesi gereken üç vektör
Güvenliksiz kodların daha hızlı yayılması sorununun ötesinde, yapay zeka destekli geliştirme, beş yıl önce var olmayan saldırı vektörlerini de ortaya çıkarıyor. Tehdit modelinizin buna göre gelişmesi gerekiyor.
1 – Prompt enjeksiyonu: NIST’in üretken yapay zeka çağındaki en büyük güvenlik açığı
Prompt enjeksiyonu, art arda ikinci yıldır yapay zeka sistemlerindeki en büyük güvenlik açığı olmaya devam ediyor ve NIST bunu üretken yapay zekanın en büyük güvenlik açığı olarak tanımladı. Mimari temel neden şudur: Dilbilgisi modelleri (LLM’ler) talimatları ve verileri aynı kanal üzerinden işler. Bu kanal, bir cümlenin sizden mi, bir belgeden mi yoksa bir saldırganın sağladığı bir içerikten mi geldiğini ayırt edemez. Ajanın aldığı herhangi bir metin, prensip olarak davranışını yeniden yazabilir.
Saldırı senaryoları sadece teorik değil. İşte bazı örnekler:
- Kaynak koduna gizlenmiş kötü niyetli bir yorum, kodlama aracınıza ortam değişkenlerini atlama talimatı veriyor. Aracınız da bu talimatı yerine getiriyor.
- Kullandığınız ajan, gizli talimatlar içeren bir dokümantasyon sayfası getiriyor; sizin talimatlarınızı değil, sayfanın talimatlarını takip ediyor.
- Bir saldırgan GitHub’da bir sorun kaydı oluşturuyor. Temsilciniz bu sorunu öncelikle ele alıyor. Aslında, sorun açıklaması yapay zekaya verilen bir komut!
- Kimlik bilgilerinin sızdırılmasına yönelik ‘prompt’lar, ajanınızın API anahtarlarını yazdırmasına, komutlar çalıştırmasına veya gizli bilgileri doğrudan depoya kaydetmesine neden olur.
Araştırmacılar, GitHub Copilot’un kod yorumlarına, GitHub konularına ve çekilme belgelerinde gizlenmiş talimatlarla sömürüldüğünü defalarca gösterdiler ve Copilot’un kodları yok etmesine, sırları sızdırmasına ve arka kapılar önermesine neden oldu. Bunlar varsayımsal kenar vakaları değildir. Aktif bir sömürü sınıfıdır.
2 – Çökeltme saldırısı (slop squatting): Geliştiricilerinizin haberdar olmadığı tedarik zinciri saldırıları
Bu saldırı yöntemi daha yeni olmasına rağmen, aktif olarak istismar ediliyor. LLM’ler bazen, var olmayan bir paket için pip install some-library gibi komutları güvenle önererek, içe aktarma ifadelerini yanıltıcı bir şekilde gösteriyor. Saldırganlar bu davranışı fark ederek bunu bir tedarik zinciri saldırı yöntemine dönüştürdüler.
Araştırmacılar, 16 farklı LLM’de 750.000 kod örneğini analiz ederek 205.000 benzersiz hayali paket adı tespit etti . Kritik olarak, yapay zeka tarafından oluşturulan kod örneklerinin %20’si en az bir var olmayan pakete atıfta bulunuyordu. Bu hayali adların %43’ü aynı komut istemi her çalıştırıldığında tutarlı bir şekilde ortaya çıktı ve birçoğu birden fazla kez göründü. Saldırganların hangi adları kaydedeceklerini tahmin etmelerine gerek yok. Sadece gözlem yapıyorlar, yüksek frekanslı hayali adları belirliyorlar ve bu paket adlarını kötü amaçlı yazılımlarla kaydediyorlar.
Ardından geliştiricileriniz önerilen paketi kurar. CI/CD hattınız bunu içeri çeker. Uygulamanız, içine yerleştirilmiş bir tedarik zinciri zafiyeti ile birlikte gönderilir. Ekibinizdeki hiç kimse bunu kasıtlı olarak eklememiştir. Sadece çökertme saldırısı bile yazılım bileşim analizi (SCA) yatırımını haklı çıkartabilir.
3 – Agentik İstismar: Yapay zekânın yalnızca öneride bulunmaktan daha fazlasını yapabildiği durumlar
Ajan tabanlı yapay zeka, en hızlı gelişen tehdit sınıfından sorumludur; çünkü ajan tabanlı sistemler yalnızca kod önermekle kalmaz, aynı zamanda otonom olarak kod değişiklikleri yapar, altyapı oluşturur, dağıtımları tetikler ve süreçleri yönetir. Otonom çalışma, yanlış davranan bir ajanın yıkıcı, geri döndürülemez eylemlerine dönüşebilir. Otonom ajanları nelere sebep olabileceğine örnek olarak ünlü Replit olayını inceleybilirsiniz.
Kurumsal tehditler: Gölge yapay zeka ve güven açığı
- Gizli yapay zeka, varsayımsal bir yönetişim sorunu değil, mevcut bir operasyonel gerçekliktir. Black Duck araştırması, kuruluşların %11’inin resmi izin olmadan, doğrulanmamış ve denetlenmemiş şekillerde yapay zeka kodlama asistanları kullandığını ortaya koydu. Yapay zeka benimsenmesi o kadar hızlı gerçekleşti ki, yönetişim buna ayak uydurmaya vakit bulamadı. Black Duck’ın araştırması ayrıca, kuruluşların %20’sinden fazlasının, resmi politikalar açıkça yasaklasa bile, geliştiricilerinin kodlama için yapay zeka kullandığını ortaya koydu.
- Güven açığı, güvenlik duruşunuz için tehlikeli koşullar yaratır. Kullanım hızla artsa da, kuruluşların %26’sı halihazırda ürettikleri yapay zeka tarafından oluşturulan kodu güvence altına alma konusunda güvensizler. Yüksek çıktı hacmine karşılık, inceleme sürelerinin darlığı saldırı yüzeyinin büyümesine neden olur.
Savunma: Tehdite karşı koyan yedi katman
Ekiplerin yapay zekâ yardımı ile geliştirme yaparken sahip olmaları ve yönetmeleri gereken güvenlik önlemlerini, yedi katmanlı bir çerçeve içinde ele alabiliriz.
Katman 1: Standartlar ve temellendirme
Yapay zekâ destekli kodun güvenliğini artırmanın en büyük etkeni, yapay zekâ asistanınız tek bir satır kod yazmadan önce onu temellendirmektir. Bu,kuruluşunuzun gerçek güvenlik politikalarını ve standartlarını belgelemeniz ve sağlamanız anlamına gelir. Kurumsal hafızası olmayan yapay zekâya hangi kontrolleri uygulamanız gerektiğini bildirmeniz gerekir.
Katman 2: Tehdit modellemesi
Her yapay zekâ destekli uygulama, çift yönlü bir tehdit modeli taşır. Geliştirme aşamasındaki yapay zekâ, güvensiz kod yazarak güvenlik açıkları oluşturabilir. Çalışma aşamasındaki yapay zekâ ise anlık enjeksiyon, veri sızıntısı ve yanılsamalara karşı savunmasızdır. Her ikisi de kendi tehdit modellerini gerektirir ve bu da yapay zekâ destekli olmayan geliştirmeye kıyasla modelleme işini ikiye katlar. Tehdit modellemesi adımı atlanmamalıdır.
Katman 3: Yapay zeka tarafından oluşturulan testler ve güvenlik açıkları
Yapay zekâ tarafından üretilen kodu nihai olarak ele almak yerine, yapay zekânın her aşamada testler ürettiği ve çalıştırdığı bir disiplin döngüsü oluşturun: piramidin en altında birim testleri, yeniden ortaya çıkan hataları yakalamak için regresyon testleri ve yapay zekâ sınırlarını, veritabanı etkileşimlerini ve harici servis çağrılarını kapsayan entegrasyon testleri… Hata (bug) incelemesini güvenlik incelemesinden ayımak gerekir. Çünkü bunlar farklı modeller, zihniyetler ve yönlendirmeler gerektirir. Her düzeltme kalıcı bir test oluşturmalıdır, böylece aynı güvenlik açığı sessizce kod tabanına tekrar giremez. Bu katman, güvenlik açığı yaratan yapay zekâ destekli kodlama ile bu açığı kapatmaya yardımcı olan bir döngü arasındaki farkı oluşturur.
Katman 4: Yapay zeka yapay zekayı inceliyor
Güvenliğe özel olarak odaklanmış ayrı bir yapay zeka denetimi ekleyin; örneğin, tüm kod tabanını değil, yalnızca değiştirilen kodu güvenlik açıkları açısından inceleyen bir denetim. Bu, insan yargısının yerini almadan sürekli otomatik güvenlik denetimi sağlar ve insan inceleyicilere ulaşmadan önce her değişikliğe ek bir inceleme katmanı ekler.
Katman 5: CI kapılarında SAST, SCA ve DAST
Yapay zeka destekli bir geliştirme ortamında, SAST, SCA ve DAST seçenek olmaktan öte bir öneme sahiptir. Statik uygulama güvenlik testi (SAST) , kritik sorunları engellemek için bir CI geçidinde çalıştırılmalıdır. Bağımlılık ve gereksiz kod ele geçirme riskini gidermek için SCA çalıştırılmalıdır. Ve her kod satırını yazan ve okuyan bir geliştiricinin bile gözden kaçırabileceği niyet ve davranış arasındaki boşluğu yakalamak için çalışan uygulamaya DAST uygulanmalıdır. İşlem hattınız destekleyebiliyorsa her commit’te, çok fazla gürültüye neden olmuyorsa her gece ve özellikle her büyük sürümden önce bunları çalıştırmanız önerilir. Bu, düzeltmelerin uygulama kamuoyuna açıklanmadan önce yapılmasını sağlar.
Katman 6: İnsan güvenliği incelemesi
Evet, pahalı ama gerekli; insanın güvenlik yargısına her zaman ihtiyaç var. Örneğin, bir ödeme akışındaki farkı okumak, kimlik doğrulama mantığını incelemek veya bir ajan tabanlı iş akışının güven sınırlarını değerlendirmek için hala bir güvenlik mühendisine ihtiyaç var.
Katman 7: Çalışma zamanı savunmaları
Tehditleri tamamen tespit etmek ve ortadan kaldırmak zor olabilir ve bazen savunma sistemlerinizi aşabilirler. İzleme, anormallik tespiti ve olay müdahalesinde son savunma hattır. Yapay zeka destekli bir geliştirme ortamında, bunlar her zamankinden daha gereklidir. Çalışma zamanı yapay zeka sistemleri, geleneksel dağıtımlarda bulunmayan canlı saldırı yüzeyleri sunar; örneğin, çıkarım zamanında anlık enjeksiyon, model tedarik zinciri riskleri ve yıkıcı davranışlara yönlendirilebilen gerçek dünya izinlerine sahip ajan sistemleri.
Uzmanlar, kapsamlı testler oluşturmak için yapay zekayı kullansa da, her aşamada bilinçli güvenlik incelemeleri yapsa ve sorumlu yapay zeka kodlama uygulamalarını uygulamak için gerçek çabalar gösterse bile, güvenlik açıkları gözden kaçabiliyor. AI desteğiyle geliştirilmiş herhangi bir proje, geleneksel uygulama güvenliği araçları ile analiz edildiğinde yüzlerce zafiyet bulunabiliyor. Bu, yapay zeka destekli geliştirmeyi uygulama güvenliği taramasının yerine geçecek bir şey olarak görmenin kesinlikle yanlış olduğunu gösteren bir argüman.
Stratejik önceliğiniz: Uygulama güvenliği, yapay zekanın hızıyla aynı hızda gelişmelidir.
AI destekli kod geliştirmeye kurumsal yanıtınız, yalnızca araçlarla sınırlı kalmamalı. DevSecOps uygulamalarınız, AI’nın geliştirme ekiplerinizde ne kadar hızlı benimsendiğine paralel olarak gelişmesi gerekir.
- “Sola kaydırma” zorunluluğu artık daha da belirginleşti. Yapay zekanın ne kadar hızlı kod üretebildiği göz önüne alındığında, IDE içindeki gerçek zamanlı güvenlik taraması kritik bir ilk savunma hattı haline geldi. IDE tabanlı güvenlik taraması, yapay zeka kodlama asistanlarının benzeri görülmemiş bir hızda kod üretmesiyle birlikte, aşağıya doğru iletilen güvensiz bileşenlerin akışını en aza indirmeye yardımcı olur.
- Uçtan uca görünürlük pazarlık konusu olamaz. Geliştirme ekipleri, DevOps ekipleri ve Uygulama Güvenliği ekiplerinin, yazılım geliştirme yaşam döngüsünün her aşamasında güvenlik durumuna ilişkin net bir görüşe ihtiyaçları vardır. Bu, geliştiricinin masaüstünden derleme ve sürekli entegrasyon (CI) işlem hatlarına ve çalışma zamanına kadar uzanır. Bu görünürlük olmadan, riskleri etkili bir şekilde yönetemezsiniz. Yapay zeka geliştirme hızı arttıkça risk tespiti için zaman penceresi daralır ve görünürlüğü koruyamayan kuruluşlar, olayları önlemek yerine yönetmek zorunda kalırlar.
- Geliştirme kültürünüzdeki güvenlik anlayışı, yapay zekâ çıktısına duyulan örtük güvenle aktif olarak mücadele etmelidir. Yapay zekâ tarafından üretilen kodun, geliştirici tarafından yazılan koddan doğal olarak daha iyi olduğu düşüncesi iş riski oluşturmaktadır. Geliştiricileriniz, yapay zekâ çıktısını sorgulama, sonuçları doğrulama ve risklerle orantılı bir şüphecilik uygulama konusunda yetkilendirilmelidir. Stanford araştırması bunu kanıtladı: Yapay zekâya daha az güvenen katılımcılar daha güvenli kod ürettiler. Yapay zekâ çıktısını, yalnızca dağıtım gerektiren bitmiş bir ürün olarak değil, doğrulama gerektiren bir başlangıç noktası olarak ele alan bir kültür oluşturun.
Özetle, yapay zekâ kodlama asistanları sorun değil. Sorun, onları disiplinsiz bir şekilde kullanmak; yani kod incelemesi, otomatik test ve güvenlik taraması yapmamaktır. Yapay zekâ ile yazılım geliştirebilirsiniz ve geliştirmelisiniz de. Ancak yapay zekânın getirdiği tehditlere uygun güvenlik önlemleriyle geliştirme yapmalısınız.
Yapay zekânıza güvenin. Ancak ürettiği her şeyi doğrulayın.
Güvenli Yapay Zeka Kodlama Kontrol Listesini İndirin
Geliştirme ekiplerinin yapay zekâ destekli kodlama asistanlarını güvenli ve etkili bir şekilde kullanmalarına yardımcı olacak güvenlik kontrolleri, test gereksinimleri, inceleme süreçleri ve yönetim en iyi uygulamalarına dair pratik bir kontrol listesini bu bağlantıdan indirebilirsiniz.
Kaynak: https://www.blackduck.com/blog/ai-coding-assistants-cybersecurity-defense-in-depth.html
Uygulama Güvenliği Test araçları ile ilgili talepleriniz için aşağıdaki formu doldurarak Forcerta ile iletişime geçebilirsiniz.
Forcerta Bilgi Teknolojileri A.Ş ISO/IEC 27001:2022 standardının gereklerine uygunluğu açısından belgelendirilmiştir.