Skip to content

[TASK-SIPT-SECURITY-AUDIT-DEPS] Upgrade Driver Redis ioredis v5 dan Patch Kerentanan Keamanan Dependensi Transitif ​

Modul: SIPT / PAB | Tipe: Maintenance / Security Patch | Stage Saat Ini: DEVELOPMENT | Tanggal Dokumen: 2026-08-28

DEVELOPMENT STAGE

Dokumen ini sedang berada dalam tahap DEVELOPMENT. Pembaruan driver Redis dan patching dependensi telah diverifikasi pada lingkungan pengembangan (Development) dan menunggu proses promosi rilis ke Staging.


1. Informasi Tugas & Referensi Bisnis ​

  • Task ID / Nomor Referensi: TASK-SIPT-SECURITY-AUDIT-DEPS

  • Sumber Instruksi: Pemeliharaan Keamanan Dependensi & Remediasi CVE

  • Dokumen Referensi / Lampiran: —

  • Task / Dependensi Terkait (Cross-Service): —

  • Modul Terkait: SIPT / PAB

  • Service / Repository: sipt-backend

  • PIC Pengembang: Hermansyah Efendi

  • Latar Belakang & Ringkasan Kebutuhan: Pemindaian rutin keamanan dependensi mendeteksi sejumlah kerentanan keamanan (vulnerabilities) pada transitive dependencies pihak ketiga di file package-lock.json (seperti paket axios, body-parser, dan brace-expansion). Selain itu, library Redis client yang digunakan (ioredis) masih tertahan di versi legacy v4.17.3 yang memiliki keterbatasan kompatibilitas terhadap arsitektur Redis Cluster modern dan implementasi mesin memori baru (DragonflyDB). Dilakukan upgrade ioredis ke major release v5.6.1 serta remediasi keamanan paket via npm audit fix guna memitigasi potensi celah eksploitasi pada production runtime.

  • Ruang Lingkup & Rincian Sub-Pekerjaan (Technical Scope & Milestones):

    • [x] Upgrade library ioredis dari versi ^4.17.3 ke ^5.6.1 pada package.json dan package-lock.json
    • [x] Remediasi CVE keamanan dengan patching versi transitive dependencies (axios ke 1.20.0, body-parser ke 1.20.6, brace-expansion ke 5.0.9)
    • [x] Verifikasi kompatibilitas backward helper Redis dan cache service pasca-upgrade major ioredis v5
    • [x] Pencatatan entri perubahan dependensi pada CHANGELOG.md

2. Deployment Lifecycle ​

#EnvironmentTanggal & WaktuPICStatusCatatan
1Development2026-08-28 11:32Hermansyah EfendiDEPLOYEDBranch: development (Commit: 816c79df .. 26ac527e)
2Staging (UAT)——PENDING—
3Production——PENDING—

Riwayat Update Log ​

TanggalEnvironmentPerubahanPIC
2026-08-28DevelopmentInitial log created — upgrade ioredis v5, remediasi CVE npm audit, dan verifikasi test suite cache/redisHermansyah Efendi

3. Analisis Teknis & Rincian Perubahan ​

  • Alur Logika & Bisnis:

    • Peningkatan Driver Redis (ioredis v5): Library ioredis dinaikkan dari ^4.17.3 ke ^5.6.1. Versi ini membawa peningkatan performa connection pooling, penanganan auto-reconnect yang lebih tangguh saat terjadi node failover pada Redis Cluster, serta native support untuk konfigurasi cluster modern dan mesin kompatibel Redis seperti DragonflyDB.
    • Remediasi CVE Keamanan Paket (package-lock.json): Menyelesaikan celah keamanan (vulnerabilities) pada paket axios, body-parser, dan brace-expansion melalui resolusi dependency lockfile tanpa mengubah fungsionalitas maupun API contracts aplikasi.
    • Verifikasi Backward Compatibility: Memastikan modul internal app/helpers/redis.js dan app/services/cache_service.js (beserta fungsi wrapper get, set, del, dan pipeline) tetap bekerja deterministik tanpa perubahan signature fungsi.
  • Perubahan Database (DDL / DML):

    sql
    -- Tidak ada perubahan skema database (DDL/DML) untuk task ini.
    -- Perubahan murni pada manifest dependensi runtime (package.json & package-lock.json).
  • Kontrak API & Response Payload: Tidak ada penambahan atau perubahan kontrak API. Perubahan murni pada manifest dependensi project dan runtime engine caching.


4. Bukti Teknis (Technical Proof & Audit Trail) ​

  • Repository: sipt-backend
  • Branch Utama: development
  • Merge Request / PR: -

Daftar Commit Terkait (Multi-Commit Trail) ​

Commit IDBranchAuthorTanggal & JamRingkasan Perubahan
816c79df82afbded4d46915f44551c6648561853developmentHermansyah Efendi2026-08-07 16:06chore(deps): upgrade ioredis to v5 and fix audit vulnerabilities
8b6720cea76ef24124588172a99eef60e91f67bedevelopmentHermansyah Efendi2026-08-28 11:31chore(deps): fix npm audit vulnerabilities in package-lock.json
26ac527e54aa6d72c05681084bc3307cbb33a422developmentHermansyah Efendi2026-08-28 11:32docs(changelog): record dependency audit fix in unreleased entries

Cuplikan Kode / Implementasi Inti ​

json
// package.json (Upgrade Driver Redis)
{
  "dependencies": {
    "express": "^4.18.2",
-   "ioredis": "^4.17.3",
+   "ioredis": "^5.6.1",
    "jsonwebtoken": "^9.0.2"
  }
}
json
// package-lock.json (Remediasi CVE Dependensi Transitif)
{
  "node_modules/axios": {
-   "version": "1.16.1",
+   "version": "1.20.0"
  },
  "node_modules/body-parser": {
-   "version": "1.20.5",
+   "version": "1.20.6"
  },
  "node_modules/brace-expansion": {
-   "version": "5.0.6",
+   "version": "5.0.9"
  }
}

5. Bukti Verifikasi Pengujian (QA / Unit Test / API Verification) ​

A. Verifikasi Unit Test (Development Stage) ​

  • Test Suite Files:
    • tests/helpers/cache-service.test.js
    • tests/helpers/redis.test.js
  • Status Eksekusi CLI: PASSED (50/50 tests passed)
javascript
// tests/helpers/cache-service.test.js & redis.test.js
// Memastikan operasi get, set, del, dan pipeline ioredis v5 berfungsi normal
it('operates redis commands cleanly using upgraded ioredis client', async () => {
  // Test suite helper Redis & cache service passed 100%
});
text
 RUN  v4.1.11 D:/WORK/LNSW/sipt-backend

 ✓ tests/helpers/cache-service.test.js (26 tests) 21ms
 ✓ tests/helpers/redis.test.js (24 tests) 20ms

 Test Files  2 passed (2)
      Tests  50 passed (50)
   Start at  09:48:52
   Duration  389ms (transform 167ms, setup 0ms, import 243ms, tests 41ms, environment 0ms)

B. Panduan Pengujian QA & Verifikasi Staging (QA Playbook) ​

  • Cakupan / Surface Pengujian: Worker / DB / Cron Only & API / Postman Only (Smoke Testing)
  • Kebutuhan Akses / Role Akun: Akses runner / server deployment & instans Redis
  • Hasil Pengujian UAT: PENDING
  • Catatan QA: —
Skenario Pengujian QA (Test Scenarios) ​
  1. Skenario 1 — Verifikasi Integritas Instalasi Dependensi (Build Verification):

    • Pre-kondisi: Menghapus folder node_modules lokal atau menjalankan clean build di server Staging.
    • Trigger / Request: Jalankan perintah instalasi dependensi bersih:
      bash
      npm ci
      npm run test:only
    • Ekspektasi Response: Instalasi selesai tuntas tanpa dependency resolving conflict. Seluruh unit test berjalan PASSED.
    • Verifikasi Database / Log: Tidak ada peringatan deprecation kritis saat inisialisasi koneksi runtime Node.js.
  2. Skenario 2 — Verifikasi Operasi Cache & Session Redis:

    • Pre-kondisi: Instans / cluster Redis aktif.
    • Trigger / Request: Lakukan request login atau request yang memicu caching (misal pencarian data referensi atau pembuatan submission cooldown).
    • Ekspektasi Response: Data tersimpan dan terbaca dari cache tanpa error koneksi socket.
    • Verifikasi Database / Log: Log koneksi menunjukkan Connected to Redis / Connected to Redis Cluster tanpa disconnect/retry loop.
Bukti Response Verifikasi Staging (Diisi saat UAT) ​
json
{
  "status": "PENDING",
  "note": "Menunggu deployment Staging untuk eksekusi skenario uji QA."
}

Single Source of Truth (SSOT) Arsitektur & Perubahan Teknis Backend