プラグインの脆弱性

閲覧数: 60(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)タグ, , , ,
session_cookie

Amazon Linuxのupdateでphpが5.6.8から5.6.9へ更新されたら、Tsubop  続きを読む

管理画面を制限する
blank

このサイトではネット上のさまざまな攻撃からの防御のため、Wordfenceプラグインの無料版を使用し  続きを読む

コンテナの自動起動
blank

最新バージョンのPHP-FPMをdockerのコンテナとして動かしてみたところ、思ったより安定して動  続きを読む

dotProject
blank

オープンソースのプロジェクト管理ツールである「dotProject」便利なツールで使い込んでいますが  続きを読む

最近の更新
blank

3月の初投稿は、ネタが無いのでIT閑話でw mediawikiのバージョン制限で、しばらくElast  続きを読む

IT小ネタ
blank

夜明けがすっかり遅くなり、季節はすっかり秋になりました。でも今週は夏日もあり、変な季節感だったけど。  続きを読む

スポンサーリンク

コメントを残す

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