WordPressは有名なオープンソースのCMSで豊富なプラグインを活用することにより機能性にも優れ、多くの個人ブログや中規模Webサイトに導入されています。
数多くのCMSの中でもそのシェアの割合の高さゆえ、WordPress内のファイルに対しプログラムの脆弱性を狙った不特定の攻撃も多く、適切に最新版へのアップデートを行わなければWebサイトは危険にさらされます。

攻撃を受けやすいとされるファイルは「admin-ajax.php」「wp-admin.php」「xmlrpc.php」あたりが挙がります。
今回のテーマの「admin-ajax.php」とは、どのような役割のファイルなのでしょうか。

「admin-ajax.php」の機能

「admin-ajax.php」はWordPressでAjax(Webブラウザ内で非同期通信を行いながらインターフェイスの構築を行うプログラミング手法)を実行する際に利用するファイルになります。
Webブラウザ上でWordPressのfunctionに記述された任意の関数の実行や、データベースへのアクセスも可能です。
リアルタイムでデータベースへアクセスにリクエスト結果をさせたい場合などに有効な機能です。

アクセスログについて

「admin-ajax.php」はパラメータを含んだアクセスがログに記録されることが多く、想定どおりの正常なアクセスの場合もあるので、攻撃なのかどうかの判断が難しいのですが、WordPressに脆弱性を含んだプラグインがインストールされている場合はプラグインの脆弱性への攻撃のため「admin-ajax.php」を利用されることがあります。

★WordPressが導入されたサーバーのログ一例
——————-
/wp-admin/admin-ajax.php?action=duplicator_download&file=../wp-config.php
/wp-admin/admin-ajax.php?action=sif_upload_file
——————-

これは「admin-ajax.php」の引数のactionで任意のプラグインを指定し、ディレクトリトラバーサルを仕掛けることで、不正にWordPressの極めて重要なファイルの取得を試みている例です。(※action=「文字列=プラグインで使用される関数」)
「admin-ajax.php」単体への攻撃というよりも導入されているプラグインが狙われている、という解釈ができます。

まとめ

「admin-ajax.php」は導入されているプラグインやWordPressの関数との組み合わせによる複合的な理由により、攻撃を受けるリスクがあります。
WordPressには限りませんが、古いバージョンのCMSを利用し続けることはセキュリティの観点から大きなリスクがあります。
安全に運用するにあたってはコアファイルの最新版へのアップデートだけではなく、インストールされているプラグインの定期的な見直しや最新版へのアップデートも重要です。