ikepyonのだめ人間日記

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

言語の特性とセキュリティ

http://blog.goo.ne.jp/t_iwano/e/b555f483f742dc6044722dc10a24741a
で書かれていることと、私の考えはほぼ同じです。
どんな言語(Webアプリの開発者がそれこそ書くことはあまりないだろうけど、アセンブラとかCとか)であっても、安全なアプリを作ることは可能だと思います。しかし、安全なアプリを作るための労力が言語の特性によって大きく変わると思う。
例えば、いまどきCでWebアプリなんて組むことはほぼないと思うけど、書くことになったら、文字列処理に気をつけなければ、BoFというスクリプト言語ではほぼ発生しないといっていいくらいの脆弱性が生まれてしまうし、Perl単体でショッピングカートなんて作ろうとしたら、セッション管理の作りこみが大変になってしまう。
といった具合に、それぞれの言語で向き不向きってのが必ずある。
言語の特性を理解した上で、安全なアプリを作ることは可能だが、特性を理解せずに動くことだけを目的にしてアプリを作ってしまうと現状のように、安全でないアプリが量産されることになってしまう。

で、話題のPHPはどうよ?となると、言語の設計思想から見ると、安全より、動くことを優先に考えてるんじゃないの?ってのが私の感想。手っ取り早く、動くものを作るには簡単だけど、安全なものを作ろうとすると、色々考えなきゃならないし、セキュリティ対策っぽいけど、実は対策じゃない仕様とかがあってかえってややこしくなっている気がするんですよ。
その言語の設計思想を反映してか世にあるいわゆるPHPの入門書や入門サイトはセキュリティ対策についての記述がおざなりになってる気がするんだよねぇ。また、簡単に作れまっせという評判だけで、安易にかつてのCGIを書いていた人たちのような動くことだけを目的にしたコーダーがいっぱい出てきている気がするんですよ。統計とってないので実際のところ分からないけど・・・
そういった背景があっての「例えば、PHPを避ける」と言う言葉なのかもしれないなぁと思った。

さて、このあいだの日記に書いた日本中ののぼりを「カレーライス」にしようw - ikepyonのお気楽な日々〜技術ネタ風味〜は単にPHPというフレームワーク(あえて言語といわないw)に存在する脆弱性は、他のOSやWebサーバ、フレームワークと比べて多いかどうかを調べてみただけで、PHPで作られたアプリがJavaPerlで作られたアプリより脆弱性が多いということを示しているのではない。
本当にPHPで作られたアプリは他と比べて脆弱性が多いかどうか?ということを調べるにはただ脆弱性の総数を数えるのではなく、各開発言語毎に1つのアプリで脆弱性がどれだけ見つかったか?と言う数の平均を取って見ないとアプリの母数が違うからわかんないだろうなぁ。