นักวิจัยทางด้าน security ชื่อ Barak Tawily พบช่องโหว่ DoS ใน WordPress ซึ่งเป็น CMS ชื่อดัง ทำให้เมื่อโจมตีตัวเว็บจะหยุดการทำงาน

ทาง Barak พบช่องโหว่ DoS ที่ได้ CVE-2018-6389 ทำให้เว็บไซด์ที่ถูกสร้างด้วย CMS ชื่อดังอย่าง WordPress ไม่สามารถให้บริการต่อได้ โดยช่องโหว่ดังกล่าวเกิดที่ load-scripts.php ตัว script ดังกล่าวมี parameter load[] โดยหากเราใส่ค่าเป็น ‘jquery-ui-core’. ตัวเว็บไซด์จะตอบกลับมาด้วย JS module ‘jQuery UI Core’ ซึ่งตัว load[] นั้นรับค่าเป็นแบบ array ดังนั้นเราสามารถใส่ค่าได้หลายค่า ตัว load-scripts.php นั้นใช้เพื่อให้ request ที่ส่งมาจาก client เพื่อ load JS หรือ CSS file นั้นถูกใช้หรือส่ง request มาน้อยลง กล่าวคือเมื่อ browser ต้องการโหลด JS/CSS หลายๆไฟล์พร้อมกัน ตัว WordPress เว็บไซด์จะกระทำการใช้ load-scripts.php (สำหรับ CSS file หลายๆไฟล์) ซึ่งนั่นจะทำให้ browser ได้รับ JS/CSS files หลายไฟล์พร้อมกันผ่านการสร้าง request แค่ครั้งเดียวทำให้เว็บทำงานเร็วขึ้น ซึ่ง feature ดังกล่าวถูก design ให้ใช้เฉพาะ admin page เท่านั้น แต่จากการวิเคราะห์พบว่าในหน้า wp-login.php ซึ่งเป็นหน้า login ที่ใครก็สามารถเข้าถึงได้กลับใช้งาน feature นี้ด้วย

เนื่องด้วย WordPress เป็น Open Source ทาง Barak ได้ค้นหาข้อมูลดูแล้วพบว่า list ของ wp_scripts ที่จะถูกโหลดได้นั้นอยู่ใน  script-loader.php file, ทำให้เค้าพยายามเรียก module ทั้งหมดในไฟล์ดังกล่าว ซึ่งมีทั้งหมดประมาณ 180 module

ผลประโยชน์ของ Script ดังกล่าวทำให้กลับกลายเป็นผลร้าย เนื่องด้วยหาก attacker กระทำการเรียกไปยัง load-scripts.php ด้วยการกำหนด เป็นค่าของ JS และ CSS ต่างๆก็จะทำให้ตัวเว็บโหลดหนักในการพยายามที่จะรวม JS/CSS เหล่านั้นให้กลายเป็นไฟล์เดียวกลับไป

 

ทาง Barak ได้สร้าง PoC code ออกมาสำหรับการทดสอบช่องโหว่ชื่อว่า doser.py ซึ่งเป็นการเรียกไปยัง URL การเรียก module ทั้งหมดแบบหลายๆ connection พร้อมกัน ส่งผลให้เครื่องเกิดการใช้งาน I/O อย่างหนักและเครื่อง hang ไปในที่สุด

หลังจากการแจ้งไปยัง WordPress กลับได้รับการตอบกลับว่า “มันควรจะเป็นการแก้ไขในระดับ server หรือไม่ก็ network level มากกว่า application level ซึ่งมันนอกเหนือจากการควบคุมของ WordPress”

นั่นหมายความว่า WordPress จะไม่ออก patch แก้ไขช่องโหว่นี้แต่อย่างใด ทาง Barak จึงได้ทำการสร้าง WordPress version ที่แก้ไขออกมาเอง หรือหากใครต้องการจะแก้ไขโดยการใช้ bash script ก็สามารถทำได้เช่นกันครับ

ผลกระทบ: DoS (Denial of Service)
ระบบที่ได้รับผลกระทบ: WordPress ทุกๆ version
วิธีการแก้ไข: แก้ไข wp-login.php, wp-admin/load-scripts.php,wp-admin/includes/noop.php
Source:: Barak Tawily Blog