Salah satu hal yang sering luput dari perhatian ketika sebuah project sudah lama tidak disentuh adalah dependency pihak ketiga yang diam-diam menua — dan seiring waktu, menjadi pintu masuk bagi celah keamanan yang sudah diketahui publik. Itulah yang saya temukan minggu ini, melalui kiriman email GitHub security alert digest, di salah satu repository GitHub saya, Dockerproject.

Temuan Awal
GitHub Dependabot menandai repository ini dengan status “known security vulnerabilities detected”. Setelah ditelusuri lebih dalam melalui GitHub Security Advisory dan Dependency Graph, sumbernya adalah file:
pesbuk/web/js/jquery-3.2.1.slim.min.js
File ini adalah bundel jQuery versi 3.2.1 yang di-vendor langsung ke dalam project (tidak dikelola lewat package manager seperti npm), sehingga tidak pernah ter-update secara otomatis.
Detail Vulnerability
| Item | Detail |
|---|---|
| CVE | CVE-2019-11358 |
| Advisory | GHSA-6c3j-c64m-qhgq |
| Jenis | Cross-Site Scripting (XSS) via Prototype Pollution |
| Severity | Medium (CVSS 6.1) |
| Versi terdampak | jQuery >= 1.1.4 dan < 3.4.0 |
| Versi perbaikan | jQuery 3.4.0 |
Inti masalahnya ada pada fungsi jQuery.extend(true, {}, ...). Jika sebuah objek sumber yang tidak disanitasi memiliki properti __proto__ yang enumerable, fungsi ini bisa “mencemari” Object.prototype bawaan JavaScript. Dalam skenario tertentu, ini bisa dimanfaatkan penyerang untuk menyisipkan skrip berbahaya ke halaman (XSS) — sebuah teknik yang dikenal sebagai prototype pollution.
