사용자가 쉽게 GDPR을 준수할 수 있도록 하는 WordPress GDPR 쿠키 동의 플러그인이 부적절한 액세스 제어에 취약한 것으로 밝혀졌습니다. 이 취약점은 권한 상승 및 웹사이트에 저장된 XSS와 같은 심각한 취약점으로 이어질 수 있습니다. 이 글을 쓰는 시점에서 GDPR 쿠키 동의 플러그인은 700000개 이상의 워드프레스 웹사이트에서 활발히 사용되고 있습니다.
취약점 타임라인
- 보고일 – 2020년 2월 4일
- 수정일 – 2020년 2월 10일
- 영향을 받는 버전 – 모든 버전 <=1.8.2
- 패치 버전 – 1.8.3
취약점은 wordpress.org에 먼저 보고되었습니다. 플러그인이 WordPress 저장소에서 일시적으로 제거된 게시물입니다. WordPress는 2월 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 .
이 두 가지 작업 - autosave_contant_data, save_contentdata 공격에 취약합니다. autosave_contant_data는 권한 상승으로 이어질 수 있지만 save_contentdata는 저장된 XSS로 이어질 수 있습니다.
save_contentdata의 취약점
cli_policy_generator
의 save_contentdata 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; }
autosave_contant_data의 취약점
autosave_constant_data는 GDPR 쿠키를 cli_pg_content_data에 임시로 저장하는 반면 관리자는 계속 수정합니다.
cli_pg_content_data의 유효성 검사 누락으로 인해 인증된 모든 사용자는 GDPR 쿠키 동의 플러그인을 사용하여 웹사이트에 악성 JavaScript 코드를 삽입할 수 있습니다.
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 데모를 받으세요.
질문이 있으시면 아래에 댓글을 달거나 메시지를 보내주십시오. 회신을 약속드립니다 🙂