ikepyonのだめ人間日記

セキュリティに関することを書いていく予定。

PHPは危険か?

ちと、ネタで書いたことに、まっちゃさんに変な誤解を与えたようなので、調べてみる。
データの元はhttp://nvd.nist.gov/を使う。このサイトが何かはがんばって読んでみてw
で、ここで、PHP自身の脆弱性の数を調べてみる。

PHP言語の脆弱性

Year 2007 2006 2005 2004 2003 2002 2001 2000
# of Vulns 82 35 17 6 11 12 4 2
% of Total 2% 1% 0% 0% 1% 1% 0% 0%

今年発見された脆弱性が妙に多いのは、MOPBで公開されたためだろう。
比較のために、JavaPerl脆弱性の数は?というと

Java言語の脆弱性

Year 2005 2003 1999 1996
# of Vulns 4 1 1 1
% of Total 0% 0% 0% 1%

Perl言語の脆弱性

Year 2005 2004 2003 2000 1999 1997
# of Vulns 6 3 1 1 1 1
% of Total 0% 0% 0% 0% 0% 0%

まあ、確かに、JavaPerlと比べると段違いに多いのは一目瞭然だ。
とはいえ、他の製品、例えばWindows 2000と比較してみる。この際、言語じゃねぇじゃんというツッコミはなしで。

Windows 2000脆弱性

Year 2007 2006 2005 2004 2003 2002 2001 2000 1999 1998 1997
# of Vulns 18 41 68 41 29 42 43 30 18 2 13
% of Total 0% 1% 1% 2% 2% 2% 3% 3% 2% 1% 5%

数だけでWindows 2000と比べてみると、PHPが特段危険といえないところが面白いw

Windowsとの比較はいまいち不適切かも?ということで、Tomcatと比較してみる。TomcatPHPも似たようなものだから、こっちの方が比べる価値があると思われる。

Tomcat脆弱性

Year 2007 2006 2005 2003 2002 2001 2000
# of Vulns 14 1 6 7 11 4 3
% of Total 0% 0% 0% 1% 1% 0% 0%

2007年は特殊なので除外するとしてそれ以外を見ると、確かにPHPは総数は多いけど、PHPが特別にひどいというわけではないのはないんじゃないかなぁ?


で、本当はPHPのアプリの脆弱性の数とJavaのアプリの脆弱性の数を比較してみたかったんだが、統計取るのが面倒そうなので、ちょっと割愛。そのうち取ってみるかも。

結論:PHP言語自体には問題があるかもしれないけど、OSとかWebサーバとかと比べてみても、PHP自体が特別危険というわけではないかも。

追加:
WebSphere Application Server

Year 2007 2006 2005 2002 2001 2000 1999
# of Vulns 13 23 9 1 6 3 1
% of Total 0% 0% 0% 0% 0% 0% 0%

Zend Platform

Year 2007 2006
# of Vulns 2 2
% of Total 0% 0%

これらはあくまで見つかった脆弱性の数なので、脆弱性の数が少ない=安全というわけでもないけどね。