FuelPHP1.6.1以下対象の2013-08-24に出た虚弱性の対応方法

先日FuelPHPのインストール方法の記事を書いたばかりで、
ちょうどセキュリティ関係の話題が出ていましたので、
紹介がてらに自分のソースも修正していきます。

FuelPHP Security Advisories

FuelPHPのサイトにSecurity Advisoriesというセキュリティ関係のページができたのですね。

http://d.hatena.ne.jp/Kenji_s/20130826
このブログで知りました。

はじめてのフレームワークとしてのFuelPHPではお世話になりました。

2013-08-24に出された虚弱性について

2つほど出ていました、どちらもlow riskなので条件が重ならないと動作しないようです。

  1. DB quote_identifier()でSQLインジェクションができる可能性がある
  2. FuelPHPが利用しているhtmlLawedのライブラリに問題があってXSSができる可能性がある

1つ目の虚弱性修正

1つ目の虚弱性はPHP5.5でFuelを動作させたときに警告がその辺りで出ていたような。。。。
1.7以降では修正されているようです。
1.6.1以下のパージョンで修正する方法が紹介されていましたのでその通りに修正していきます。

fixed preg_replace deprecated error in PHP 5.5 :
https://github.com/fuel/core/commit/270ba79b39e93317e88260a162872ea48e8cfb2c

変更箇所 630行目ぐらい
fuel/core/classes/database/connection.php

     if (strpos($value, '"') !== false)
     {
         // required for PHP 5.5- (no access to $this in closure)
         $that = $this;
         // Quote the column in FUNC("ident") identifiers
         return preg_replace_callback('/"(.+?)"/', function ($matches) use($that) { return $that->quote_identifier($matches[1]); }, $value);
     }

2つ目の虚弱性修正

2つ目の虚弱性はhtmllawedのサイトに行って
最新版をFuelの中ある物と入れ替えることで修正できるようです。

ダウンロードするもの
htmLawed 1.1.16, 27 August 2013
http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/

ここから、htmLawed.phpをダウンロードする。
Lが大文字なので名前を変えてやる。

$ mv htmlLawed.php htmllawed.php

入れ替え先 fuel/core/vendor/htmlawed/htmlawed.php

これと入れ替えるといいようです。
ただセキュリティ勧告のページでも最後に(note the lowercase!)と書いてあるので、
置き換えるのはいいけど出るのはまれだからな!!と解釈していいのでしょうか。

ちょくちょくこのページで確認していきたいと思います。