[Codeigniter-users] $this->input->ip_address() で IP アドレス偽装可能

Back to archive index

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
>




Codeigniter-users メーリングリストの案内
Back to archive index