Belajar ExpressJS - CVE & Dependency Management
Episode 19 of 28

Belajar ExpressJS - CVE & Dependency Management

Mengelola keamanan dependency Express: mempelajari CVE nyata di ekosistem 2026, npm audit dan lockfile, dependabot, serta alur update dependency yang cepat dan aman.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Aplikasi Express kalian bukan hanya kode kalian — ia adalah kumpulan ratusan package dari npm, masing-masing dengan riwayat keamanannya sendiri. Episode 19 membahas sisi yang sering dilupakan: mengelola kerentanan dependency. Satu package dengan CVE yang di-ignore bisa menjadi pintu masuk ke server kalian.

Mengapa ini penting di 2026? Karena eksosistem Express baru saja diingatkan secara pahit: serangkaian CVE dirilis pada 2026 untuk package yang sangat populer. Episode ini memakai contoh nyata itu untuk mengajarkan alur yang benar: mendeteksi, menilai, memprioritaskan, dan memperbaiki kerentanan dependency.

CVE Nyata di Ekosistem Express (2026)

Pada pertengahan 2026, beberapa package yang dipakai bersama Express menerbitkan CVE — pengingat bahwa "populer" tidak sama dengan "aman":

PackageCVERilis
multerCVE-2026-5079Juni 2026
morganCVE-2026-5078Juni 2026
(dependency lain)CVE-2026-5038Juni 2026
body-parserCVE-2026-12590Juli 2026

Body-parser secara khusus menarik karena express.json() di balik layar memakainya — celah di body-parser berarti celah di setiap aplikasi Express yang memakai JSON body, yaitu hampir semua. Ini mengapa update rutin bukan pilihan: tanpa update, aplikasi kalian membawa kerentanan yang sudah diketahui publik dan bernomor resmi.

Warning

CVE di package populer bisa menyerang aplikasi yang tidak pernah menyentuh package itu secara langsung — body-parser adalah dependency transitif Express. Memahami dependency tree (kenapa package ini ada, siapa yang menariknya) adalah keterampilan penting saat menilai risiko CVE.

npm audit: Mendeteksi Kerentanan

Memindai Proyek

Audit dependency
npm audit
npm audit --omit=dev

npm audit membandingkan versi dependency kalian dengan database kerentanan dan mengelompokkan hasilnya:

Contoh output npm audit
found 2 vulnerabilities (1 moderate, 1 high) in 412 scanned packages
  1 high: body-parser <= 1.20.2 → CVE-2026-12590
  1 moderate: morgan <= 1.10.0 → CVE-2026-5078

Outputnya memberi tahu package mana, versi yang rentan, dan versi perbaikan yang tersedia. Dua kolom penting: severity (moderate/high/critical) dan path (apakah direct atau transitif).

Memperbaiki

Perbaiki otomatis
npm audit fix
npm audit fix --force
  • npm audit fix menaikkan ke versi yang aman tanpa breaking change — jalankan pertama.
  • --force bisa menaikkan mayor versi dan memicu breaking change — jangan asal; jalankan hanya setelah memahami dampaknya.

Tip

Audit harus menjadi gateway CI: jika npm audit menemukan severity tinggi/kritis, build gagal. Dengan begitu, kerentanan baru terdeteksi di PR, bukan setelah produksi diserang. Contoh workflow GitHub Actions kita praktikkan di episode 24.

Lockfile: Kunci Penguncian Versi

package-lock.json (dan bun.lock) berfungsi ganda untuk keamanan:

  • Reproduksibilitas: seluruh tim dan CI menginstall versi yang persis sama.
  • Deteksi tamper: npm memvalidasi hash package — perubahan tersembunyi pada package terdeteksi.

Jangan pernah menghapus lockfile. npm install tanpa lockfile dapat menghasilkan versi berbeda — termasuk versi yang sudah kena CVE setelah update registry.

Dependabot dan Alur Update

Dependabot

Dependabot (GitHub) memindai dependency dan membuat PR otomatis saat versi baru atau perbaikan keamanan dirilis:

.github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 5
    labels:
      - "dependencies"
    security-updates-only: true

Opsi security-updates-only: true fokus ke PR keamanan — Dependabot otomatis membuka PR saat versi aman tersedia untuk CVE yang terdeteksi.

Membaca PR Dependabot dengan Benar

PR dependabot sebaiknya dibaca dengan tiga pertanyaan:

  1. Apakah perubahan mayor? — mayor bisa berisi breaking change.
  2. Apakah package ini dipakai langsung? — transitif lebih aman untuk diupdate.
  3. Apakah ada changelog yang menyebut breaking? — baca sebelum merge.

Alur Update yang Aman

Update satu package yang aman
npm install morgan@1.10.1
npm run lint
npm test
npm audit

Pola pembaruan yang disarankan:

  • Update rutin terjadwal (bulanan) untuk semua dependency minor/patch.
  • Update keamanan segera — ikuti CVE, bukan jadwal.
  • Selalu validasi dengan lint + test setelah update; kenaikan mayor dipisah sebagai PR khusus.

Menilai Risiko CVE

Tidak semua CVE sama. Tiga pertanyaan untuk memprioritaskan:

  • Keterjangkauan: bisakah CVE ini dieksploitasi lewat permukaan aplikasi kita? (body-parser: ya — tiap request JSON. Package CLI: hanya jika dipakai di pipeline.)
  • Privilege yang dibutuhkan: butuh autentikasi atau tidak?
  • Ketersediaan exploit: apakah sudah ada exploit publik?

Severity CVE (CVSS) membantu, tapi bukan jawaban final — konteks aplikasi kalian yang menentukan prioritas. CVE high di package yang tidak pernah dijalankan bisa lebih rendah prioritasnya daripada CVE moderate di middleware yang menyentuh tiap request.

Common Pitfalls

Mengabaikan Severity Rendah

Kerentanan "low" bisa naik kelas saat peneliti menemukan jalur eksploitasi baru. Catat semua, prioritaskan high/critical.

Update Sembarangan Tanpa Test

Update mayor langsung di produksi tanpa lint/test adalah undangan breaking change. Selalu lewati gerbang validasi.

Percaya Semua PR Dependabot

PR dependabot aman untuk di-merge otomatis hanya untuk patch dan package yang tidak dipakai langsung. Mayor tetap perlu review.

Important

Keamanan dependency bukan sekali jadi: CVE baru terus muncul (seperti body-parser dan morgan di 2026). Jadikan audit dan update rutin berjalan, bukan reaksi saat insiden. Aplikasi Express yang sehat di produksi adalah yang selalu satu langkah di depan CVE terbaru.

Penutup

Episode 19 mengelola risiko dependency: mengenali CVE nyata ekosistem Express 2026, memindai dengan npm audit, mengunci versi lewat lockfile, mengotomasi PR keamanan dengan Dependabot, dan menilai prioritas CVE sesuai konteks aplikasi.

Inti yang harus dibawa pulang:

  • CVE 2026 nyata: multer CVE-2026-5079, morgan CVE-2026-5078, CVE-2026-5038, body-parser CVE-2026-12590 — update rutin adalah kewajiban.
  • npm audit mendeteksi; npm audit fix memperbaiki; --force butuh kehati-hatian.
  • Lockfile mengunci versi dan mendeteksi tamper — jangan pernah dihapus.
  • Dependabot mengotomasi PR keamanan; baca dengan tiga pertanyaan sebelum merge.
  • Prioritas CVE ditentukan konteks (keterjangkauan, privilege, exploit), bukan hanya skor CVSS.
  • Jadikan audit gateway CI agar kerentanan baru gagal sebelum merge.

Di episode 20 selanjutnya kita akan membangun rate limiting & DoS protection — express-rate-limit, slow-down, proteksi brute-force login, dan strategi menahan serangan denial-of-service. Sampai jumpa di episode 20!

Belajar ExpressJS - CVE & Dependency Management | Belajar ExpressJS