「脆弱性」──。一般的には「もろくて弱い性質」「傷つきやすい性質」といった意味だが、コンピュータやネットワークの分野では、「ソフトウエアのセキュリティ脆弱性」を指す場合が多い。
では、ソフトウエアのセキュリティ脆弱性(以下、単に脆弱性と呼ぶ)とは何か。脆弱性の定義は人によって様々だ。本特集では、「セキュリティの問題を引き起こす、ソフトウエアの設計・実装上の欠陥」と定義する(図1-1)。
通常のバグと脆弱性の違いは、第三者が悪用できるかどうかだ。バグは、ソフトウエアの動作を妨げる欠陥である。バグがあると、ソフトウエアは適切に動作しなくなる。だが、それ以上の問題は発生しない。
一方の脆弱性は、開発者やユーザーが意図しない動作をする欠陥だ。攻撃者がそれを自由に操作できれば、ユーザーに被害を及ぼせるようになる。