Yoshiyuki Okamoto
okamo****@gmail*****
2011年 9月 1日 (木) 13:29:10 JST
ごぶさたしております。 岡本です。 有用な情報ありがとうございます。 意識せずに、IPアドレス認証につかっている方がいたら非常に危険ですね。。 ですので報告したほうがいいと思いました。 HTTP_CLIENT_IPについては、(悪意のないケースで)プロキシ経由の場合に正しいIPをとりたいという意図なのかな?と思いました。 私自身もこの辺を意識しないで、PHPからアプリの操作ログ書込する際にip_address()関数を使っていました。。 この関数はリバープロキシ下の場合等も考慮してるんですね(便利ですね!)。 仕様とするか、脆弱性とするかは人によって考え方が違ってくる気がしますが、 もしも仕様とするのであれば、ユーザーガイドのip_address()の説明のところに補足が必須かと思いました。 ご参考まで。 2011年9月1日10:22 Kenji Suzuki <kenji****@gmail*****>: > Kenji です。 > > > 以前から指摘されている $this->input->ip_address() で IP アドレス偽装が可能 > なこのバグですが。 > > #227: Input library does not set IP correctly > https://github.com/EllisLab/CodeIgniter/issues/227 > > しかし、まだ、 > > $_SERVER['HTTP_CLIENT_IP'] > > を無条件に信用しているため、この値を操作できる場合、IP アドレスを操作できます。 > > 通常、このヘッダはクライアントから送れるものですので、攻撃者はどんな値も自由に > 設定できると思うのですが、なぜ、この値を信用しているんでしょうかね? > > 調べたら、CakePHP でもデフォルトはこの値を信用するようになっているようです。 > > https://github.com/cakephp/cakephp/blob/master/cake/libs/controller/components/request_handler.php#L471 > > みんなそんなこの値が信用できる環境で使っているでしょうか? > > > で、とりあえず、以下のような ip_address() を返すコントローラを作成し、 > > https://gist.github.com/1185079 > > CloudIgniter でテストしてみましたが、あっさり改竄した HTTP_CLIENT_IP > のアドレスが返りました。 > > テストのためのコードは、 > https://gist.github.com/1185081 > > > この HTTP_CLIENT_IP を無条件に信用するという仕様は脆弱性で本家にバグ > 報告した方がいいですよね? > > > // Kenji > > _______________________________________________ > Codeigniter-users mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >