プラグインの脆弱性

閲覧数: 24(0)

トップページから記事を選択して個別のページへ飛んだ後、本文の下に関連記事を表示するために使用していた「Related Post(Yuzo Related Post)」というプラグインに脆弱性があり攻撃者がプラグインの設定に任意のコードを書き込む事が出来るようになっていた。2019年4月11日にアラートが上がりプラグインが非公開となっていたがこんな辺境の地のサイトにまで攻撃が来るとは思っていなかったのでしっかりとした対策をとっていなかったところ、2019年5月27日の20時12分に攻撃を受け対策が完了するまでの約3時間、当サイトにアクセスすると一回目のクリックで詐欺サイトが別ページで表示される状況となっていた。万が一その時間帯にアクセスした人がいたらご迷惑をお掛けしたことをお詫びします。

問題となったコードを以下に抜き出してみた。

    function __construct(){

        if( ! is_admin() ){ // only front-end

            self::set_main_variable();
            return;

        }elseif( is_admin()  ){ // only admin

            // set default if not exists
            self::_ini_();

「Wordfence」の指摘によると「is_admin()」の使い方が間違っているとのこと。このプラグインの作者は「is_admin()」を管理者としてログインしているかどうかの判定に使っているようなのですが、この関数は単に管理者画面にいるかどうかを判定しているだけで、管理者としてログイン出来ているかどうかは関係ないそうです。その辺は「公式ドキュメント」の「is_admin()」の項にも「current_user_can()」を使ってユーザーが実際に何が出来るのかチェックすること、と書かれています。

作りが稚拙でセキュリティが甘かったとしても人気のプラグインとしてあちこちで紹介されていたし、実際使ってみるとサイト運営者がやりたいことがほぼ実現出来ていたということで、全世界で約7万サイトにインストールされていたらしいです。作者は学生でほとんど趣味の世界だったようで現在対策した新バージョンを鋭意開発中らしいです。人気が回復するといいですね。

実際どんな攻撃が出来てしまうかというと外部から脆弱性のあるファイル(core.php)を指定してアクセスすることでこのプラグインの設定に任意のコードが書き込めるというもの。今回は「yuzo_related_post_css_and_style」というプラグインのオプション設定部分に、攻撃者が指定したサイトへリダイレクトするJavaScriptが埋め込まれていました。このオプションというのはファイルではなくてデータベースに保存されるのでサイト上のファイルをチェックするタイプの防御では防ぎようが無く、結果として回復まで3時間かかることになりました。

現在は全く違うプラグインで関連記事を表示しています。

【最終更新日: 2019年6月14日】
カテゴリーIT閑話, 公開タグ, , ,
関連記事
関連記事の大原則
2019年6月16日

ググったりしてあるページにたどり着いた閲覧者に対して、それに関連する記事を提示して少しでもサイトの滞  続きを読む

関連記事プラグイン
blank
2019年6月14日

脆弱性のため公開中止となったプラグインの代わりに選んだ、現在の「関連記事」用プラグインの設定を保存し  続きを読む

子テーマ化詳細
blank
2017年9月23日

子テーマ化にあたって具体的に修正した部分の説明をします。まずは「header.php」から。サイトの  続きを読む

テーマリニューアル2017
blank
2017年7月21日

すっかりご無沙汰してしまいました。 復帰記念に久しぶりにテーマを変更しました。今回使用するのは「ob  続きを読む

関連記事
blank
2016年11月16日

Related Postsと言うプラグインで、関連記事をページ下部に表示しています。これまでは、Wo  続きを読む

トリミング3
blank
2015年10月24日

先日から投稿ページ下部に、関連記事を表示するプラグインを導入しました。人気プラグインである、Word  続きを読む

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください