Yet Another Related Posts Pluginに脆弱性が見つかったのでJetpackで関連記事を表示させる事にした

このサイトでもつい最近まで使用していた WordPress で関連記事を表示させるプラグイン、Yet Another Related Posts Plugin (以下 YARPP ) のバージョン 4.2.4 にクロスサイトリクエストフォージェリ、クロスサイトスクリプティング及びリモートコード実行の脆弱性がある事が報告された。

‘Yet Another Related Posts Plugin’ options can be updated with no token/nonce protection which an attacker may exploit via tricking website’s administrator to enter a malformed page which will change YARPP options, and since some options allow html the attacker is able to inject malformed javascript code which can lead to code execution/administrator actions when the injected code is triggered by an admin user.

ソース:https://wpvulndb.com/vulnerabilities/7976

この英文をざっくり日本語に意訳するとだいたいこんな感じになる。

「YARPP のオプション設定は noncekey 無しに変更できる仕様になっているので、攻撃者はサイト管理者を不正なページに誘導する事によってオプション設定内に任意のJavascriptコードを挿入する事ができてしまう。YARPP のオプションには HTML を表示する設定があるからだ。さらにそのコードをサイト管理者に実行させる事により、攻撃者は間接的にそのサイトの管理権限をのっとる事ができる。」

私は別にセキュリティの専門家でもなんでもないが、文章を読む限りかなり深刻な脆弱性の様に思える。

なおこれと関連したものかは解らないが、YARPP は一時的に WordPress の公式プラグインディレクトリから削除されていたが、バージョン 4.2.5 へのアップデートと共に復活した様である。

だが「脆弱性は修正されたのかな?」と更新履歴を見てみると今回の件とはまったく関係ない CSS に関する修正にしか触れていない。

4.2.5
Tested on WordPress 4.2.2.
Styling fix: User can now override all YARPP CSS styling

ソース:https://wordpress.org/plugins/yet-another-related-posts-plugin/changelog/

まあ YARPP が勝手に付け足す !important 付きの CSS の設定はかなりうざかったので、これはこれで待ちに待った修正ではあるのだが、今はそんな場合じゃない。

※2015年5月17日追記
今日は少し時間があったので、テスト環境を用意して YARPP の 4.2.4 と 4.2.5 のそれぞれのバージョンで今回の脆弱性が再現されるかどうか試してみた。結果だけ言うと 4.2.4 では脆弱性が再現されたが、4.2.5 では脆弱性は再現されなかった。要するに 4.2.5 では今回の脆弱性は修正されていると思われる。

結局の所、私が今解るのは 「YARPPに脆弱性がある事が報告された事」と「その脆弱性が修正されたという報告はまだない」という事だけだ。自分で脆弱性の原因を特定して修正するほど YARPP に思い入れもないしその知識もないので、YARPP の使用を停止し、将来的な入れ替えを目指して別の関連記事表示プラグインを試してみる事にした。

経緯がこんな感じであるので、YARPP の代替プラグインはある程度信頼ができる開発元が作っているものが良い、と思っていたらそう言えば公式プラグインの一つである Jetpack に関連投稿表示機能があったではないか。実は以前試しに使ってその精度の低さに使用をやめた事があるのだが、現在はかなり改善されている様だ。

YARPP と比べるとカスタマイズ性がかなり低く、ちょっと表示を変更するにもいちいち functions.php に設定を書きたさなければならない所が面倒だが、長期的なメンテの手間を考えると今後も Jetpack の機能を使った方が良いかも知れない。

http://jetpack.me/support/customize-related-posts/