軽量なWordPress用ブルートフォースアタック対策プラグイン

軽量なWordPress用ブルートフォースアタック対策プラグイン

ネット上には非常に強力なWordPress向けブルートフォースアタック対策プラグインが転がっているのですが、結構重めのものが多いです。実名は挙げませんが、有料機能が存在するとか、特定の機能へのアクセスはAPIが必要など、何だかんだで動作が重いです。なのでシンプルなブルートフォースアタック対策プラグインを作ることを目的として完成させたものです。 brute-force-guard-lite 特徴はとにかく軽量です。あと一応PCPでチェック掛けているので、エラーは出ません(readmeがない以外)。いくつか列挙 ...

全て読む

WordPressの権限昇格を突かれた後の強制降格プラグイン

WordPressの権限昇格を突かれた後の強制降格プラグイン

WordPressの脆弱性で最も多いのは、テーマやプラグイン経由での脆弱性突破による権限昇格です。My WP Translateの脆弱性の例では、低権限ユーザーが管理者権限に昇格することで、不正な操作を許してしまうという致命的な脆弱性が発生しました。では発想を変えましょう。作られることを前提に考えてしまえば良いのです。肝心なのは、不正に忍び込まれたあとの事後対応です。仮に不正操作が成功したとしても、その後すぐに権限が購読者に降格させられたら目も当てられません(あくまで攻撃者にとって)。それを目指します。 明 ...

全て読む

WordPressの権限昇格を封印する

WordPressの権限昇格を封印する

WordPressにおける脆弱性で最も多いのは、脆弱なプラグインやテーマを使用した場合に権限を昇格(乗っ取られる)ことです。最近で有名なのは、「My WP Translate」に権限昇格の脆弱性が発見され、一時的に公開が停止される事態になりました。まず、WordPressの権限昇格の仕組みから考えて封鎖してみましょう。 権限昇格の手口 WordPressの権限昇格には大きく分けてこのような手口があります。 (A) 任意 update_option() 実行型 プラグインやテーマのAJAXやRESTエンドポイ ...

全て読む

WordPressでワードやエクセルのメタデータを消す

WordPressでワードやエクセルのメタデータを消す

Wordやエクセルはメタデータの宝庫だったりします。作者情報や制作日を平気で掲載します。とはいえMicrosoftの仕様なので仕方がないのですが、私にとってはどうも許せない仕様になります。ので消しましょう慈悲はない(無慈悲) 実はZIP形式のWordやエクセル 拡張子上はdocxなどと名乗っていますが、内部のファイルは実はZipを圧縮したものです。その中の「core.xml, app.xml」に詳細情報が書かれています。例えば「テストファイル.docx」を作ってみます。 そしてこのファイルを「テストファイル ...

全て読む

WordPressのファイル投稿を制御しよう

WordPressのファイル投稿を制御しよう

幻想郷はなんでも受け入れるとか言ってたのが八雲紫ですが、WordPressは制限付きで受け入れるのが私の考えです。当たり前の話だと思いますが、受け入れすぎはロクなことになりません。特にウェブアプリケーション層でフリーダムだと、そのうち事故ります。極端な話、WordPressで動画配信する必要があるのか?という問いになります。前置きはともかく、規制しましょう。EXIF削除とファイルチェックです ファイルチェックの重要性 一応WordPressの標準機能で、PHPやらEXEやらの直接投稿は制限されているものの、 ...

全て読む

author=1へのアクセスをプラグインで禁止してみる

author=1へのアクセスをプラグインで禁止してみる

脱functions.phpの思想が広まることを祈っています。冒頭からいきなり・・・ですが、ググるとよく「functions.phpに~を記載して~」と出ますが、個人的には好きじゃないやり方です。テーマをアップロードするだけできれいに吹き飛びます。子テーマにするという手もあるのですが、いずれにしろfunctions.phpが延々と長くなっていくだけなので、テーマで提供する機能とプラグインで提供できる機能は割り切りましょう。というわけで今回のプラグインです。 author=1を叩くのを禁止するだけでは不十分? ...

全て読む

複数人で管理するWordPressのメディア問題を何とかする

複数人で管理するWordPressのメディア問題を何とかする

WordPressは一応、CMS(コンテンツ・マネジメント・システム)として複数人の管理が可能になっています。しかしそのセキュリティ的なところを見ると首を傾げる仕様があることは事実です。特に困るのは他人のアップロードしたメディアが全員に見えてしまう点ではないでしょうか メディアが見えると何が問題? 用途によりますが、例えばサイトのメディアすべてが見える状態だと、第三者には秘匿しておきたいファイルまでもが見えます。新規の記事に使う程度なら良いのですが、万が一にも個人情報の含まれるファイルをアップロードしていた ...

全て読む

WordPressでアップロードされるファイルの名前を強制変更―続編

WordPressでアップロードされるファイルの名前を強制変更―続編

この手のプラグインはいくつか作ったのですが、今回は強制ファイルリネームの続きとなります。以前にも同じようなプラグインは作成したのですが、Gutenbergを経由する場合にpost-title(ファイルのタイトル)がリネームされないバグがありました。今回は強制的にファイル名も指定し、憶測を不可能にしてみます。 REST APIを経由する場合とメディアアップロードの違い WordPressの内部構造として、メディアアップロードを使う場合とGutenberg(エディタ)を経由する場合で処理が異なります。ここでハマ ...

全て読む

WordPressのfunctions.phpの書き方

WordPressのfunctions.phpの書き方

CMSとしてのWordPressは大変人気が出ていますが、その一方、functions.phpになんでも書いてしまうことでコードが冗長化する悲劇(?)が絶えません。かくいう私もかつてはズラズラと書き連ね、気づいたら500行超え…ということもありました。しかし、可読性があまりに悪くなるのでお勧めできません。 functions.phpは「弄らない」ぐらいの考えで 特に有料、無料を問わず第三者が作ったものであればなおのこと守るべきでしょう。functions.phpを冗長にすると何も良いことがありません(子テー ...

全て読む

admin-ajax.phpやREST APIの動きを制御してみよう

admin-ajax.phpやREST APIの動きを制御してみよう

WordPressにおいて脆弱性が生まれやすい経路がいくつかあります。(1)REST API経由の操作。(2)XMLRPC。(3)wp-admin/admin-ajax.phpの3つが代表格として挙げられます。これらの動作を野放しにするのではなく、あえて制御下に置き、操作をコントロールするというのが今回の試みです。REST APIの制御プラグイン「REST API Shield and XML RPC Blocker」(WordPress.org)とご一緒にどうぞ。 ◇ REST API経由での操作の脆弱性 ...

全て読む