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

Back to archive index

Kenji Suzuki kenji****@gmail*****
2011年 9月 1日 (木) 10:22:17 JST


Kenji です。


以前から指摘されている $this->input->ip_address() で IP アドレス偽装が可能
なこのバグですが。

#227: Input library does not set IP correctly
https://github.com/EllisLab/CodeIgniter/issues/227

修正済み(2.1.0-dev で)とされています。


しかし、まだ、

$_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 メーリングリストの案内
Back to archive index