Halo semua, kembali lagi di Hight Hack. Kali ini kita akan membedah celah keamanan yang cukup serius pada PHPUnit, framework testing populer di ekosistem PHP. Kerentanan dengan ID GHSA-qrr6-mg7r-m243 ini memungkinkan terjadinya argument injection melalui karakter newline yang bisa berujung pada remote code execution.
Jika kamu seorang developer atau praktisi bug bounty, artikel ini akan membantu memahami bagaimana celah ini bekerja dan bagaimana cara mengamankannya.
Apa Masalahnya?
Kenapa Newline Berbahaya?
Dampak: Remote Code Execution
Dengan teknik ini, penyerang bisa mengontrol perilaku PHP di child process. Beberapa direktif berbahaya yang bisa dimanfaatkan antara lain:
- auto_prepend_file: menjalankan file sebelum script utama
- disable_functions: mematikan fungsi keamanan
- open_basedir: bypass pembatasan akses file
Skenario Serangan (Poisoned Pipeline Execution)
Salah satu skenario realistis adalah melalui CI/CD pipeline:
- Penyerang membuat pull request ke repository
- Memodifikasi file phpunit.xml
- Menyisipkan payload berikut
<ini name="display_errors" value="On auto_prepend_file=/tmp/malicious.php"/>
Karakter merupakan representasi newline.
- Ketika CI menjalankan PHPUnit, file berbahaya ikut dieksekusi
Serangan ini sering tidak terlihat saat code review biasa.
Versi yang Terdampak
- <= 12.5.21
- <= 13.1.5
Disarankan segera update ke versi 12.5.22 atau 13.1.6.
Perbaikan dari PHPUnit
- Menolak karakter newline dalam nilai INI
- Melakukan quoting dan escaping pada karakter khusus
Langkah Mitigasi
- Audit file phpunit.xml dan phpunit.xml.dist
- Jalankan CI dalam container ephemeral
- Batasi akses workflow CI/CD dengan review manual
Penutup
Stay safe dan tetap eksplorasi dunia security.
Referensi
- GitHub Advisory GHSA-qrr6-mg7r-m243
- OWASP CI/CD Top 10
