TOP > セキュリティ > オープンソースソフトウエアが意外と安全ではない理由(上)
オープンソースソフトウエアが意外と安全ではない理由(上)
2014/07/07
OpenSSLのコードのミスから生じた「Heartbleed(心臓出血)」脆弱性は、多くの人がかねてから抱いていた疑いの正当性をあらわにした。すなわち、オープンソースのコードは公開されていて検査が可能だが、だからといって実際に検査済みで安全だとは限らないということだ。
これは重要なポイントだ。オープンソースソフトウエアのセキュリティは、十分な知識を持つ大勢のプログラマーがコードを精査し、バグを洗い出して迅速に修正できるかどうかにかかっている。これを簡潔に表したのが「Linusの法則」である。「目玉の数さえ十分あれば、どんなバグも深刻ではない」というものだ。
だが、OpenSSLで何が起きたかを見てみよう。ドイツのミュンスター大学に在籍していたプログラマー、Robin Seggelmann氏は、OpenSSLのアップデートとして、通信相手の存在確認(Heartbeat:心臓鼓動)機能のコードを追加した。しかし残念なことに、このコードに入れておくべきチェック処理を抜かしてしまった。特定の変数に正しい値が入っているかどうかのチェックだ。さらには、このアップデートのリリース前にOpenSSL開発チームのあるメンバーがコードを検証した時にも、この変数のチェックがないことを見逃してしまった。こうして生じたのが心臓出血のバグだ。
1人のレビュー、あるいは数人のレビューでも、発見すべきバグがあると認識していなければ、こうしたささいなミスを簡単に見逃してしまう。心配なのは、OpenSSL、ブラウザー、Webサーバーに心臓出血のバグが2年前から存在していたにもかかわらず、オープンソースコミュニティーの誰もこのバグを見つけなかったということだ。コードを検査した「目玉」の数は十分ではなかったのである。