WordPressとは何か&セキュリティリスク要因

WordPressという言葉を初めて知って、どのようなものか知りたい、活用できるか検討してみたい、など、WordPressの開発を検討するときに必要な情報を想定して、WordPressとは何かをまとめています。

目次

1. WordPressとは

WordPressとは、PHPベースのWebアプリケーションフレームワークとしても利用できるGPLライセンスのCMSです。

世界で一番利用されているCMSといわれ、コミュニティも充実しており、バグやセキュリティリスク(脆弱性)が報告され、修正され、精緻化してきたCMSです。プラグインなどのサードパーティも充実しています。

1.1. WordPressの読み方

読み方は「ワードプレス」、「wa dopuresu」です。

1.2. WordPressの意味

WordPressに含まれる意味について考えてみました。

CMSとしての意味合い

WordPressの意味にはCMSの意味を含みます。CMSとは、コンテンツ・マネージメント・システムの略です。Webサイトのコンテンツを統合的に管理・保守・更新するためのシステム、またはソフトウエアのことを言います。コンテンツ・マネージメント・システムの略です。

Webアプリケーションフレームワークとしての意味合い

WordPressの意味にはCMSが含まれますが、もう1つ大きな意味を含んでいます。WebアプリケーションフレームワークとしてのWordPressです。CMSとしての利用方法が一般的ですが、強力なWebアプリケーションフレームワークです。

1.3. エンドユーザにもメリットがあるWordPress

簡単に早く開発が行えるなど開発者のメリットも高いですが、開発者ではなく、サイトオーナーがWordPressを選ぶ理由として、マニュアルや書籍が充実している、パッと見で操作が行える、など使い勝手がいいこと、SEOやWebマーケティングの機能が充実して集客に使える点といわれます。開発側都合だけでなく、ユーザファーストに考えるならWordPressは素晴らしいと思います。

2. WordPressとは何か、開発前の入門知識

WordPressの開発前の入門知識を見ていきます。

2.1. WordPressの仕組み

WordPressは他のPHPフレームワークと異なり、イベント駆動型のアーキテクチャを採用しています。MVCではなく、手続き型の処理の実行されるなかで設定されたイベントが条件に応じて動く仕組みになっています。

2.2. WordPressが実行基盤(Webサーバ、PHP、MariaDB or MySQL)

WordPressは、PHPで記述されています。ページや投稿などのデータは、MariaDB(MySQL)に格納されます。PHPとMariaDB(MySQL)を構築し、ApacheやNginxなどのWebサーバに設定したWeb公開ディレクトリにダウンロードしてきたWordPressのZIPまたはtar.gzの媒体を解凍して配置すれば、あとはセットアップダイアログに沿ってインストール操作が行えます。

2.3. WordPressの構成(本体、テーマ、プラグイン)

WordPressは本体にテーマやプラグインを使って設置してサイトを構築します。テーマやプラグインはサードパーティがたくさんあり、それを管理画面から取り込んで使うこともできます。

テーマは、サイトの外観を決めるものです。テーマにロジックを記述することもできますが、通常テーマにはレイアウトやデザインを記述して、プラグインにロジックや共通処理を記述します。

2.4. WordPressのライセンス(GPL)

WordPressをWebアプリケーションフレームワークとして使用したい場合、気になるのがライセンスと思います。

WordPressはGPLというライセンスを採用しています。GPLライセンスは改変や再配布自由ですが、もし配布する場合はソースの公開を求められるライセンスという解釈です。改変したものを個人や組織内で使用している場合は、公開が求められるわけではないですが、第三者に配布する場合はソースを公開しないといけない解釈になります。

2.5. WordPressはアップデート命。

WordPressは、多くの人に利用されており、精緻化していますが、それと同時に脆弱性も公開されます。アップデートが行えるように設計する必要があります。本体には手を入れず、テーマ、プラグインの開発で対応し、テーマ、プラグインは、公ではないAPIの利用は避けるようにしないとです。

たとえば、本体内部のソースを見て、それを利用したり、本体の都合の悪い機能がある場合に、本体には手を入れずプラグインのコードで本体と同じ関数を定義して、そちらが呼ばれるようにする、といった使い方はバージョンアップ時に引数が変わったりして、動かなくなる場合があります。

2.6. WordPressのインストール方法、基本的な使い方

WordPressのインストール方法や基本的な使い方は、公式HPに丁寧に記載されていて、これを見るべきと思います。インストール前に考慮する点など、把握しておきたいです。

3. 気になるWordPressのセキュリティリスク要因

WordPressは多くの利用者に利用され、バグやセキュリティ上の欠陥が潰されてきたツールです。他のCMSやフレームワークと比べても精緻化されており、強力です。ですが、他のツールも同じですが、WordPressを構築する側、運用する側がダメだとセキュリティはダメダメです。以下では、気になるWordPressのセキュリティ対策としてどのような考慮が必要か見ていきます。

3.1. 共用のレンタルサーバで利用したくない理由

WordPressは、PHPにたくさんのリソースがとられるため、想像以上にしソースを消費します。1Gメモリとかの貧弱なVPSなどで運用するとすぐに落とされてしまいます。サーバのスペックの見積もりは重要です。そこで格安で潤沢なリソースが利用できるレンタルサーバを利用するメリットがあります。でも同じサーバで多数のユーザが利用するレンタルサーバではWordPressは利用したくないです。理由はセキュリティが心配で、まだ落とされた方がましと思うからです。

同じサーバ上ならいろいろできてしまう

WordPressはデータベースを使用します。以前同じレンタルサーバで2つのアカウントを持っていて、2つとも同じサーバになったことがあります。その際、wp-config.phpのデータベースの接続先を間違えて、別のアカウントのデータベースにしてしまいました。なんと別のアカウントのデータベースにつなげてしまいました。共用利用者が乗っ取られるとそのサーバ全員がリスクになってしまいます。

共用利用している他のサイトは信用できない。

https://www.aguse.jp/などで自分のレンタルサーバを調べてみると、100サイト以上も同居していました。こんなにたくさん居るときっとCMSツールのパスワード管理が甘くて、乗っ取られてもおかしくないユーザがいると思います。試しに検索エンジンでエラーメッセージとかで検索するとひどいサイトがたくさん見つかります。

ユーザIDやパス構成がわかる

レンタルサーバにSSHで接続してpsコマンド打ってば共用利用者のユーザ名で実行されているhttpdやPHPのプロセスがたくさん見れるはずです。またレンタルサーバの構成はマニュアルにも載っているのですぐにわかります。また公開されているコンテンツを見ればどこに何があるかわかります。FTPアカウントもデータベースのデフォルトユーザ名もユーザIDと同じことも多く、あとはデータベースのパスワードを調べればという状態です。それに過去にロリポップなどではシンボリックリンクで共用利用者のwp-config.phpの内容のぞき見られ被害が多発したこともあったようです(参考 https://lolipop.jp/info/news/4149/)。

3.2. WordPressサイトの脆弱性

WordPressも通常のサイトと同じようにセキュリティ対策する必要があります。また、WordPress特有ともいえる脆弱性を作りやすいポイントもあります。

3.3. 通常のWebサイトとしてのセキュリティリスク要因

WordPressのセキュリティ関連の記事を検索すると、セキュリティプラグインを導入する方法がよく目に付きますが、WordPress自体はPHPのWebアプリケーションですので、通常のWebサイトとしてのセキュリティ対策の考慮が必要です。WordPressだけではなく、PHPやMariaDB(MySQL)、Webサーバやネットワークにも目を向けて、セキュリティ対策を行う必要があります。

参考)SEが気づきにくいWebサイトの脆弱性の見つけ方

脆弱性とは、脅威と結びついて実害を発生させる原因となるセキュリティリスクです。読み方は「きじゃくせい」は誤りで、「ぜいじゃくせい」です。SEが気づきにくいWebサイトの脆弱性の見つけ方をテーマに脆弱性の意味、脆弱性調査の方法をまとめています。

続きを読む

3.4. 3つのWordPress固有のセキュリティリスク要因

WordPressで発生しやすい、WordPress固有のセキュリティリスク要因について見ていきます。

WordPress固有観点1)脆弱性対策情報の公開にともない公知となる脆弱性の悪用

脆弱性対策情報の公開にともない公知となる脆弱性の悪用の増加が多くなってきているといわれますが、WordPressは知名度が高く、しっかり対応しないと危ないです。しかも、WordPressバージョン情報が露出しやすく、該当バージョンの脆弱性が見つけやすくなっています。

WordPressのインストールや更新毎に「readme.html」が配置され、このページにはバージョンが表示されます。投稿ページなど任意のページも、generatorやCSSファイルやJSファイルの後ろのパラメータでバージョンがわかります。

WordPressは利用者の多いCMSなので脆弱性情報も流通しています。WordPressのバージョンが古いことがわかると公開された脆弱性を付いた攻撃が行われやすくなります。

WordPress固有観点2)ユーザIDの露出

WordPressは、ユーザIDが露出しやすいです。「?author=番号(1~)」をURLのパラメータに設定してアクセスするURLやHTMLのコード内にユーザIDが含まれるページが表示されます。

最近のWordPressはパスワードの候補が生成される入力画面になっているので、それに従えば、認証が突破されることはないと思いますが、ユーザにパスワード設定させると、覚えやすいパスワードが設定されかねないので運用上の注意が必要です。

WordPress固有観点3)クローラの耐性

WordPressはマンモスみたいなPHPファイルを読み込んで動きますので、非常にリソースを食います。MariaDB(MySQL)よりも先にPHPが食うメモリやCPUリソースが問題になります。メモリが不足するとOSの機能により、MariaDB(MySQL)のプロセスが停止させられることがあります。サイトが重たいとユーザが離脱しますし、サイトが落とされやすい場合、営業が行えなくなりますので、重要な観点です。

参考)WordPressデータベース接続確立エラー原因別復旧法>3.1. アクセス集中&メモリエラー(Linuxの場合OOM Killer)が発生している

「データベース接続確立エラー」がWordPressのページに表示された場合の原因と復旧方法をまとめています。

続きを読む

4. まとめ

WordPressとは何かのテーマで記述してきましたが、以下のようにまとめてみました。

4.1. WordPressとは世界でシェアNo.1の便利なCMS

WordPressとは、多くの利用者によって精緻化されてきた便利なオープンソースです。

4.2. WordPressにはCMSと開発フレームワークの2つの意味がある

CMSとして、作られてきたツールですが、Webアプリケーションフレームワークとしても利用価値が高いです。

4.3. WordPressはちゃんと構築してセキュリティを確保すれば最高

WordPress自体は強固ですが、構築する側、運用する側がダメだとWordPressも危ないです。WordPressをちゃんと構築して、運用し、セキュリティを確保すれば最高ですね。

4.4. WordPressの制限事項

いい面ばかり強調してきましたが、最後にWordPressの制限事項、限界と思われる点をまとめてみました。

  • ライセンスはGPL ・・・製品として再配布する際は注意が必要。
  • 頻繁な更新 ・・・脆弱性が注目されやすく、更新しないと危ない
  • パフォーマンス ・・・1台構成のサーバなら100~200万PVくらいが限界と思われる
  • データベース変更 ・・・MariaDB(MySQL)以外へのマイグレーションは困難
  • MVCでない ・・・イベント駆動型アーキテクチャなのでMVCじゃない
  • オブジェクト指向 ・・・手続き型からスタートしているため、全部がオブジェクト指向じゃない

あと便利なプラグインですが、サードパーティのプラグインを使うときは以下の注意点があります。人気があり安定しているものも多いですが、作成するアプリケーションのコアな部分をサードパーティのプラグインに依存すると、危険な場合もあります。

  • WordPressのアップグレードのためにプラグインが使えなくなることがある
  • 開発者がプラグインの開発を中止することがある
  • プラグインがコンスタントに更新されない場合がある

更新履歴

知って得する知識を目指して、加筆訂正を行っていきます。

  • 2017年04月24日 レンタルサーバでWordPressを利用したくない理由について追記しました。
  • 2017年01月13日 サードパーティのプラグイン使用時の注意点について追記しました。
  • 2017年01月12日 記事をUPしました。

SNSでもご購読できます。