Elementor Pro เวอร์ชัน 4.2.1 และเวอร์ชันก่อนหน้า อาจถูกโจมตีผ่านช่องโหว่การรันรหัสจากระยะไกล (Remote Code Execution - RCE) โดยไม่ต้องผ่านการยืนยันตัวตน ในฟิลด์อัปโหลดไฟล์ (file-upload field) ของวิดเจ็ต Forms โดยปัญหานี้ได้รับการแก้ไขแล้วในเวอร์ชัน 4.2.2 ดังนั้นเว็บไซต์ที่ยังใช้โค้ดเวอร์ชันเก่าควรทำการอัปเกรดทันที
ช่องโหว่นี้ทำงานอย่างไร
ช่องโหว่นี้มีคะแนน CVSS อยู่ที่ 9.0 ซึ่งหมายความว่าผู้โจมตีที่สามารถเข้าถึงเว็บไซต์ที่มีช่องโหว่สามารถรันโค้ด PHP ใดๆ ก็ได้บนเซิร์ฟเวอร์ โดยไม่จำเป็นต้องเข้าสู่ระบบหรือระบุข้อมูลประจำตัวใดๆ ปัญหานี้อยู่ที่วิธีการที่ Elementor Pro ประมวลผลการอัปโหลดไฟล์ในวิดเจ็ต Forms โดยปลั๊กอินจะทำงานผ่านลูป (loop) สองส่วนที่แยกกัน ได้แก่ ลูปสำหรับตรวจสอบความถูกต้อง (validate) ของแต่ละไฟล์ที่อัปโหลด และอีกลูปหนึ่งสำหรับบันทึกไฟล์ลงในไดเรกทอรีอัปโหลดที่สามารถเข้าถึงได้ผ่านเว็บ
ผู้โจมตีสามารถสร้างคำขอ (request) เพียงครั้งเดียวที่มีไฟล์สองไฟล์ โดยไฟล์แรกจะถูกตั้งชื่อเป็นค่าว่าง ซึ่งจะทำให้ลูปการตรวจสอบข้ามการตรวจสอบไฟล์นั้นไป ส่วนไฟล์ที่สองซึ่งเป็นสคริปต์ PHP ที่เป็นอันตราย จะผ่านลูปที่สองและถูกเขียนลงในโฟลเดอร์สาธารณะ เนื่องจาก Elementor Pro ตั้งชื่อไฟล์ที่อัปโหลดโดยใช้การประทับเวลา (timestamp) ผู้โจมตีจึงสามารถคาดเดาชื่อไฟล์และเรียกใช้งานไฟล์นั้นโดยตรงเพื่อรันโค้ดได้ในภายหลัง
ช่องโหว่นี้เกิดขึ้นได้อย่างไร
การออกแบบระบบแบบสองลูปมีวัตถุประสงค์เพื่อให้การตรวจสอบความถูกต้องและการจัดเก็บข้อมูลแยกออกจากกัน แต่การขาดการตรวจสอบความสมเหตุสมผล (sanity check) ร่วมกัน ทำให้เทคนิคการใช้ชื่อไฟล์ว่างสามารถหลุดรอดไปได้ ช่องโหว่นี้ส่งผลกระทบต่อทุกการติดตั้งที่ใช้วิดเจ็ต Forms ในฟิลด์อัปโหลดไฟล์ ไม่ว่าเจ้าของเว็บไซต์จะเปิดใช้งานฟีเจอร์ดังกล่าวสำหรับผู้เข้าชมหรือไม่ก็ตาม
ใครที่มีความเสี่ยงบ้าง
เว็บไซต์ WordPress ใดก็ตามที่ติดตั้ง Elementor Pro 4.2.1 หรือเวอร์ชันก่อนหน้าถือว่ามีความเสี่ยง เนื่องจากช่องโหว่นี้ไม่จำเป็นต้องมีการยืนยันตัวตน แม้แต่เว็บไซต์ที่จำกัดการเข้าถึงส่วนผู้ดูแลระบบ (admin) ก็ยังตกเป็นเหยื่อได้ การโจมตีที่สำเร็จจะทำให้ผู้โจมตีสามารถควบคุมสภาพแวดล้อมการโฮสต์ (hosting environment) ได้อย่างสมบูรณ์ ซึ่งเปิดโอกาสให้เกิดการขโมยข้อมูล การเปลี่ยนแปลงหน้าเว็บไซต์ (site defacement) หรือการแพร่กระจายมัลแวร์เรียกค่าไถ่ (ransomware)
สิ่งที่ควรทำในตอนนี้
ตรวจสอบเวอร์ชันที่ติดตั้งด้วยคำสั่ง WordPress CLI:
wp plugin list --name=elementor-pro --field=versionหากผลลัพธ์แสดงเป็นเวอร์ชัน 4.2.1 หรือต่ำกว่า ให้รีบอัปเดตเป็นเวอร์ชัน 4.2.2 หรือใหม่กว่าทันที การอัปเดตนี้จะแทนที่ตรรกะการอัปโหลดที่บกพร่องด้วยกระบวนการตรวจสอบและบันทึกไฟล์แบบขั้นตอนเดียว (atomic validation-and-save routine) ซึ่งจะบล็อกการข้ามขั้นตอนด้วยชื่อไฟล์ว่าง
หลังจากอัปเกรดแล้ว ให้ตรวจสอบไดเรกทอรีอัปโหลดเพื่อหาไฟล์ PHP ใดๆ ที่มีรูปแบบการตั้งชื่อตาม timestamp ที่ปลั๊กอินใช้ และลบไฟล์เหล่านั้นทิ้ง
พิจารณาปิดใช้งานฟิลด์อัปโหลดไฟล์ในฟอร์มสาธารณะจนกว่าจะมีการติดตั้งแพตช์ โดยเฉพาะอย่างยิ่งในเว็บไซต์ที่มีผู้เข้าชมจำนวนมาก
มุมมองที่ต่างออกไป
นักพัฒนาบางคนแย้งว่าความเสี่ยงนั้นมีจำกัด เนื่องจากช่องโหว่นี้ต้องการให้วิดเจ็ต Forms ถูกตั้งค่าให้มีฟิลด์อัปโหลดไฟล์ที่สาธารณะสามารถเข้าถึงได้ อย่างไรก็ตาม เว็บไซต์จำนวนมากที่ใช้ Elementor มักจะมีฟอร์มเหล่านี้ไว้สำหรับติดต่อสอบถาม การสมัครงาน หรือเนื้อหาที่สร้างโดยผู้ใช้ (user-generated content) ซึ่งทำให้เงื่อนไขดังกล่าวเกิดขึ้นได้บ่อยพอที่ช่องโหว่นี้จะถูกจัดว่าเป็นระดับวิกฤต (critical)
สิ่งที่ควรติดตามต่อไป
นักวิจัยด้านความปลอดภัยคาดว่าจะมีประกาศแจ้งเตือนเพิ่มเติมออกมา เมื่อมีเว็บไซต์รายงานความพยายามในการโจมตีมากขึ้น โปรดติดตามการสื่อสารอย่างเป็นทางการจาก Elementor และฐานข้อมูลช่องโหว่ที่น่าเชื่อถือ เพื่อดูข้อมูลเกี่ยวกับแพตช์หรือวิธีการบรรเทาผลกระทบเพิ่มเติม
สรุป: ช่องโหว่ RCE ใน Elementor Pro 4.2.1 และเวอร์ชันก่อนหน้า เป็นช่องทางการโจมตีที่มีความรุนแรงสูงและไม่ต้องมีการเข้าสู่ระบบ การอัปเดตเป็นเวอร์ชัน 4.2.2 เป็นการป้องกันที่เชื่อถือได้เพียงวิธีเดียว การล่าช้าจะทำให้เซิร์ฟเวอร์และข้อมูลของคุณตกอยู่ในความเสี่ยงอย่างร้ายแรง
