ウィリアムのいたずらの、まちあるき、たべあるきーPART2

gooブログ「ウィリアムのいたずらの、まちあるき、たべあるき」がお引越ししてきました

「セキュアなコードの書き方を知っていても、書かない」-やっぱアスペクト指向とかっすかね?



今日、SANS Future Visions 2009 Tokyoで出てきたお話で、
教育もあまり役に立ってないっていう件で、

・セキュアなプログラムのコードの書き方は、知っている。
・でも実際には書いていない

っていう話があったけど、まーねー




たとえば、Cで文字領域を取ったりするとき
char *get_string_area(int len)
{
   return (char *)malloc(len*2+1);
}



みたいなことをやってしまうことがある。
これは、セキュアではない(lenに、もしなんかのはずみで
マイナスを入れられると、エリアがとれず・・・)

セキュアなコーディングにする場合、lenはintじゃなくって、
size_tなり、unsignedにすべきなんだけど、
プログラム上、そーすると、めんどっちいケースがあって、
また、文脈上、絶対マイナスこねーよ!みたいなときは、
intにしちゃう。

みたいなケース。




ただ、求められるセキュリティレベルや、危険性などによっても違うわけで、
たとえば、テスト用のプログラムや、研究の論文を書くとき用、
ツール自動生成用などなら、上記の書き方でぜんぜんOKなわけだ。
それを、ほかにもっていくと、問題が起こる。




とすると、
・抽象的に記述しておいて(図など?)あとで、環境に応じて、セキュリティを考慮した
 ライブラリや関数を選んで、ソースを自動生成するとか

・アスペクト指向のように、プログラミング後、セキュリティが必要なら、
 セキュリティ部分を後付する

とかしたほうが、現実的なのかしら?