ช่องโหว่ Stored XSS (Persistent) ใน WordPress Plugin "PDF Invoices & Packing Slips for WooCommerce" — CVE-2026-107750 (CVSS 7.2)
📋 สรุปช่องโหว่
ช่องโหว่ Stored XSS (Persistent) ถูกค้นพบในWordPress Plugin "PDF Invoices & Packing Slips for WooCommerce" โดยมี CVSS Score 7.2 ระดับ "สูง"
ช่องโหว่ XSS เกิดจากการที่ระบบไม่ได้กรองข้อมูลที่ผู้ใช้ป้อนเข้ามาอย่างเหมาะสม ทำให้ผู้โจมตีสามารถฉีด JavaScript อันตรายเข้าไปในหน้าเว็บได้ เมื่อผู้ใช้รายอื่นเปิดหน้าเว็บนั้น script จะถูกรันในเบราว์เซอร์ของเหยื่อโดยอัตโนมัติ
การโจมตีนี้ไม่จำเป็นต้องล็อกอิน ผู้ดูแลระบบที่ใช้WordPress Plugin "PDF Invoices & Packing Slips for WooCommerce" และยังไม่ได้อัพเดตควรดำเนินการทันที
💥 ผลกระทบที่อาจเกิดขึ้น
ผู้โจมตีสามารถ:
• ขโมย Session Cookie: ดึง session token ของ admin เพื่อเข้าสู่ระบบโดยไม่ต้องรู้รหัสผ่าน
• Hijack บัญชี Admin: สร้าง admin ใหม่หรือเปลี่ยนรหัสผ่าน
• ฝัง Malware/Phishing: redirect ผู้เข้าชมไปเว็บอันตราย หรือแสดง form ปลอม
• ขโมยข้อมูลในฟอร์ม: ดักข้อมูล email รหัสผ่าน ข้อมูลบัตรเครดิต
• Defacement: เปลี่ยนหน้าตาเว็บไซต์
• Drive-by Download: บังคับดาวน์โหลดไฟล์อันตราย
🖥️ ซอฟต์แวร์และระบบที่ได้รับผลกระทบ
WordPress Plugin: PDF Invoices & Packing Slips for WooCommerce
ตรวจสอบที่ https://nvd.nist.gov/vuln/detail/CVE-2026-107750
1. เปิด Dashboard > Plugins
2. ค้นหา "PDF Invoices & Packing Slips for WooCommerce" ดูเวอร์ชัน
3. เปรียบเทียบกับ NVD
🔧 แนวทางการแก้ไขและป้องกัน
- ขั้นตอนแก้ไข:
- 1. อัพเดตทันที: อัพเดต "PDF Invoices & Packing Slips for WooCommerce"เป็นเวอร์ชันล่าสุด
- 2. ปิด Plugin ชั่วคราว: หากยังไม่มี patch
- 3. ตรวจสอบ Logs: หา <script>, javascript:, onerror= ใน access log
- 4. ติดตั้ง WAF: ใช้ Wordfence หรือ Cloudflare WAF
- 5. Content Security Policy: ตั้ง HTTP header เพื่อจำกัด script
- 6. ตรวจสอบ User Accounts: ดูว่ามี admin ที่ไม่รู้จักหรือไม่
- 7. เปลี่ยนรหัสผ่าน: เปลี่ยน admin password ทุกบัญชี
- 8. ล้าง Cache: ล้าง plugin cache หลังอัพเดต
📄 รายละเอียดต้นฉบับ (ภาษาอังกฤษ)
The PDF Invoices & Packing Slips for WooCommerce plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'billing_address.first_name / last_name / company, customer_note' parameter in all versions up to, and including, 5.16.4 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This is an incomplete fix for CVE-2026-92244: the wp_kses() allow-list introduced in 5.16.2 correctly blocks raw-tag payloads but is bypassed by entity-encoded payloads (e.g., <img onerror=…>) that contain no literal angle-bracket characters and are therefore passed through unmodified before the trailing decode rematerializes them.