Skip to content

fix: security update#1544

Merged
affandii06 merged 7 commits into
devfrom
fix/update_security
May 20, 2026
Merged

fix: security update#1544
affandii06 merged 7 commits into
devfrom
fix/update_security

Conversation

@pandigresik
Copy link
Copy Markdown
Contributor

PR Security Update - Dependency Vulnerability Patches

Deskripsi

Pembaruan keamanan untuk memperbaiki kerentanan kritis pada dependency PHP dan JavaScript yang digunakan dalam OpenDK. Perubahan ini mencakup upgrade versi pada package yang memiliki CVE yang telah dipublikasikan.

Why: Beberapa dependency yang digunakan memiliki kerentanan keamanan yang dapat dieksploitasi untuk Remote Code Execution (RCE), Server-Side Request Forgery (SSRF), Cross-Site Scripting (XSS), Code Injection, dan Denial of Service (DoS).


Perubahan yang Dilakukan

1. PHP Dependencies (composer.lock)

Package Sebelum Sesudah Alasan
phpoffice/phpspreadsheet 1.30.1 1.30.4 Patch untuk 4 CVE keamanan

CVE yang diperbaiki:

  • CVE-2026-34084 (Critical) - SSRF/RCE via PHP stream wrappers (phar://, ftp://, ssh2.sftp://) pada IOFactory::load(). Attacker dapat melakukan deserialization untrusted data dan eksekusi kode arbitrer.
  • CVE-2026-35453 (High) - XSS pada HTML generation ketika cell menggunakan custom number format dengan @ text placeholder.
  • CVE-2026-40863 (High, CVSS 7.5) - CPU DoS via unbounded row index pada SpreadsheetML XML reader. File XML kecil (~300 bytes) dapat menyebabkan CPU exhaustion.
  • CVE-2026-40902 (High, CVSS 7.5) - CPU DoS via unbounded row number pada XLSX reader. File XLSX 1.6KB dapat memicu ~1 miliar iterasi.

2. JavaScript Dependencies (package-lock.json)

Package Sebelum Sesudah Alasan
lodash 4.17.23 4.18.1 Patch untuk Code Injection & Prototype Pollution
postcss 8.5.6 8.5.14 Patch untuk XSS via unescaped </style>
brace-expansion 2.0.2 2.1.0 Minor update
fast-uri 3.1.0 3.1.2 Minor update

CVE yang diperbaiki:

  • CVE-2026-4800 (High, CVSS 8.1) - Arbitrary Code Injection pada lodash via _.template imports key names. Incomplete fix dari CVE-2021-23337.
  • CVE-2026-2950 (High) - Prototype Pollution via array path bypass pada _.unset dan _.omit.
  • CVE-2026-41305 (Medium, CVSS 6.1) - XSS pada PostCSS via unescaped </style> dalam CSS stringify output.

Alasan Perubahan

Branch fix/update_security merupakan akumulasi dari beberapa merge PR yang berfokus pada perbaikan keamanan:

  1. WAF Blocking Prevention - Perubahan method DataTables dari GET ke POST pada berbagai menu (Kependudukan, Kecamatan, Finansial, Kesehatan, Program Bantuan, Pengaturan, SIKEMA) untuk mencegah blocking oleh Web Application Firewall.

  2. Permission System - Penerapan sistem permission berbasis Spatie untuk kontrol akses yang lebih granular.

  3. Dependency Security Updates - Upgrade package yang memiliki kerentanan keamanan yang telah dipublikasikan sebagai CVE.


Dampak Perubahan

Positive Impact

  • Menghilangkan kerentanan RCE/SSRF pada processing file spreadsheet
  • Mencegah XSS pada output CSS dan HTML generation
  • Menghilangkan vektor Code Injection pada template processing
  • Mencegah DoS melalui crafted spreadsheet files
  • Memperkuat kontrol akses dengan permission system

Risk Assessment

  • Low risk - Perubahan hanya pada lock files (versi dependency), tidak ada perubahan logic aplikasi
  • PhpSpreadsheet 1.30.4 kompatibel dengan PHP 7.4 - 8.4 (perubahan requirement dari 8.5.0)
  • Lodash 4.18.1 adalah drop-in replacement untuk 4.17.x
  • Postcss 8.5.14 backward compatible

Files Changed

 composer.lock     | 18 ++++++++++--------
 package-lock.json | 25 +++++++++++++------------
 2 files changed, 23 insertions(+), 20 deletions(-)

Steps to Reproduce (Testing)

1. Install Dependencies

composer install
npm install

2. Verify Package Versions

composer show phpoffice/phpspreadsheet | grep versions
npm list lodash postcss

3. Test Spreadsheet Upload/Export

  • Upload file XLSX/XLS/CSV melalui fitur import
  • Export data ke format spreadsheet
  • Verifikasi tidak ada error pada processing

4. Test Asset Compilation

npm run build
  • Verifikasi CSS/JS ter-compile tanpa error

Testing Checklist

Security Testing

  • Verifikasi phpreadsheet version >= 1.30.4: composer show phpoffice/phpspreadsheet
  • Verifikasi lodash version >= 4.18.1: npm list lodash
  • Verifikasi postcss version >= 8.5.10: npm list postcss
  • Run npm audit - pastikan tidak ada known vulnerabilities
  • Run composer audit - pastikan tidak ada known vulnerabilities

Functional Testing

  • Test upload spreadsheet (XLSX, XLS, CSV) - fitur import data
  • Test export data ke spreadsheet - fitur export
  • Test build assets: npm run build - pastikan CSS/JS ter-compile
  • Test DataTables pada menu:
    • Data -> Kependudukan
    • Data -> Kecamatan
    • Data -> Finansial -> APBDes
    • Data -> Kesehatan -> Daftar Keluhan
    • Data -> Program Bantuan dan Pembangunan
    • Menu Pengaturan
    • Admin SIKEMA
  • Test permission system - verifikasi akses user berdasarkan role
  • Test login -> redirect ke dashboard

Regression Testing

  • Verifikasi tidak ada breaking changes pada fitur existing
  • Test pada PHP version yang digunakan (7.4 - 8.4)
  • Test pada browser modern (Chrome, Firefox, Safari, Edge)

Related Issue

  • Issue: #9999
  • Branch PR: fix/update_security
  • Branch Target: dev

Referensi CVE


Checklist PR

  • Code changes sesuai dengan issue
  • Testing checklist telah dilakukan
  • Tidak ada breaking changes
  • Dependencies telah di-update ke versi yang aman
  • Documentation updated (jika diperlukan)

Screenshots

image

@habibie11
Copy link
Copy Markdown
Contributor

OK

@affandii06 affandii06 merged commit e5ca91f into dev May 20, 2026
1 check passed
@affandii06 affandii06 deleted the fix/update_security branch May 20, 2026 07:38
@affandii06 affandii06 mentioned this pull request May 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants