การทำเว็บไซต์ที่รองรับหลายภาษา เรียกได้ว่าได้กลายเป็นมาตรฐานไปแล้วสำหรับการทำเว็บไซต์เชิงธุรกิจในปัจจุบัน เฉพาะเว็บไซต์ในไทยก็มักจะต้องมีทางเลือกอย่างน้อยหน้าภาษาไทย และภาษาอังกฤษให้ลูกค้า ซึ่งการที่จะทำแบบนี้ ถ้าไม่อยากยุ่งยากสร้างระบบเองก็อาจต้องพึ่ง Plugin บางตัว เช่น WPML ในกรณีที่ทำเว็บไซต์บน Wordpress เป็นต้น แต่ถ้า Plugin ดังกล่าวมีช่องว่างร้ายแรงล่ะ ?
จากรายงานโดยเว็บไซต์ Cyber Security News ได้รายงานถึงการตรวจพบช่องโหว่ร้ายแรงที่อยู่บน Plugin สำหรับการทำเว็บไซต์หลากภาษาบน Wordpress ที่มีชื่อว่า WordPress Multilingual หรือ WPML โดยนักวิจัยด้านความปลอดภัยไซเบอร์นิรนามที่รู้จักกันในชื่อ “Stealth Copter ”
ช่องโหว่นั้นมีชื่อว่า CVE-2024-6386 ที่ได้รับคะแนนความรุนแรงเป็น CVS Score ถึง 9.9 คะแนน เต็ม 10 เนื่องจากช่องโหว่นี้สามารถเปิดช่องให้แฮกเกอร์สามารถเปิดช่องให้แฮกเกอร์สามารถทำการรันโค้ดที่ไม่ได้รับอนุญาตจากระยะไกลได้ (Remote Code Execution หรือ RCE) ได้ โดยช่องโหว่นี้จะส่งผลต่อผู้ที่ใช้งาน WPML เวอร์ชัน 4.6.12 และก่อนหน้าทั้งหมด
โดยการทำงานของช่องโหว่ดังกล่าวนั้นกล่าวคือ ช่องโหว่จะถูกเปิดออกหลังเนื่องมาจากข้อผิดพลาดในการยืนยันความถูกต้องของการป้อนข้อมูลเข้า (Input Validation) จากการป้อนข้อมูลด้วย Twig ซึ่งเป็น Template Engine ที่ได้รับความนิยมในหมู่นักพัฒนาเว็บไซต์บน Wordpress โดยตัวช่องโหว่ในการป้อนข้อมูลนั้นถูกพบอยู่ใน "render() function" ที่อยู่ในส่วนของ WPML_LS_Public_API ทำให้แฮกเกอร์สามารถยิง Template (Template Injection) เข้าฝั่งเซิร์ฟเวอร์เปิดช่องให้แฮกเกอร์สามารถรันโค้ดจากระยะไกลได้ตามใจชอบได้ ซึ่งแหล่งข่าวได้ระบุกว่าช่องโหว่ดังกล่าวนั้นอยู่ในฟังก์ชันที่ระบุด้านล่าง
protected function render( $args, $twig_template = null ) {
$defaults_slot_args = $this->get_default_slot_args( $args );
$slot_args = array_merge( $defaults_slot_args, $args );
$slot = $this->get_slot_factory()->get_slot( $slot_args );
$slot->set( 'show', 1 );
$slot->set( 'template_string', $twig_template );
if ( $slot->is_post_translations() ) {
$output = $this->render->post_translations_label( $slot );
} else {
$output = $this->render->render( $slot );
}
return $output;
}
และจากการทดสอบการใช้งานช่องโหว่นั้น ทางทีมงาน Wordfence ซึ่งเป็นกลุ่มผู้พัฒนา Plugin ด้านความปลอดภัยสำหรับเว็บไซต์ที่สร้างขึ้นโดยใช้ Wordpress พบว่า ช่องโหว่ดังกล่าวสามารถใช้งานได้อย่างง่ายดาย โดยทดสอบการแทรกโค้ด PHP Function ที่มีชื่อว่า phpinfo() เพื่อสั่งให้เปิดเผยข้อมูลสำคัญของตัวเซิร์ฟเวอร์ ด้วยการแทรกโค้ดลงในส่วน [wpml_language_switcher] ซึ่งรูปแบบจะเป็นตามตัวอย่างที่ปรากฎอยู่ด้านล่าง
[wpml_language_switcher]
{% set call_user_func = c~a~l~l~_~u~s~e~r~_~f~u~n~c %}
{% set phpinfo = p~h~p~i~n~f~o %}
{{ {1: phpinfo}|filter(call_user_func) }}
[/wpml_language_switcher]
แต่ข่าวดีสำหรับผู้ใช้งานก็คือ ทางทีมพัฒนา Plugin ดังกล่าวหลังจากที่ได้รับการแจ้งเตือนจากทาง Wordfence ถึงการมีอยู่ของช่องโหว่แล้ว ก็ได้ทำการออกอัปเดตมาเพื่ออุดช่องโหว่ดังกล่าวบนเวอร์ชัน 4.6.13 เป็นที่เรียบร้อยแล้ว ในช่วงวันที่ 20 สิงหาคม ที่ผ่านมา ดังนั้น ผู้ดูแลเว็บไซต์ท่านใดที่กำลังใช้งาน Plugin ตัวดังกล่าวอยู่ขอให้ทำการอัปเดตให้เรียบร้อย รวมทั้งทำการตรวจสอบ (Audit) ตัวเว็บไซต์ว่า ได้มีแทรกโค้ดแปลกปลอมโดยผู้ไม่ประสงค์ดีหรือไม่ ถ้ามีให้ทำการลบออกทันทีเพื่อป้องกันภัยที่อาจจะเกิดขึ้น
|