WordPress(CMS)をサブディレクトリに置くことのセキュリティ上の間違った解釈

日本国内だけでなく、世界的にも有名でシェアの高いWordPressを知っている人は多いのではないでしょうか。

テーマやプラグインを活用することで、デザインが洗練されたブログやコーポレートサイトを制作したり、ECサイトなどを運営することもできるWordPressですが、セキュリティ上の課題を指摘されることもしばしば。

本稿では、そんなWordPressのセキュリティについて、サブディレクトリに設置することの間違った解釈を
詳しく解説し正しいセキュリティー対策について説明します。

ポイント
【CMSはサブディレクトリにただ、インストールするだけではセキュリティ対策上の効果は一切ない】

目次

WordPress(CMS)が持つ3つの基礎的な脆弱性

WordPressは高いシェア率を誇っている優れたCMS(コンテンツ管理システム)ですが、そのソースコード
はGitHubを通じてだれでも簡単に取得し・変更することができる。

これをオープンソースソフトウェアと呼びますが、CMSを含めたプログラムがオープンソースである
ことは、1つの脆弱性であると言っても過言ではありません。

では、Wordpress(CMS)に潜む技術的な脆弱性「セキュリティーホール」を三つ見ていきましょう。

1.REST API

REST APIとはモバイルアプリやWEBアプリケーションでもっとも使われる、
API(アプリケーションプログラミングインターフェイス)です。

ウェブサービスやアプリケーション内の様々なデータをJSON形式のデータに格納することで
外部のアプリケーションからサービス(Wordpress)の情報の取得などが行うことができます。

WordPressベースのサイトに埋め込まれている関連記事のブログカードの「データもREST API」によって
取得・生成されています。

そんなREST API の設計上の欠陥としてよくあるのは、ユーザー認証情報、キー、トークンなどの機微な情報を URL に含めることです。 TLS が使用されている場合でも、攻撃者はこの情報を簡単に発見できます。

また、旧バージョンのWordpressには認証を回避して特権昇格(サイト内を自由に操作できる状況)になってしまうという開発上の致命的なミスがありました。

現在のバージョンではこの脆弱性は対策されています。

2.SQLインジェクション

「SQLインジェクション」とは、データベース言語(SQL)を利用して、Webアプリケーションの脆弱性を悪用する攻撃のことをいいます。

コマンドインジェクションと同様に、攻撃者がWebサーバ内に保存されているファイルを読み出したり、システムに関係する操作、プログラムを不正に実行されたりします。

WordPressなどのCMSはコンテンツのデータをリレーショナルデータベースであるSQLサーバーに格納するため
この脆弱性が非常に強いリスクを持ちます。

主な対策方法:

  • MySQLのバージョンを常に最新にし続ける
  • WAF(ウェブアプリケーションファイアーウォール)を活用する
  • エスケープ処理、サニタイジングを行う
  • データの変数化

詳しい解説はこちらでも行っています。

3.XMLーRPC

XMLデータを用いた遠隔呼び戻し(リモートプロシージャコール)と呼ばれるXML-RPCは、
これを用いることで使い慣れた外部のブログエディターなどで記事を編集したり、スマホなどから
コンテンツを更新したりすることができます。

しかし、「コマンドインジェクション」と呼ばれる脆弱性を持っていることが多いです。

「コマンドインジェクション」とは、コマンド(コンピュータの利用者がOSのシェルに与える文字列による命令のこと)を利用し、Webアプリケーションの脆弱性を悪用する攻撃です。WebアプリケーションのコードにOSコマンドの呼び出し処理があり、ユーザーが入力したデータがコマンドの一部分を構成している場合に発生します。

この脆弱性を防ぐには:

・Wordpressを最新にする
・外部からのアクセスを制限する
・機能を無効化する

以上のいずれです。

 

CMSはサブディレクトリにただ、インストールするだけではセキュリティ対策上の効果は一切ない】

これらの脆弱性はただ、CMSを「サブディレクトリ」上にインストールしただけでは防げませんなぜなら
【ディレクトリトラバーサル】を使えば結局インストール先を特定することができてしまうためです。

「ディレクトリトラバーサル」とは、「../」のような文字列を使ってサーバのディレクトリ・パスを遡る攻撃のことです。

Webサーバに置いたままにしている非公開ファイルにアクセスし、そこに保存されている情報を盗み出す攻撃です。
これを悪用してwp-configでも抜き出されたらもうおしまい、攻撃者のやりたい放題になってしまいます。

サブディレクトリのセキュリティ上効果的な運用①ディレクトリ名を変更する

サブディレクトリでCMSをセキュリティ上効果的に運用する場合は、まず先にディレクトリ名を変更しましょう。
wpやwordpressとか「WordPress」を連想するディレクトリ名はルートディレクトリに置いてるのと
変わらなくなってしまいます。

サブディレクトリのセキュリティ上効果的な運用②アクセス制限や権限
を見直す

CMSをコアファイルが置かれていると連想できないサブディレクトリ上においてもアクセス制限をかけなかったり、
ファイル操作権限(パーミッション)を見直していなければ「ディレクトリトラバーサル」で結局情報が抜き出せてしまいます。

ですのでサブディレクトリに置こうがルートディレクトリに置こうがファイルやフォルダ―(ディレクトリ)の
パーミッション設定は適切に行いましょう。

もちろん、WordPress管理画面が格納されているwp-adminへのBASIC認証やクライアント証明書方式の認証を
施すのも強力な乗っ取り対策として効果的です。

WordPress(CMS)をサブディレクトリ上に置く本来のユースケース

セキュリティ上の観点だけでサブディレクトリにCMSを置くということは本来の
「サブディレクトリのユースケース」ではなくあまり推奨できません。

CMSをサブディレクトリ上に設置する一般的なユースケースは:

  • 開発環境を用意する
  • サブサイトを運営する
  • 異なるCMSや静的ページと共存させる

このいずれかです。

開発環境を用意する

プラグインやテーマを本番環境と同じサーバー・コンテンツで開発したいというケースは少なくありません。

この時開発環境の事をWordPressでは「ステージング環境」と呼んでいますがステージング環境をルートディレクトリー内で作成しようとするとかなり管理が複雑になりますし、CMS共存上の問題が発生してしまう場合もあります。

このようなケースにおいて、サブディレクトリ上にCMSをインストールし、BASIC認証などでアクセスを制限しておくのがごく一般的なユースケースと言えます。

サブサイトを運営する

関連した同じプロダクト(テーマ)の違うジャンルの情報が複数のページにまたがって作成・配信される場合、
サブディレクトリ形式のサブサイトを用意することで検索エンジンへの関連性のアピールとコンテンツ管理者の
管理が円滑になると言われています。

異なるCMSや静的ページと共存させる

他えば、デザインや利便性の観点で企業ページはMoval-Type(MT)オウンドメディアはWordPressで
というケースがまれに存在していました。

この時ルートディレクトリ上に二つのCMSが存在するとMTの仕様上サイト構築・生成時に静的ファイル(HTML)が生成・保存されてしまうためパーマリンクMTがWordPressに内包されサブディレクトリとして扱われる。
という問題が発生します。

こうなってしまうと管理は大変ですし、アクセスユーザーも使いにくくなってしまいますね。

まとめ:WordPress(CMS)をルートに置くかはセキュリティリスクに
影響しない

ここまで、WordPress(CMS)の基本的な脆弱性とそれを防ぐためにセキュリティ上効果があると言われている
サブディレクトリ設置(インストール)の誤解されている点を解説しました。

WordPress(CMS)をルートに置くか「サブディレクトリ」に置くかは以下の対策をしない限り、
セキュリティリスクに影響しないということが言えます。

  • パーミッションを適切に設定する。
  • サブディレクトリを使う場合はサービス名やカテゴリー名を基準とし「WPやWordPress」を連想させる
    文言を含めない。
  • WAF(ウェブアプリケーションファイアーウォールを導入する)

セキュリティ上の観点だけでサブディレクトリにCMSを置くということは本来のユースケースではないです。

また、月間数千万PV超えるようなマンモスサイトになるまでそこまで意識せず(SiteGuard)などのWAFを
入れて、各プログラム(プラグインやPHP,SQL,WordPressのコア)を最新にしておけば十分と思います。

補足ですが、サイトURL(パーマリンク)がサブディレクトリになっているサイトはドメインルートのサイト審査が
終るまでGoogle Adsenseの審査や掲載をすることはできないです。

他のSSPやアドネットワークであればサブディレクトリだったとしても審査に出せる場合がありますが、ads.txt
が機能しないので収益性が低下するケースがありますよ。

この記事が気に入ったら
いいね または フォローしてね!

参考になったらシェア!

この記事を書いた人

爲國 勇芽(魔理沙っち)のアバター 爲國 勇芽(魔理沙っち) 自称:精肉社畜個人投資家自作erブロガーゲーマー

埼玉県在住のスーパーのフリーターをしながらAdsense広告によるマネタイズについて研究しています。

ITの様々なニュースや小技の発信とネット回線を紹介するメディアを運営しながら広告マネタイズのテクニックやアドテクにまつわる情報を発信しています。

トラックバック

トラックバックURL


トラックバックをされる際は以下アドレスをお使いください。
https://tech-life-media.com/technology/12212/trackback/

コメント

コメントする

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