Black Hat Japan 2007 Briefings 潜入レポート「スタティック分析によるセキュアプログラミング」 Jacob West 氏
10月25日、26日の2日間、新宿で情報セキュリティの専門家が集う国際会議「Black Hat Japan 2007 Briefings」が開催された。Scanでは同会議に特派記者を派遣し、その模様を報告する。
特集
特集
─
● 講演者について
Jacob West 氏は、本講演のタイトル「Secure Programming with Static Analysis (スタティック分析によるセキュアプログラミング)」と同名の書籍の執筆者でもある、このジャンルの第一人者だ。Amazon.comでは「Secure Programming with Static Analysis」は五つ星で評価されていた。
● 過去の過ちから学ぶということ
冒頭で、バッファオーバーフローとクロスサイトスクリプティング(以降XSS)とを比較し、両者に多くの共通点がありながら、前者の過ちで得た教訓を、後者の対策に生かし切れていないとの指摘があった。具体的な共通点として挙げられたのは、以下の項目である。
・悪意のあるコードの実行を許す
・脆弱性を突くコードを書くのは、XSSの方が簡単
・プログラミングを行う際に犯しがちな、ありふれたミスが原因
・十年来にわたって知られている問題である
●後付けの対策から前倒しの対策へ
プログラマにとっては耳が痛い指摘であるが、特にチームとしてコーディングを行う時に、全体として一定の品質を担保するのが難しいのも事実である。この問題に対する提言として、本講演では、開発工程全体にセキュリティを意識した作業を組み込むという考え方が披露された。
例を引くまでもなく、現在日々何件もの脆弱性が発見され、IPSなどによって「後付けで」その対処が行われている。おそらくその傾向は今後も変わることはないだろうが、開発工程の中で「前倒しで」対策を行うことにより、後付けの対処の発生頻度が減ることは疑う余地がないだろう。
● 静的分析とは
本講演のテーマであるStatic Analysis、つまり静的分析は、作成されたコードを解析することにより、潜在的なセキュリティリスクの芽を摘み取るというアプローチである。静的分析の中には様々な要素があり、その中にはプログラマであれば誰もが実践したことがある手法や、コンパイラに組み込まれている手法もある。また、任意の分析手法をツールとして実装した製品も数多くあり、それらについての簡単な紹介もあった。本稿では、講演で紹介された、静的分析ツールの基本的な動作と利用上の注意点について、簡単に紹介したい。
● 静的分析ツールの要素
静的分析ツールの持つ機能のうち、利用する上で知っておくべき重要なポイントは、その解析アルゴリズムがどのようなものであるのか、そしてどのようなルールに基づいて解析を行うのかの2点である。それぞれについて、実際に講演の中で例示されたコード例を利用しながら、簡単に解説を行いたい。
●解析アルゴリズムとは
解析アルゴリズムは、アンチウイルスソフトにおける検索エンジンに相当する機能で、”セキュリティ的に問題がありそうな個所を、与えられたルールに基づいて抽出することを可能にするための仕組み”ということになる。具体的には、
buff = getInputFromNetwork();
copyBuffer(newBuff, buff);
exec(newBuff);
というようなコードを検出する機能をエンジンとして持つ、ということである。抽出する際に利用するルールをハードコーディングするのは現実的ではないので、実際にどのような基準に基づいて脆弱性を探すのかについては、ルールとして別途定義することになる。ここら辺りの考え方は、アンチウイルスソフトやIDS/IPSに非常によく似ている…
【執筆:日吉 龍】
http://www.bflets.dyndns.org/
──
※ この記事は Scan購読会員向け記事をダイジェスト掲載しました
購読会員登録案内 http://www.ns-research.jp/cgi-bin/ct/p.cgi?w02_ssw
《ScanNetSecurity》