ช่องโหว่ Privilege Escalation — CVE-2026-107622 (CVSS 9.8)
📋 สรุปช่องโหว่
ช่องโหว่ Privilege Escalation ใน WordPress Plugin "BuddyForms" ถูกค้นพบโดยมี CVSS Score 9.8 ระดับ "วิกฤต"
ช่องโหว่นี้ทำให้ผู้ใช้ที่มีสิทธิ์ต่ำ (เช่น Subscriber หรือ Contributor) สามารถยกระดับสิทธิ์ตัวเองเป็น Administrator ได้โดยไม่ได้รับอนุญาต ปัญหาเกิดจากการตรวจสอบ permission ที่ไม่รัดกุมในฟังก์ชันสำคัญของระบบ
แม้ว่าการโจมตีนี้ต้องมีบัญชีในระบบ แต่ความเสียหายที่เกิดขึ้นได้นั้นเทียบเท่ากับการที่ผู้โจมตีได้รับสิทธิ์ Admin เต็มรูปแบบ
💥 ผลกระทบที่อาจเกิดขึ้น
ผลกระทบเมื่อผู้โจมตียกระดับสิทธิ์สำเร็จ:
• ควบคุมเว็บไซต์สมบูรณ์: เข้าถึงทุกส่วนของ Admin Dashboard
• แก้ไข/ลบเนื้อหาทั้งหมด: ทำลาย SEO และชื่อเสียงองค์กร
• ติดตั้ง Plugin อันตราย: เพิ่ม backdoor หรือ malware เข้าไปในระบบ
• ขโมยข้อมูลผู้ใช้: เข้าถึงข้อมูลสมาชิกทั้งหมด
• เปลี่ยน Admin Password: ล็อกเจ้าของเว็บออกจากระบบ
• สร้าง Admin Account ใหม่: สร้าง backdoor account สำหรับเข้าใช้ในอนาคต
🖥️ ซอฟต์แวร์และระบบที่ได้รับผลกระทบ
WordPress Plugin: BuddyForms
ตรวจสอบเวอร์ชันที่ได้รับผลกระทบที่ https://nvd.nist.gov/vuln/detail/CVE-2026-107622
🔧 แนวทางการแก้ไขและป้องกัน
- ขั้นตอนแก้ไข:
- 1. อัพเดตทันที: อัพเดตซอฟต์แวร์เป็นเวอร์ชันที่แก้ไขช่องโหว่แล้ว
- 2. ตรวจสอบ User Accounts: ดู Users > All Users ใน WordPress หาบัญชีที่ไม่รู้จักหรือมีสิทธิ์ผิดปกติ
- 3. ตรวจสอบ Admin Accounts: ยืนยันว่า admin ทุกบัญชีเป็นบัญชีที่คุณรู้จักและสร้างขึ้นเอง
- 4. Review Activity Logs: ตรวจสอบประวัติการ login และการเปลี่ยนแปลงสิทธิ์ย้อนหลัง
- 5. เปลี่ยนรหัสผ่าน Admin: เปลี่ยนรหัสผ่านทุก admin account เป็นรหัสผ่านที่แข็งแกร่ง
- 6. Principle of Least Privilege: จำกัดการสร้างบัญชีในระบบให้เฉพาะผู้ที่จำเป็น
📄 รายละเอียดต้นฉบับ (ภาษาอังกฤษ)
The BuddyForms plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 2.10.5 via a form-type confusion attack through the `bf_post_type` parameter. This is due to the public frontend submission handler `buddyforms_form_response_no_ajax()` authorizing logged-out submissions based solely on the target form's `public_submit` flag while independently trusting the attacker-supplied `$_POST['bf_post_type']` to determine the post type of the newly created object — a cross-check introduced in 2.10.2 applies only to existing posts (`post_id != 0`) and is completely bypassed for new-object creation — combined with the `save_post` listener `buddyforms_edit_form_save_meta_box_data()` lacking both a `current_user_can()` capability check and a form-builder nonce, causing it to unconditionally persist attacker-supplied `$_POST['buddyforms_options']` for any newly inserted `buddyforms` CPT post. This makes it possible for unauthenticated attackers to insert a rogue BuddyForms form configuration with an attacker-controlled `new_user_role` value into the live global form registry, then submit a registration through that form to create a new WordPress account with administrator-level privileges and achieve full site takeover. Exploitation requires the WordPress site to have "Anyone can register" enabled and at least one public BuddyForms form attached to a page, both of which are standard BuddyForms deployment configurations.