สรุปสั้น
แคมเปญ Supply Chain Attack ใหม่ได้โจมตีแพ็กเกจบน Packagist ซึ่งเป็น Package Registry หลักของภาษา PHP จำนวน 8 แพ็กเกจ โดยมีจุดเด่นที่น่ากังวลคือโค้ดอันตรายไม่ได้ถูกฝังใน composer.json ตามที่คาดหวัง แต่กลับซ่อนอยู่ใน package.json ซึ่งเป็น Format ของ JavaScript/Node.js ทำให้ Developer และ Security Tool ที่สแกนเฉพาะ PHP dependency อาจมองข้ามได้ง่าย Postinstall Script ดาวน์โหลด Linux Binary จาก GitHub Releases แล้วบันทึกที่ /tmp/.sshd และรันในพื้นหลังโดยปิด TLS verification และซ่อนข้อผิดพลาด บริษัท Socket ตรวจพบร่องรอยของ payload เดียวกันในไฟล์บน GitHub มากถึง 777 ไฟล์ บ่งชี้ว่าแคมเปญนี้อาจมีขนาดใหญ่กว่าที่เปิดเผย
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 23 พฤษภาคม 2569 อ้างการวิจัยของบริษัท Socket ว่า มีแคมเปญโจมตี Supply Chain ที่ประสานงานกันโจมตีแพ็กเกจบน Packagist จำนวน 8 รายการ โดยผู้โจมตีแก้ไข Repository ต้นทางของแพ็กเกจเหล่านั้นให้มี Postinstall Script ที่พยายามดาวน์โหลด Linux Binary จาก GitHub Releases URL ของผู้ใช้ parikhpreyash4 แล้วบันทึกไว้ที่ /tmp/.sshd จากนั้น chmod ให้ทุกคนรันได้และรันในพื้นหลัง ในจุดที่ผิดปกติคือโค้ดอันตรายถูกซ่อนไว้ใน package.json ไม่ใช่ composer.json ซึ่งเป็นเทคนิค Cross-Ecosystem Placement ที่ทำให้ทีม Security ที่ตรวจสอบเฉพาะ PHP dependency พลาดการตรวจจับ ขณะนี้เวอร์ชันที่ติดมัลแวร์ถูกลบออกจาก Packagist แล้ว และ GitHub Account ของผู้โจมตีก็ถูกระงับแล้ว
รายละเอียดแพ็กเกจที่ได้รับผลกระทบ
แพ็กเกจที่ถูก compromise และเวอร์ชันที่ได้รับผลกระทบ:
| แพ็กเกจ | เวอร์ชัน |
|---|---|
| moritz-sauer-13/silverstripe-cms-theme | dev-master |
| crosiersource/crosierlib-base | dev-master |
| devdojo/wave | dev-main |
| devdojo/genesis | dev-main |
| katanaui/katana | dev-main |
| elitedevsquad/sidecar-laravel | 3.x-dev |
| r2luna/brain | dev-main |
| baskarcm/tzi-chat-ui | dev-main |
Socket ยังพบว่า payload เดียวกันปรากฏในไฟล์บน GitHub มากถึง 777 ไฟล์ รวมถึงใน GitHub Actions Workflow อย่างน้อย 2 กรณี ชี้ว่าผู้โจมตีไม่ได้พึ่งพา Execution Mechanism เดียว แต่กระจายทั้งใน Package Artifact และ CI/CD Workflow
ที่น่าสังเกตคือผู้โจมตีตั้งชื่อ Binary ว่า gvfsd-network ซึ่งเลียนแบบชื่อของ GNOME Virtual File System daemon ที่ถูกต้องเพื่อหลบเลี่ยงการตรวจจับ
ผลกระทบต่อไทย
นักพัฒนาซอฟต์แวร์ไทยที่ใช้ Framework PHP อย่าง Laravel, SilverStripe หรือใช้แพ็กเกจจาก Packagist ในโปรเจกต์ต้องตรวจสอบ dependency ของตัวเอง โดยเฉพาะแพ็กเกจที่ใช้ dev-master หรือ dev-main branch ซึ่งมีความเสี่ยงสูงกว่า เนื่องจากผู้โจมตีกำหนดเป้าหมายไปที่ branch เหล่านี้ ทีม DevSecOps ควรขยายการสแกน dependency ให้ครอบคลุม package.json ด้วย ไม่ใช่เฉพาะ composer.json
คำแนะนำ
- ตรวจสอบ Postinstall Script ใน
package.jsonของแพ็กเกจ PHP ที่ใช้อยู่ แม้โปรเจกต์จะเป็น PHP เป็นหลัก - หลีกเลี่ยง
dev-masterและdev-mainใน Production และ Pin เวอร์ชันที่ชัดเจนแทน - ตรวจสอบ
/tmp/.sshdบนเซิร์ฟเวอร์และ Build Environment เพื่อหาร่องรอยการโจมตี - ใช้เครื่องมือสแกน Cross-Ecosystem ที่วิเคราะห์ทั้ง
composer.jsonและpackage.jsonพร้อมกัน - ตรวจสอบ GitHub Actions Workflow ว่ามี Postinstall Script หรือ Binary ดาวน์โหลดจากแหล่งที่ไม่รู้จักหรือไม่
