Saya Membangun Alat Keamanan. Alat Itu Menemukan Celah Kritis pada Dirinya Sendiri.

Saya sedang membangun penganalisis keamanan kode. Saya menamakannya vibeanalyzer.

Tujuannya sederhana. Banyak orang sekarang melakukan "vibe-code." Mereka membiarkan agen AI menulis kode. Kodenya terlihat bersih. Pengujiannya berhasil. Namun pengembang tidak tahu apa yang sebenarnya ada di dalam proyek tersebut.

Sebelum saya terjun sepenuhnya, saya melakukan sesuatu yang seharusnya sudah saya lakukan sejak lama. Saya memeriksa apakah alat-alat yang sudah ada telah menyelesaikan masalah ini. Ternyata sudah. Alat-alat seperti Semgrep, CodeQL, dan Snyk jauh lebih baik daripada saya.

Saya menjalankan Semgrep pada proyek saya sendiri. Hasilnya menjadi sebuah pengingat realitas.

Semgrep menemukan enam masalah pada dependensi saya:

• Satu masalah kosmetik terkait pilihan hash. • Dua masalah dengan tingkat keparahan Tinggi (High) di esbuild dan vite. • Tiga masalah dengan tingkat keparahan Menengah (Medium) yang melibatkan path traversal. • Satu masalah Kritis (Critical) di vitest.

Masalah vitest tersebut adalah kerentanan path traversal. Hal ini dapat memungkinkan seseorang membaca atau mengeksekusi file di luar proyek. Saya sendiri yang memasukkan dependensi tersebut.

Bagaimana mungkin sebuah alat keamanan memiliki kerentanan kritis?

Jawabannya adalah rantai pasokan (supply chain). Kode saya mungkin jujur. Namun alat-alat yang saya gunakan untuk membangunnya tidak selalu aman. Jika saya melewatkan hal ini saat membangun alat keamanan, pengembang biasa tidak akan punya peluang sama sekali untuk menemukannya.

Inilah alasan mengapa saya masih terus membangun.

Alat-alat yang sudah ada seperti Semgrep menemukan pola bahaya. Mereka menemukan kerentanan yang sudah diketahui. Namun mereka tidak memahami niat (intent). Mereka tidak tahu apa yang sebenarnya seharusnya dilakukan oleh kode Anda.

Mereka tidak dapat membedakan apakah sebuah fungsi itu aman tetapi menyelesaikan masalah yang seharusnya tidak ada dalam proyek Anda.

Saya menyebut ini sebagai intent gap. Ini adalah jarak antara kode dan tujuannya.

Vibeanalyzer berfokus pada celah ini. Alat ini menanyakan niat proyek dan hal-hal yang bukan merupakan tujuannya (non-goals). Alat ini menetapkan pembatas (guardrails). Saat AI mengevaluasi kode, ia mengetahui tujuannya. Ia tahu apa yang di luar batas.

Saya telah menyelesaikan bagian pemuatan niat (intent loading). Saya sudah memiliki analisis TypeScript dasar dan grafik struktur folder. Selanjutnya, saya harus membangun lapisan AI. Saya tidak tahu apakah AI benar-benar dapat mengevaluasi kode berdasarkan niat. Ia mungkin hanya akan menciptakan alarm palsu. Saya akan membangunnya secara terbuka untuk mengetahuinya.

Saya telah memperbarui dependensi saya dan membersihkan bug yang diketahui. Namun celah yang tidak diketahui dan kesalahan logika tetap ada. Itulah mengapa pekerjaan ini terus berlanjut.

Sumber: https://dev.to/stkremen/im-building-a-code-security-analyzer-a-security-tool-found-a-critical-in-it-4b77

Komunitas pembelajaran opsional: https://t.me/GyaanSetuAi