WordPress改ざん検知システム-1回目

なんで改ざん検知が必要か

こんにちは、こたかです。

昨日は仕様検討中に寝落ちしてしまいました。改ざん検知システムの仕様検討は頭を使いますね~。

さて、この頃クレジットカード情報漏洩事件が騒がれていますが、「サイト改ざん検知」の仕組みが重要だと感じています。

改ざんによる被害のなかでも一番大きな被害は「情報漏洩」だと思います。

これは、ユーザーの信用も失い、被害報告の工数も発生し、社会的・経済的・時間的・・・損害が出てしまうためです。

そこで、どのように「ページ改ざん」を防止、検知するか対策を考えてみましょう。

改ざんを検知する方法

検知する方法は簡単です。

正しいファイルをあらかじめ保存しておき、定期的にファイルをすべてを比較します。

ファイル数やサイズが大きくなると、時間がかかるようになります。
そこで、工夫が必要になってくるわけです。

ファイルの特徴を比較する方法

ファイルを比較すると時間がかかるので、特徴を比較します。
どのような特徴を選ぶかが重要です。

ファイルのサイズ、更新時刻、特定の文字を含む、含まない、どれを比較するかで、
ファイルを比較する時間と精度が変わってきます。

攻撃者はファイルに少しだけ不正プログラムを埋め込むこともありますし、大胆にすべて削除して書き換える場合もあります。
一番危険なのは、改ざんがばれないように小細工されてしまうケースです。

この頃ではsha1ハッシュを偽装して、同一ハッシュ値を生成できてしまう攻撃の可能性が表明されました。
これは実際にできることになった以上、sha1での比較は意味がありません。

改ざんされた場合の対応フローは?

改ざんを検知できた場合は、ただちにサイトを停止し、被害の拡大を防止します。
侵入のログを確認するため、URLアクセスの履歴を確認します。
情報漏洩が無いことを確認します。ここで漏洩があると大変です。

個人情報保護法の要件に該当す場合は、報告フォームに入力して報告します。
被害者へ漏洩の謝罪メールをおくります。

手口が解析できたら、対策します。
脆弱性を直して、サイトを再開します。

ECサイトほぼすべて、個人情報を扱うため対策が必要です。

情報漏洩する前にブロック

そこで、情報漏洩する前に、サイトを停止させることが重要になってきます。
「どの改ざんが一番危険か」を想定し、その改ざんを重点的に検知するようにします。

例えば、決済開始前に決済システムの正当性を確認します。
この確認では「改ざん検知システム」が正常動作していることが前提なので、リバースプロキシ側で行う必要があります。
改ざんされた段階で、内部のjsやphpの検知プログラムを回避されてしまい、チェック機能が呼ばれない可能性があるためです。

決済情報の入力を開始する前に改ざんをチェックし、改ざんを検知した場合はサイトを停止できます。
「決済ページへのリンクが含まれているファイル」や「決済ページの構成ファイル」だけは、毎回チェックすればいいわけです。
重要なファイルを絞り込むことで、リアルタイムスキャンが可能になります。

外部URLへリンクさせない

そもそも、外部サーバーへリンクを張らないサイトでは、外部サイトへのリンクを応答させない対策ができます。
不正画面にあるURLは外部URLにする必要があるためです。
不正なjsやhtmlを外部から読み込ませようとする攻撃に効果が期待できます。

こたかのリバースプロキシでは応答をチェックすることができます。
「http://」 と「https://」を監視して、自身のドメイン以外の場合は文字列を消す方法があります。

ウォッチドックタイマー方式を活用

ウォッチドックタイマーとは、定期的に応答がある状態を構築し、「応答が無い状態」をエラーとして検知する仕組みです。

自宅にサーバーを稼働させているサーバー管理者は多いと思います。
サーバー管理者といえばサーバーが好きな人が多いですし、独自のサーバーは楽しいものです。

そこで、自宅サーバーから、公開サーバーへ定期的にチェック用URLにアクセスして、「応答があること」「改ざんログが無いこと」を確認します。
これにより、publicフォルダーへの改ざんをチェックします。publicが改ざんされてしまうと、サイト全体が機能していない状態なので、改ざん検知プログラムも停止してしまいます。

この方法は自宅サーバーでなくても、2つ以上サーバーがあれば、お互いにチェックさせることが可能です。
ここで重要なのは、同一サーバー内では「お互い」とはしないことです。サーバー全体が改ざんされてしまった場合の検知なので、同一サーバーでは意味がありません。「サーバーからでは書き換えができない場所」に配置する必要があります。

攻撃者の人柄をみる

攻撃者はどういう人なのかも、対策の検討には効果的です。
例えば「攻撃するためのテクニックをどこで収集しているのか」となります。

特に「サーバーを書き換えるテクニック」は、脆弱性情報をもとにしていると推測されます。
そのため、脆弱性情報に公開されたら、その脆弱性による攻撃を警戒できます。
書き換えが可能であることが分かれば、そのあとの改ざんされる内容と手口は同じです。自動化して攻撃するためです。

攻撃者の目的も参考になります。個人情報なのか、ボットとしてサーバーを乗っ取りたいのか。
狙い目はもちろん、「決済情報」と「個人情報」だと推測されます。「お金が欲しいので窃盗する」がほとんどだと思います。

そこで、「決済情報・個人情報の保護」「他のURLへのアクセス防止」を重点的に対策していきます。

具体的な対策はどうすればいいか

恐らく、一番重要な課題だと思います。

WordPressのサイトのオーナーは、具体的な対策が知りたいことだと思います。

こたかはレンタルサーバー向けにPHPで実装してみました。
これから、実装中に起きた課題なども合わせて、お伝えしていきたいと思います。

それではまた、次の記事でお会いしましょう。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です