- Keamanan
- OWASP
- Checklist
10 Kerentanan Kode Teratas yang Wajib Dicari di 2026
Checklist praktis sepuluh kelas kerentanan yang layak dicek di setiap code review, dipetakan ke OWASP Top 10 dan CWE, lengkap dengan perbaikan satu baris.
· 9 menit baca · Lina Source LLC
Sebagian besar pembobolan masih berawal dari segelintir kelas bug yang sudah terkenal. Framework memang makin aman, tetapi kesalahannya berpindah tempat: ke handler API, background job, kode infrastruktur, dan kode perekat antarlayanan. Inilah daftar yang pertama kali kami cek di setiap audit, lengkap dengan CWE yang akan Anda lihat di laporan CodeAuditAgent.
1. Broken access control (CWE-639, CWE-862)
Temuan serius yang paling umum sejauh ini: sebuah endpoint memuat record berdasarkan ID tanpa memeriksa apakah record itu milik pemanggilnya. Autentikasi memberi tahu siapa seseorang; otorisasi harus dilakukan di setiap query.
// Scope every lookup to the owner
const invoice = await db.invoice.findFirst({
where: { id, userId: session.user.id },
});2. Injection (CWE-89, CWE-78)
SQL, perintah shell, dan ekspresi template yang dirakit dari string masih ada di mana-mana, biasanya di satu query yang ditulis manual demi performa. Gunakan query berparameter atau kirim argumen sebagai array; jangan pernah menggabungkan input ke dalam string.
3. Secret yang di-hardcode (CWE-798)
API key yang ter-commit ke repository, token testing yang ternyata aktif, private key di file konfigurasi. Pindahkan ke environment variable atau secret manager, dan rotasi semua yang pernah ter-commit: menghapus barisnya tidak menghapus riwayatnya.
4. Server-side request forgery (CWE-918)
Fitur apa pun yang mengambil URL dari pengguna, seperti webhook, pratinjau tautan, atau impor, bisa diarahkan ke jaringan internal atau endpoint metadata cloud Anda. Gunakan allowlist host, resolve lalu periksa IP-nya, dan blokir rentang privat.
5. Cross-site scripting (CWE-79)
Framework modern melakukan escaping secara default, jadi XSS kini bersembunyi di celah-celah pengecualian: prop HTML mentah, renderer markdown, dan URL yang ditaruh di atribut href. Sanitasi HTML dengan library yang teruji dan tolak URL javascript:.
6. Deserialisasi tidak aman dan eval (CWE-502, CWE-95)
Pickle, YAML load, Java object stream, dan eval dinamis mengubah data menjadi kode. Gunakan loader yang aman dan JSON yang divalidasi dengan skema sebagai gantinya.
7. Kriptografi lemah (CWE-327, CWE-330)
MD5 atau SHA-1 untuk password, IV statis, Math.random() untuk token. Gunakan hash password yang memang dirancang untuk itu (Argon2id, bcrypt, scrypt) dan sumber acak yang aman secara kriptografis.
8. Open redirect (CWE-601)
Parameter next atau returnTo yang menerima URL apa saja menjadikan domain Anda landasan tepercaya untuk phishing. Terima hanya path relatif dari origin yang sama.
9. Tidak ada rate limiting (CWE-307, CWE-770)
Login, reset password, OTP, dan setiap endpoint yang memakan biaya (email, SMS, panggilan AI) butuh batas per pengguna dan per IP. Tanpa itu, serangan brute force dan serangan tagihan membengkak jadi sangat mudah.
10. Kesalahan konfigurasi keamanan (CWE-16)
CORS wildcard dengan credentials, mode debug di production, stack trace yang terlalu detail, kebijakan bucket yang longgar. Hal-hal ini jarang terlihat seperti bug saat code review karena letaknya di konfigurasi, dan justru itulah alasan semuanya harus di-review seperti kode.
Cara menggunakan daftar ini
- Cek kelas 1 sampai 3 di setiap pull request; dampaknya paling besar dan paling mudah terlewat.
- Perlakukan konfigurasi infrastruktur dan CI sebagai kode yang ikut di-review.
- Catat CWE di setiap temuan agar perbaikan bisa dilacak dan tren bisa diukur.