プラグインの脆弱性

閲覧数: 50(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時間かかることになりました。

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

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

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

タイトルを抜粋する
blank

関連記事プラグインを使って、記事本文の下に「関連記事」を表示している。情報としては、タイトル、画像、  続きを読む

関連記事
blank

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

子テーマ化詳細
blank

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

テーマリニューアル2017
blank

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

緊急事態宣言で外出自粛になり...
blank

せっかくのゴールデンウィークなのに、2年連続で緊急事態宣言下となり、外出自粛中。暇なので小ネタで遊ぶ  続きを読む

スポンサーリンク

コメントを残す

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