WordPressプラグイン「GDPR Cookie Consent」に重大な脆弱性が発見される――権限昇格・保存型XSSの危険性、至急アップデートを
WordPressユーザーがGDPR(EU一般データ保護規則)への対応を簡単に行えるようにする人気プラグイン「GDPR Cookie Consent」において、不適切なアクセス制御による脆弱性が発見されました。この脆弱性を悪用されると、権限昇格や保存型XSS(クロスサイトスクリプティング)といった深刻な攻撃につながる可能性があります。執筆時点で、このプラグインは70万以上のWordPressサイトで利用されており、影響範囲は非常に広いと言えます。
脆弱性に関するタイムライン
- 報告日:2020年2月4日
- 修正日:2020年2月10日
- 影響を受けるバージョン:1.8.2以前のすべてのバージョン
- 修正済みバージョン:1.8.3
この脆弱性はまずwordpress.orgに報告され、その後、当該プラグインは一時的にWordPress公式ディレクトリから削除されました。2月10日に修正パッチが公開されると、WordPress側は速やかに配布制限を解除しています。
バージョン1.8.2以前を使用しているサイトはハッキングの危険にさらされています。できるだけ早く修正済みのバージョン1.8.3へ更新してください。
GDPRプラグインの脆弱性の仕組み
問題の脆弱性は、cli_policy_generatorクラスのコンストラクタ(--constructメソッド)に存在します。このcli_policy_generatorは、WordPressのAJAX API経由で実行されるajax_policy_generatorによって呼び出されますが、ここには重要な権限チェック(ケイパビリティチェック)が欠けていました。そのため、AJAX経由でnonceコードが送信されていても、PHPフレームワーク全体を通じて一切検証されない状態になっていたのです。
ajax_policy_generatorは、次の3つのアクションを実行できます。autosave_contant_data、save_contentdata、そしてget_policy_pageidです。
このうち2つのアクション――autosave_contant_dataとsave_contentdata――が攻撃に対して脆弱です。前者は権限昇格を、後者は保存型XSSを引き起こす恐れがあります。
save_contentdataの脆弱性
cli_policy_generatorのsave_contentdataは、GDPRクッキーのデータをページ投稿タイプとして保存する機能を持っています。これを悪用すると、購読者(Subscriber)レベルという低い権限しか持たない認証済みユーザーでも、投稿のステータスを変更できてしまいます。つまり、任意の認証済みユーザーが投稿を勝手に公開したり、公開済みの投稿を下書きに戻したりすることが可能です。最悪の場合、サイト全体の投稿を下書き状態に変更し、ウェブサイトを機能不全に陥らせることもできます。
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_contant_dataは、管理者が編集中の間、GDPRクッキーのデータを一時的にcli_pg_content_dataオプションとして保存する機能です。
しかし、cli_pg_content_dataには入力値の検証チェックが存在しないため、任意の認証済みユーザーが悪意のあるJavaScriptコードをサイトに注入できる状態でした。これにより、保存型XSS攻撃が成立してしまうのです。
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、SQLインジェクション、CSRF、LFI、RFI、スパム、悪質なボット、OWASP Top 10など、さまざまな攻撃からウェブサイトを保護します。Astraの導入は非常に簡単です。手順は以下の通りです。
- プランを選択してサインアップします。
- いくつかの簡単なセルフサービスの手順に従ってAstraをインストールします(所要時間5分未満)。
これだけで完了です。以降、Astraファイアウォールが考えられるあらゆる攻撃からサイトを常時保護します。Astraのダッシュボードからウェブサイトの状況を監視することも可能です。
まだ迷っている方は、こちらからAstraのデモをご覧いただけます。
ご不明な点がある場合は、下のコメント欄またはメッセージでお気軽にお問い合わせください。必ずご返信いたします :)
-
WordPressブログが悪意あるドメインへリダイレクト?原因の特定と今すぐできる対処法
WordPressのリダイレクトハックは、長年にわたり多くのサイト運営者を悩ませてきた深刻な脅威です。この手の攻撃は数週間ごとに姿を変え、新たな手法が次々と登場しています。本記事では、その中でも「ブログページの訪問者を悪意のあるドメインへ強制的に転送する」タイプのハックについて、症状の見分け方から駆除・再発防止策まで詳しく解説します。 これまでに確認されている悪意のあるドメインには、adaranth.[com]、buyittraffic.[com]、cuttraffic.[com]、statistic[.]admarketlocation[.]com、planeobservetoo1[.]l
-
【修正】WordPress「rms-script」リモートアクセスマルウェアの実態と対処法
最近、一部のWordPressサイトにおいて、外部サイトへのリモートアクセスを許してしまうマルウェアが確認されました。このマルウェアは、wp-content/mu-pluginsフォルダ内に配置された複数のPHPファイルに潜んでいることが判明しています。しかも厄介なことに、無料のWordPressセキュリティプラグインでサイトをスキャンしても、異常は一切検出されませんでした。本記事では、このマルウェアの詳細と、感染した場合の具体的な対処方法について詳しく解説します。 rms-scriptマルウェアの挙動 最初に気づくのは、WordPressサイトに奇妙なエラーが表示されることです。このエラーの