Trustwave’in Spiderlabs araştırmacıları, ChatGPT’nin kaynak kodunu ve kodu daha güvenli hale getirmek için önerilerini ne kadar iyi analiz edebildiğini test ettiler.
İlk testler, ChatGPT’nin, kod girdi verilerini tutmak için yeterli alan ayıramadığında meydana gelen koddaki arabellek taşmalarını ortaya çıkarıp çıkaramayacağına bakmayı içeriyordu. Araştırmacılar şunları söyledi: “Nasıl yanıt vereceğini görmek için ChatGPT’ye çok sayıda kod sağladık. Genellikle karışık sonuçlarla yanıt verdi.”
Kodun nasıl daha güvenli hale getirileceği sorulduğunda, ChatGPT’nin arabellek boyutunu artırmayı önerdiğini söylediler. ChatGPT tarafından yapılan diğer öneriler, veri girişi ve dinamik olarak bellek ayırma için daha güvenli bir işlevin kullanılmasını içerir. Araştırmacılar, ChatGPT’nin, dinamik bellek tahsisi kullanmak gibi, önerdiği düzeltmelerden herhangi birine dayalı olarak kodu yeniden düzenleyebileceğini buldu.
Araştırmacılara göre ChatGPT, örnek koddaki potansiyel sorunları belirlemede oldukça iyi bir iş çıkardı. “Bu örnekler, nispeten net oldukları için seçildi, bu nedenle ChatGPT’nin kendisine verilen kodun ötesinde çok fazla bağlam çıkarması gerekmeyecek” dediler.
Bununla birlikte, ona daha büyük kod blokları veya daha az basit sorunlar sağlarken, onları tespit etmede pek başarılı olmadı. Yine de araştırmacılar, insan programcıların daha karmaşık kodlardaki hataları ele alırken benzer sorunlar yaşayacağını belirtti. En iyi sonuçlar için, ChatGPT’nin, kodun amacını göstermek üzere bağlamsal bir yanıt elde etmek için daha fazla kullanıcı girdisine ihtiyacı olduğunu söylediler. Sınırlamalara rağmen, araştırmacılar bunun kaynak kod analizini desteklemek için kullanılabileceğine inanıyor.
Trustwave, statik analiz araçlarının koddaki güvenlik açıklarını belirlemek için yıllardır kullanılsa da, bu tür araçların daha geniş güvenlik yönlerini değerlendirme – bazen istismar edilmesi imkansız olan güvenlik açıklarını bildirme – açısından sınırlamaları olduğunu söyledi. Araştırmacılar, ChatGPT’nin daha fazla bağlamsal farkındalık gösterdiğini ve güvenlik risklerinin daha kapsamlı bir analizini kapsayan istismarlar oluşturabildiğini bildirdi. “Bu tür bir analiz için ChatGPT’yi kullanmanın en büyük kusuru, kodun arkasındaki insan düşünce sürecini yorumlayamamasıdır” diye uyardılar.
Trustwave’in tehdit istihbaratı yöneticisi Karl Sigler şunları söyledi: “ChatGPT kodlamada iyidir. Yeni başlayan bir programcıdan daha iyidir ve bir programcının en iyi arkadaşı olabilir.” Çok az sayıda geliştiricinin uygulamaları sıfırdan oluşturmaya başlaması nedeniyle, ChatGPT’nin onlara yazılım geliştirme sürecini tamamlamaları için bir yol sunduğunu da sözlerine ekledi. Örneğin, geliştiricilerin yeni programlama kitaplıklarında bulunan uygulama programlama arabirimlerini ve işlevselliği anlamalarına yardımcı olabileceğine inanıyor. İnsan dilini anlamak için tasarlandığından Sigler, ChatGPT’nin iş adamları ve geliştiriciler arasındaki toplantıların arkasında oturması için bir fırsat görüyor.
Microsoft kısa bir süre önce ChatGPT’nin, AI’nın tartışmayı takip ettiği ve notlar ve eylem noktaları aldığı Teams işbirliği aracıyla çalışan Copilot ürünüyle entegrasyonunu gösterdi. Sigler, böyle bir teknolojinin bir uygulama geliştirme projesi için resmi bir şartname oluşturmaya yardımcı olmak için uygulanabileceğine inanıyor.
Bu, bu tür tartışmalar sırasında kolayca ortaya çıkabilecek yanlış anlamaları önleyecektir. ChatGPT, teorik olarak, gönderilen kodu resmi şartnameye göre kontrol etmek ve hem müşterinin hem de geliştiricinin, teslim edilenler ile resmi şartnameyi anlamaları arasında sapmalar olup olmadığını görmelerine yardımcı olmak için kullanılabilir. Sigler, insan dilini anlama yeteneği göz önüne alındığında, ChatGPT’yi spesifikasyon belgelerinde ve uyumluluk politikalarında yanlış yorumlamayı kontrol etmeye yardımcı olması için kullanma potansiyeli olduğunu söyledi.
Trustwave’den araştırmacılar, ChatGPT’nin özellikle iskelet kodu ve birim testleri oluşturmak için yararlı olabileceğini, çünkü bunların minimum miktarda bağlam gerektirdiğini ve daha çok aktarılan parametrelerle ilgilendiklerini söyledi. Bunun, ChatGPT’nin testlerinde çok başarılı olduğu bir görev olduğunu belirttiler. “Birçok farklı talebe cevap verebilecek kadar esnek, ancak kendisinden istenen her işe uygun olması gerekmiyor” dediler.
Önümüzdeki iki ila beş yıl içinde Sigler, ChatGPT’nin ve diğer üretken yapay zeka sistemlerinin yazılım geliştirme yaşam döngüsünün bir parçası olmasını bekliyor. Bunun günümüzde nasıl kullanıldığına bir örnek, IDA ikili kod analiz aracı için bir eklentidir. IDA Pro, ikili kodu insan tarafından okunabilir kaynak koduna dönüştürür.
Bununla birlikte, dokümantasyon olmadan, ne için tasarlandığını anlamak için kaynak kodu tersine çevirmek uzun zaman alabilir. Gepetto adlı bir Github projesi, OpenAI’nin gpt-3.5-turbo büyük dil modelini kullanarak bir Python betiği çalıştırıyor. Örneğin, gpt-3.5-turbo’dan derlenmiş koddaki bir işlevin ne yaptığını açıklamasını istemek için kullanılabilir.
Sigler’e göre ChatGPT, açık kaynak topluluğunun güvenli ve yönetilebilir kod sağlamak için gereken denetim çalışmalarının bir kısmını otomatikleştirmesine de olanak tanıyor.