ปลั๊กอินความยินยอมคุกกี้ WordPress GDPR ซึ่งอำนวยความสะดวกในการปฏิบัติตาม GDPR อย่างง่ายสำหรับผู้ใช้ พบว่ามีความเสี่ยงต่อการควบคุมการเข้าถึงที่ไม่เหมาะสม ช่องโหว่นี้สามารถนำไปสู่ช่องโหว่ที่ร้ายแรง เช่น การยกระดับสิทธิ์และการจัดเก็บ XSS ในเว็บไซต์ ปลั๊กอินความยินยอมคุกกี้ GDPR ถูกใช้อย่างแข็งขันบนเว็บไซต์ WordPress มากกว่า 700,000 เว็บไซต์ในขณะที่เขียนสิ่งนี้
ไทม์ไลน์ของช่องโหว่
- รายงานเมื่อ – 4 ก.พ. 2020
- แก้ไขวันที่ – 10 ก.พ. 2020
- เวอร์ชันที่ได้รับผลกระทบ – เวอร์ชันทั้งหมด <=1.8.2
- แพทช์เวอร์ชัน – 1.8.3
ช่องโหว่นี้ถูกรายงานไปที่ wordpress.org ก่อน โพสต์ซึ่งปลั๊กอินถูกลบชั่วคราวจากที่เก็บ WordPress WordPress ยกเลิกการแบนจากปลั๊กอินทันทีที่มีแพตช์ในวันที่ 10 กุมภาพันธ์
ใครก็ตามที่อยู่ใน เวอร์ชัน <=1.8.2 สามารถแฮ็กได้ . ดังนั้นให้อัปเดตเป็น เวอร์ชันที่แก้ไขแล้ว =1.8.3 โดยเร็วที่สุด
ทำความเข้าใจช่องโหว่ของปลั๊กอิน GDPR
ช่องโหว่อยู่ใน cli_policy_generator
ใน --construct method.
cli_policy_generator
ซึ่งดำเนินการผ่าน WordPress AJAX API – ajax_policy_generator ขาดการตรวจสอบความสามารถที่สำคัญ เนื่องจากแม้ว่าโค้ด nonce จะถูกส่งผ่าน AJAX จะไม่ได้รับการยืนยันในเฟรมเวิร์ก PHP ทั้งหมด
ในทางกลับกัน ajax_policy_generator อนุญาตให้ดำเนินการสามอย่าง:autosave_contant_data, save_contentdata, และget_policy_pageid .
การกระทำสองอย่างนี้ – บันทึกอัตโนมัติ_contant_data, save_contentdata มีความอ่อนไหวต่อการโจมตี ในขณะที่ autosave_contant_data สามารถนำไปสู่การยกระดับสิทธิ์ แต่ save_contentdata สามารถนำไปสู่ XSS ที่เก็บไว้ได้
ช่องโหว่ใน save_contentdata
save_contentdata ของ cli_policy_generator
อนุญาตให้บันทึกคุกกี้ GDPR เป็นประเภทโพสต์ของหน้า การใช้ประโยชน์จากผู้ใช้ที่ตรวจสอบสิทธิ์ที่มีสิทธิ์ต่ำที่สุดเท่าที่สมาชิกสามารถเปลี่ยนสถานะโพสต์ได้ ผู้ใช้ที่ตรวจสอบสิทธิ์แล้วสามารถเผยแพร่โพสต์หรือย้ายโพสต์ที่เผยแพร่ไปยังฉบับร่างได้ หรือแย่กว่านั้น ให้ย้ายทั้งเว็บไซต์ไปร่างเป็นเหตุให้ล่ม
public function save_contentdata() { $out=array( 'response'=>true, 'er'=>'' ); $content_data=isset($_POST['content_data']) ? $_POST['content_data'] : array(); $page_id=(int) isset($_POST['page_id']) ? $_POST['page_id']*1 : 0; $enable_webtofee_powered_by=(int) isset($_POST['enable_webtofee_powered_by']) ? $_POST['enable_webtofee_powered_by']*1 : 0; $id=wp_insert_post( array( 'ID'=>$page_id, //if ID is zero it will create new page otherwise update 'post_title'=>'Cookie Policy', 'post_type'=>'page', 'post_content'=>Cookie_Law_Info_Cli_Policy_Generator::generate_page_content($enable_webtofee_powered_by,$content_data,0), 'post_status' => 'draft', //default is draft ) ); if(is_wp_error($id)) { $out=array( 'response'=>false, 'er'=>__('Error','cookie-law-info'), //'er'=>$id->get_error_message(), ); }else { Cookie_Law_Info_Cli_Policy_Generator::set_cookie_policy_pageid($id); $out['url']=get_edit_post_link($id); } return $out; }
ช่องโหว่ในการบันทึกอัตโนมัติ_contant_data
autosave_constant_data จะบันทึกคุกกี้ GDPR ชั่วคราวใน cli_pg_content_data ในขณะที่ผู้ดูแลระบบยังคงแก้ไขอยู่
เนื่องจากไม่มีการตรวจสอบความถูกต้องใน cli_pg_content_data ผู้ใช้ที่ตรวจสอบสิทธิ์แล้วสามารถแทรกโค้ด JavaScript ที่เป็นอันตรายในเว็บไซต์ด้วยปลั๊กอินคำยินยอมคุกกี้ GDPR
public function autosave_contant_data() { global $wpdb; $scan_table=$wpdb->prefix.$this->main_tb; $out=array( 'response'=>true, 'er'=>'' ); $content_data=isset($_POST['content_data']) ? $_POST['content_data'] : array(); $page_id=isset($_POST['page_id']) ? $_POST['page_id'] : ''; $enable_webtofee_powered_by=(int) isset($_POST['enable_webtofee_powered_by']) ? $_POST['enable_webtofee_powered_by']*1 : 0; if(is_array($content_data)) { $content_html=Cookie_Law_Info_Cli_Policy_Generator::generate_page_content($enable_webtofee_powered_by,$content_data); update_option('cli_pg_content_data',$content_html); }else { $out=array( 'response'=>false, 'er'=>__('Error','cookie-law-info') ); } return $out; }
แพทช์พร้อมใช้งานแล้ว! อัปเดตเลย
อัปเดตเป็นเวอร์ชันล่าสุด 1.8.3 และไฟร์วอลล์ปกป้องเว็บไซต์ของคุณ
ไฟร์วอลล์ Astra ปกป้องเว็บไซต์ของคุณจากการโจมตี เช่น XSS, SQLi, CSRF, LFI, RFI, สแปม, บอทที่ไม่ดี, OWASP Top 10 และอื่นๆ การเริ่มต้นใช้งาน Astra นั้นง่ายมาก นี่คือวิธีการ:
- เลือกแผนและลงทะเบียน
- ติดตั้ง Astra โดยทำตามขั้นตอนแบบบริการตนเองสองสามขั้นตอน (ใช้เวลา<5 นาที)
นั่นคือทั้งหมด Astra Firewall ปกป้องคุณจากการโจมตีที่อาจเข้ามาหาคุณ ตอนนี้คุณสามารถตรวจสอบเว็บไซต์ของคุณได้จากแดชบอร์ดของ Astra
ยังไม่แน่ใจ? รับการสาธิต Astra จากที่นี่
หากคุณมีคำถามใด ๆ เพื่อขอความคิดเห็นด้านล่างหรือส่งข้อความถึงเรา เราสัญญาว่าจะตอบกลับ 🙂