
Peneliti dari Spiderlabs Trustwave telah menguji seberapa baik ChatGPT dapat menganalisis kode sumber dan sarannya untuk membuat kode lebih aman.
Tes awal melibatkan melihat apakah ChatGPT bisa mengungkap buffer overflows dalam kode, yang terjadi saat kode gagal mengalokasikan ruang yang cukup untuk menyimpan data masukan. Para peneliti berkata: “Kami memberi ChatGPT banyak kode untuk melihat bagaimana tanggapannya. Itu sering ditanggapi dengan hasil yang beragam.”
Ketika ditanya bagaimana membuat kode lebih aman, mereka mengatakan bahwa ChatGPT menyarankan untuk menambah ukuran buffer. Rekomendasi lain yang dibuat oleh ChatGPT termasuk menggunakan fungsi yang lebih aman untuk memasukkan data dan mengalokasikan memori secara dinamis. Para peneliti menemukan bahwa ChatGPT dapat memperbaiki kode berdasarkan perbaikan apa pun yang disarankannya, seperti menggunakan alokasi memori dinamis.
Menurut para peneliti, ChatGPT melakukan pekerjaan yang cukup baik mengidentifikasi potensi masalah dalam kode sampel. “Contoh-contoh ini dipilih karena relatif tidak ambigu, sehingga ChatGPT tidak perlu menyimpulkan banyak konteks di luar kode yang diberikan,” kata mereka.
Namun, ketika memasoknya dengan blok kode yang lebih besar atau masalah yang tidak terlalu mudah, itu tidak berhasil dengan baik dalam menemukannya. Namun demikian, para peneliti mencatat bahwa pemrogram manusia akan memiliki masalah serupa dalam mengatasi kesalahan dalam kode yang lebih kompleks. Mereka mengatakan bahwa untuk hasil terbaik, ChatGPT membutuhkan lebih banyak input pengguna untuk mendapatkan respons kontekstual untuk menggambarkan tujuan kode. Terlepas dari keterbatasannya, para peneliti yakin ini dapat digunakan untuk mendukung analisis kode sumber.
Trustwave mengatakan bahwa meskipun alat analisis statis telah digunakan selama bertahun-tahun untuk mengidentifikasi kerentanan dalam kode, alat tersebut memiliki keterbatasan dalam hal kemampuannya untuk menilai aspek keamanan yang lebih luas – terkadang melaporkan kerentanan yang tidak mungkin dieksploitasi. Para peneliti melaporkan bahwa ChatGPT menunjukkan kesadaran kontekstual yang lebih besar dan mampu menghasilkan eksploit yang mencakup analisis risiko keamanan yang lebih komprehensif. “Kelemahan terbesar saat menggunakan ChatGPT untuk jenis analisis ini adalah tidak mampu menafsirkan proses pemikiran manusia di balik kode,” mereka memperingatkan.
Karl Sigler, manajer intelijen ancaman di Trustwave, berkata: “ChatGPT OK dalam kode. Ini lebih baik daripada programmer junior dan bisa menjadi sahabat programmer.” Dia menambahkan bahwa karena sangat sedikit pengembang yang mulai membuat aplikasi dari awal, ChatGPT menawarkan cara bagi mereka untuk melengkapi proses pengembangan perangkat lunak. Misalnya, dia yakin ini dapat membantu pengembang memahami antarmuka pemrograman aplikasi dan fungsionalitas yang tersedia di pustaka pemrograman baru. Mengingat telah dirancang untuk memahami bahasa manusia, Sigler melihat peluang bagi ChatGPT untuk duduk di belakang pertemuan antara pebisnis dan pengembang.
Microsoft baru-baru ini mendemonstrasikan integrasi ChatGPT dengan Kopilotnya produk berjalan dengan alat kolaborasi Teams, tempat AI melacak diskusi, dan membuat catatan serta poin tindakan. Sigler percaya teknologi tersebut dapat diterapkan untuk membantu menghasilkan spesifikasi formal untuk proyek pengembangan aplikasi.
Ini akan menghindari kesalahpahaman yang dapat dengan mudah menyusup selama diskusi semacam itu. Secara teori, ChatGPT dapat digunakan untuk memeriksa kode yang dikirimkan terhadap spesifikasi formal dan membantu klien dan pengembang untuk melihat apakah ada penyimpangan antara apa yang telah disampaikan dan pemahaman mereka tentang spesifikasi formal. Mengingat kemampuannya untuk memahami bahasa manusia, Sigler mengatakan ada banyak potensi untuk menggunakan ChatGPT untuk membantu memeriksa kesalahan interpretasi dalam dokumentasi spesifikasi dan kebijakan kepatuhan.
Para peneliti dari Trustwave mengatakan ChatGPT dapat sangat berguna untuk menghasilkan kode kerangka dan pengujian unit karena memerlukan jumlah konteks yang minimal dan lebih memperhatikan parameter yang diteruskan. Ini, kata mereka, adalah tugas yang diunggulkan ChatGPT dalam pengujian mereka. “Cukup fleksibel untuk dapat menanggapi banyak permintaan berbeda, tetapi belum tentu cocok untuk setiap pekerjaan yang diminta,” kata mereka.
Selama dua hingga lima tahun ke depan, Sigler berharap ChatGPT, dan sistem AI generatif lainnya, menjadi bagian dari siklus hidup pengembangan perangkat lunak. Salah satu contoh bagaimana ini digunakan saat ini adalah plugin untuk alat analisis kode biner IDA. IDA Pro mengubah kode biner menjadi kode sumber yang dapat dibaca manusia.
Namun, tanpa dokumentasi, diperlukan waktu lama untuk merekayasa balik kode sumber untuk memahami tujuan rancangannya. A Proyek Github, yang disebut Gepetto, menjalankan skrip Python, menggunakan model bahasa besar gpt-3.5-turbo OpenAI, yang menurut pengelola proyek dapat memberikan makna pada fungsi yang didekompilasi oleh IDA Pro. Misalnya, ini dapat digunakan untuk meminta gpt-3.5-turbo untuk menjelaskan apa fungsi dalam kode yang didekompilasi.
Menurut Sigler, ChatGPT juga memungkinkan komunitas sumber terbuka untuk mengotomatiskan beberapa upaya audit yang diperlukan untuk mempertahankan kode yang aman dan dapat dikelola.