ช่องโหว่ Stored XSS (Persistent) ใน WordPress Plugin "Shipping Zones by Drawing for WooCommerce" — CVE-2026-119065 (CVSS 7.2)
📋 สรุปช่องโหว่
ช่องโหว่ Stored XSS (Persistent) ถูกค้นพบในWordPress Plugin "Shipping Zones by Drawing for WooCommerce" โดยมี CVSS Score 7.2 ระดับ "สูง"
ช่องโหว่ XSS เกิดจากการที่ระบบไม่ได้กรองข้อมูลที่ผู้ใช้ป้อนเข้ามาอย่างเหมาะสม ทำให้ผู้โจมตีสามารถฉีด JavaScript อันตรายเข้าไปในหน้าเว็บได้ เมื่อผู้ใช้รายอื่นเปิดหน้าเว็บนั้น script จะถูกรันในเบราว์เซอร์ของเหยื่อโดยอัตโนมัติ
การโจมตีนี้ไม่จำเป็นต้องล็อกอิน ผู้ดูแลระบบที่ใช้WordPress Plugin "Shipping Zones by Drawing for WooCommerce" และยังไม่ได้อัพเดตควรดำเนินการทันที
💥 ผลกระทบที่อาจเกิดขึ้น
ผู้โจมตีสามารถ:
• ขโมย Session Cookie: ดึง session token ของ admin เพื่อเข้าสู่ระบบโดยไม่ต้องรู้รหัสผ่าน
• Hijack บัญชี Admin: สร้าง admin ใหม่หรือเปลี่ยนรหัสผ่าน
• ฝัง Malware/Phishing: redirect ผู้เข้าชมไปเว็บอันตราย หรือแสดง form ปลอม
• ขโมยข้อมูลในฟอร์ม: ดักข้อมูล email รหัสผ่าน ข้อมูลบัตรเครดิต
• Defacement: เปลี่ยนหน้าตาเว็บไซต์
• Drive-by Download: บังคับดาวน์โหลดไฟล์อันตราย
🖥️ ซอฟต์แวร์และระบบที่ได้รับผลกระทบ
WordPress Plugin: Shipping Zones by Drawing for WooCommerce
ตรวจสอบที่ https://nvd.nist.gov/vuln/detail/CVE-2026-119065
1. เปิด Dashboard > Plugins
2. ค้นหา "Shipping Zones by Drawing for WooCommerce" ดูเวอร์ชัน
3. เปรียบเทียบกับ NVD
🔧 แนวทางการแก้ไขและป้องกัน
- ขั้นตอนแก้ไข:
- 1. อัพเดตทันที: อัพเดต "Shipping Zones by Drawing 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 Shipping Zones by Drawing for WooCommerce plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'szbd-picked' checkout parameter in versions up to, and including, 3.3.0 The szbd_checkout_field_update_order_meta() handler stores stripslashes(sanitize_text_field($_POST['szbd-picked'])) in order meta without validating the JSON structure or restricting dangerous characters, and the szbd_show_checkout_field_admin_order_meta() handler later concatenates the decoded lat and lng values directly into a double-quoted href attribute without esc_url() or esc_attr(). This makes it possible for unauthenticated attackers, by submitting an ordinary guest-checkout order with a crafted szbd-picked JSON payload, to inject arbitrary attributes (such as onmouseover) onto the Google Maps link in the WooCommerce admin order view that will execute whenever an administrator accesses an injected order.