Vibe kodlama, geliştirici toplulukları aracılığıyla süpüren en son trend. Bir kavramı tanımlama, bir yapay zekaya besleme ve LLM’nin (büyük dil modeli) kodu sadece titreşime dayalı olarak göstermesine izin verme sanatıdır. Alıntı, “Vibes’e tam olarak veriyorsunuz, üstelleri kucaklıyorsunuz ve kodun var olduğunu unutuyorsunuz.”
Ve daha fazla geliştirici, kodlama yoluyla yollarını “havaya kaldırmak” için yapay zekaya güvendikçe, yeni bir Böcek Ödül Avına giriyoruz. Neden? AI tarafından üretilen kod genellikle işlevsel göründüğünden, hatta çalışır, ancak ince (ve bazen felaket) güvenlik kusurlarını gizler.
Kod oluşturmak için büyük bir dil modeli (LLM) isteyen bir geliştirici
“Vibe Coding” in neden bir hacker’ın rüyası olduğunu ve onu nasıl kullanabileceğinizi bozalım.
1) Bir istemi sağlarsınız
Bir geliştirici doğal dilde ne istediklerini açıklar, örneğin, “Kullanıcı girişini alan ve bir veritabanına kaydeden bir Python komut dosyası oluşturun.” Güvenlik açıklarını önlemek için buradaki sanat, uygulamanın işlevselliklerini olabildiğince kapsamlı bir şekilde tanımlamak ve güvenlik sorunlarını önlemek için belirli işlevlerin nasıl uygulanacağını belirtmektir.
Vibe kodlamasının güvenlik komplikasyonları
2) AI “Vibes” Out Kod
Sahip olduğu tüm bilgileri kullanarak, AI modeli daha sonra kodu oluşturur, çoğu zaman bağlam güvenlik açısından yoksundur. Bununla ilgili farklı sorunlar var çünkü LLM’ler tonlarca kod depoları üzerinde eğitiliyor, ancak bu depolarda da güvenlik açıkları. Tabii ki, bir yapay zekaya belirli istemler yapıldığında ve kesinlikle bir veya daha fazla bilgi istemi ile tüm uygulamalar oluşturma eğiliminde oldukları için vibe kodlama ile, uygulamanızda güvenlik açıkları sağlayacaksınız.
3) Geliştirici, dağıtır
Çoğu vibe kodlayıcı, AI’nın en iyi “bilir” ve koda güvendiğini varsayar. Savunmasız kodun üretime itilmesine neden olur
Girdi Sanitizasyonu Yok
Çoğu LLM, güvenli bir uygulamaya sahip olmanın en önemli temellerinden biri olan Giriş Seritizasyonunu dikkate almaz. Bu, SQLI ve XSS gibi enjeksiyon saldırılarını mümkün kılar.
Yanlış erişim kontrolleri
Bir LLM çıktısının başka bir örneğine bakalım. Bu kez Openai, Antropik vb. Bir yönetici kontrol paneli oluşturmasını isteyeceğiz, işte bizim istemimiz:
Make me an app that has a login and an admin panel in React. Make it pretty.
Yapay zeka oluşturulan kodda yanlış erişim kontrolleri
Başlangıçta kod iyi görünüyor, ancak daha derine baktığımızda, Yönetici Gösterge Tablasına ulaşmak için yapılan tek kontrolün, LocalStorage’daki bir özelliğin ayarlanıp ayarlanmadığını kontrol etmek olduğunu görüyoruz. true
(bu son kullanıcı tarafından kolayca manipüle edilebilir). Kimlik doğrulama tamamen istemci tarafında yapıldığından bu kod gerçekçi değildir. Buna tercih edilen yaklaşım, sunucu tarafı kimlik doğrulama ve yetkilendirme mekanizmalarını uygulamak ve tercihen bir JSON Web jetonu (JWT) gibi bir jeton kullanmak olacaktır.
Kullanıcı oturum açtığında, o kullanıcı için jeton oluşturulur ve kısıtlı bir sayfaya erişmeye çalışırken, jeton talepte verilir, sunucu tarafında doğrulanır ve geçerli olursa, sayfa kullanıcı tarafından erişilebilir hale getirilir.
Hassas gizli pozlama (sert kodlanmış kimlik bilgileri)
Çoğunlukla yeni başlayanları ve teknik olmayan geçmişlerden gelen insanları etkileyen başka bir örneğe bakalım. Çoğu LLM’nin ana hedefi, isteminize bir cevap vermektir ve bu genellikle güvenlik en iyi uygulamalarına uymayı içermez.
Bu durumda, ChatGPT’den PHP’de veritabanımızda nesneleri depolayan bir uygulama geliştirmemize yardımcı olmasını istedik:
I need to implement saving a flower object into a database in php.
AI tarafından üretilen kodda hassas gizli pozlama (sert kodlanmış kimlik bilgileri)
Gördüğümüz gibi, AI, veritabanı kimlik bilgilerini ana uygulama mantığının bulunduğu dosyada sabit kodlamamız gerektiğini söylüyor. Yeni gelenler, hassas sırları güvenli ortamlarda depolamak gibi güvenlik en iyi uygulamalarına aşina olmayacak ve bunun yerine sundukları örneği takip edecekler. Aynı dosyanın erişilebilir hale getirilmesi, örneğin, genel bir GitHub deposuna itilirse, web kök klasörüne yerleştirilirse veya başka herhangi bir yolla, esasen kötü amaçlı kullanıcıların veritabanıyla bir bağlantı başlatmasına ve tam kontrol kazanmasına izin verir.
Bu uygulamalardan yararlanmak söz konusu olduğunda, çok basit. Bu uygulamaların çoğu, şimdiye kadar gördüğümüz gibi en iyi uygulamalara uymuyor. İşte bu uygulamalara nasıl saldırılacağına dair bazı örnekler.
Yaygın AI tarafından oluşturulan kod kalıplarını arayın
AI’nın kod oluşturma şekline bakarsak, bazı önemli benzerlikler ve kalıplar görebiliriz. Kendinizi bu kalıplara aşina olmak, bunun gibi uygulamaları anında tanımanıza yardımcı olabilir. İşte dikkat edilmesi gereken birkaç özellik:
Aşırı genel değişken adları (temp1, veri2).
Kodun nasıl çalıştığını açıklayan yorumlar: AI, kritik güvenlik kontrolleri eksikken temel mantığı aşırı açıklama eğilimindedir.
Hata işleme eksikliği (deneyin/yakalama eksik): AI çoğu zaman uygun hata işlemeyi yapmayacaktır; Bu nedenle, bir saldırganın sistemin nasıl çalıştığı hakkında daha derin bir fikir edinmesi ilginç olan genel hata mesajlarının atılmasını sağlarsınız.
Eski kütüphanelere aşırı bağımlılık: AI, bilinen güvenlik açıklarına sahip kullanımdan kaldırılmış kütüphaneler önerebilir (örn. Mongoose’un eski bir versiyonu).
“Açık” kusurları test edin
Saqly? Atlamak
' OR 1=1--
her girdiye.XSS? Bırak
Veya çok dilli bir dize ve bir açılır pencere verip vermediğini veya uygulamayı bozan bir sembol bulmayı başarıp bulmadığınızı görün.
İdor? Değiştirmek
/user?id=1
ile/user?id=2
.Eksik Giriş Doğrulama Kontrol Edin
Sızdıran hatalar arayın
API Anahtar Sızıntıları
Mantık hataları
Burada son zamanlarda yaptığımız bu yazıda, tam olarak böyle bir mantık hatasının nasıl görünebileceğini gösteriyor. Yapay zeka bağlamdan yoksundur ve doğum tarihinin kullanıcının istediği kadar değiştirilebileceğini ve her gün geçerli bir kupon koduna neden olmasını içermez.
Gördüğümüz gibi, bu oluşturulan uygulamalarda bulunan güvenlik açıkları çoğu zaman çok kolaydır ve uygulama ne kadar büyük olursa, daha fazla potansiyelden yararlanılması gerekir. Bunların çoğu yeni Hackademy’mizde.
Sabit kodlu sırlar için tarama
Gördüğümüz gibi, AI sert kodlanmış sırlara sahip ve herhangi bir ortam değişkenini veya gizli yöneticiyi kullanmayı önermeyen kod oluşturmayı sever. Bu bize, örneğin GitHub gibi gizli bir tarama yapma fırsatı verir veya belki de ön uçta sızdırıyor (örnek olarak AWS S3 kimlik bilgileri olan JavaScript dosyaları).
AI tarafından oluşturulan kod ana akım haline geldikçe Hata avcıları:
Algılamayı otomatikleştirin AI kod kalıpları.
Düşük asılı meyveye öncelik verin (SQLI, XSS, Sırlar).
Github’ı Monitör Yeni itilmiş AI projeleri için.
Geliştiriciler her zaman AI tarafından oluşturulan kodu, özellikle güvenlik açısından kritik parçaları gözden geçirmelidir. Her kod satırının gözden geçirildiğinden ve yukarıda belirtilen düşük asılı meyve güvenlik açıklarının halledildiğinden emin olun. Bu, OWASP gibi endüstri standart kılavuzlarını takip ederek yapılabilir: https://cheatsheetseries.owasp.org/
Vibe kodlu uygulamalarda güvenlik açıklarını nasıl avlayacağınızı öğrendiniz … şu anda, becerilerinizi test etme zamanı! Intigriti’deki 70+ genel böcek ödül programlarımıza göz atın ve kim bilir, belki bir sonraki ödülünüz bizimle kazanılacak!
Mutlu avcılık. Vibe güdümlü güvenlik açıkları dönemi burada.