ด่วน! พบ 36 แพ็กเกจ npm อันตรายปลอมเป็นปลั๊กอิน Strapi มุ่งโจมตี Redis/PostgreSQL และฝัง persistent implant

ยอดเข้าชม: 37 views

ThaiCERT ได้ติดตามสถานการณ์ภัยคุกคามทางไซเบอร์ และพบรายงานวพบ 36 แพ็กเกจอันตรายใน npm registry ปลอมตัวเป็นปลั๊กอินของ Strapi CMS โดยใช้ชื่อขึ้นต้น “strapi-plugin-” เพื่อหลอกให้นักพัฒนาดาวน์โหลด ทั้งที่ปลั๊กอินทางการของ Strapi ใช้ชื่อแพ็กเกจในรูปแบบ “@strapi/…” โค้ดอันตรายถูกฝังใน “postinstall.js” และสามารถทำงานอัตโนมัติระหว่าง “npm install” ด้วยสิทธิ์ของผู้ติดตั้ง ส่งผลให้ผู้โจมตีสามารถโจมตี Redis และ PostgreSQL, เปิด reverse shell, ขโมย “.env”/credential/กุญแจลับ และติดตั้ง persistence เพื่อคงอยู่ในระบบได้ [1]

1. รายละเอียด

แพ็กเกจอันตรายถูกอัปโหลดผ่าน 4 บัญชีปลอม ได้แก่ “umarbek1233”, “kekylf12”, “tikeqemif26” และ “umar_bektembiev1” ภายในช่วงเวลาประมาณ 13 ชั่วโมง นักวิจัยพบ payload อย่างน้อย 8 รูปแบบ ตั้งแต่การใช้ Redis เพื่อเขียน cron job และ web shell, ความพยายาม escape ออกจาก Docker container, การเปิด bash/Python reverse shell, การค้นหา environment variables และไฟล์ลับ, การใช้ credential ที่ฝังตายตัวเพื่อเชื่อมต่อ PostgreSQL โดยตรง, ไปจนถึงการฝัง persistent implant สำหรับคงการเข้าถึงระยะยาว

2. ผลิตภัณฑ์ที่ได้รับผลกระทบ [2]

– ระบบที่ใช้ npm ในการติดตั้ง dependencies และมีการติดตั้งแพ็กเกจอันตรายที่ปลอมเป็นปลั๊กอินของ Strapi

– ระบบ CI/CD เช่น build servers, runners และ automation pipelines

– คอนเทนเนอร์และเซิร์ฟเวอร์ที่มีการรัน npm install หรือ npm ci

3. แนวทางการแก้ไข

– หากเคยติดตั้งแพ็กเกจข้างต้น ให้ assume compromise ทันทีและเร่ง rotate credentials ทั้งหมดที่อาจเกี่ยวข้อง เช่น API keys, database credentials, SSH keys, cloud secrets, wallet secrets และ token ของ CI/CD

– ถอดแพ็กเกจอันตรายออกจาก dependency tree, ตรวจสอบ `package-lock.json`/image/container ที่ build ไปแล้ว, และ rebuild จากแหล่งที่เชื่อถือได้เท่านั้น

– ตรวจสอบร่องรอย persistence และ IoC สำคัญ เช่น “/tmp/.node_gc.js”, cron entries ที่ผิดปกติ, “/app/public/uploads/shell.php”, “/app/public/uploads/revshell.js”, “/tmp/redis_exec.sh”, การแก้ไขไฟล์ใน node_modules, รวมถึงการเชื่อมต่อไปยัง 144[.]31[.]107[.]231 ที่พอร์ต 9999, 4444 และ 8888

– สำหรับการตรวจสอบหรือทดสอบแพ็กเกจในสภาพแวดล้อมควบคุม อาจตั้งค่า `ignore-scripts=true` หรือใช้การติดตั้งแบบไม่รัน scripts เพื่อป้องกัน `postinstall` ทำงานซ้ำระหว่างการวิเคราะห์ [3]

4. หากยังไม่สามารถดำเนินการแก้ไขได้ควรดำเนินการดังนี้

– แยกเครื่องนักพัฒนา, CI runners, container หรือเซิร์ฟเวอร์ Strapi ที่อาจได้รับผลกระทบออกจากเครือข่ายโดยเร็ว

– ตรวจสอบ Redis และ PostgreSQL logs, cron, `.env` files, Docker/Kubernetes secrets และการเข้าถึงไฟล์กุญแจส่วนตัวหรือ wallet files

– ตรวจสอบว่ามีการติดตั้งปลั๊กอินจากแหล่งที่เชื่อถือได้เท่านั้น โดยเฉพาะจาก Strapi Marketplace หรือแพ็กเกจทางการใน scope “@strapi/”

– เนื่องจากกรณีนี้เป็น malicious package / supply chain attack ไม่ใช่ช่องโหว่ที่แก้ได้ด้วยแพตช์เดียว จึงไม่ควรรอ workaround แต่ควรเร่ง containment, credential rotation, forensic review และ rebuild ระบบ โดยเร็วที่สุด [4]

แหล่งอ้างอิง

[1] https://dg.th/tsk7banv13

[2] https://dg.th/1mguqhpda6

[3] https://dg.th/eo51zxbpc2

[4] https://dg.th/fhrguqbdsl