ไอที

Plugin WPML บน Wordpress มีช่องโหว่ RCE กระทบเว็บไซต์กว่าล้านเว็บ

Thaiware
อัพเดต 05 ก.ย 2567 เวลา 04.00 น. • เผยแพร่ 05 ก.ย 2567 เวลา 04.00 น. • Sarun_ss777
ช่องโหว่ในฟังค์ชั่นของ Plugin WPML เปิดช่องให้แฮกเกอร์ใช้ Twig Template Injection แทรกโค้ดเข้าขโมยข้อมูลได้

การทำเว็บไซต์ที่รองรับหลายภาษา เรียกได้ว่าได้กลายเป็นมาตรฐานไปแล้วสำหรับการทำเว็บไซต์เชิงธุรกิจในปัจจุบัน เฉพาะเว็บไซต์ในไทยก็มักจะต้องมีทางเลือกอย่างน้อยหน้าภาษาไทย และภาษาอังกฤษให้ลูกค้า ซึ่งการที่จะทำแบบนี้ ถ้าไม่อยากยุ่งยากสร้างระบบเองก็อาจต้องพึ่ง 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) ตัวเว็บไซต์ว่า ได้มีแทรกโค้ดแปลกปลอมโดยผู้ไม่ประสงค์ดีหรือไม่ ถ้ามีให้ทำการลบออกทันทีเพื่อป้องกันภัยที่อาจจะเกิดขึ้น

➤ Website : https://www.thaiware.com
➤ Facebook : https://www.facebook.com/thaiware
➤ Twitter : https://www.twitter.com/thaiware
➤ YouTube : https://www.youtube.com/thaiwaretv

ดูข่าวต้นฉบับ