近年、製品の出荷後にセキュリティー上の安全性に関わるバグ注1や脆弱性注2)が発覚して大きな損害を被ったという事件が増えてきている。そのような事態を防止するためには、製品の開発工程の中でセキュリティー・テストを実施し、バグや脆弱性を確実に解消しておかなければならない。

注1)本連載では、「製品が仕様通りに動作しなくなるなどの問題」を「バグ」と定義する。
注2)本連載では、「製品を強制的に再起動させてしまう等のセキュリティー上の問題」を「脆弱性」と定義する。

 一言にセキュリティー・テストと言っても、その手法には様々だ。主な手法としては次のようなものが挙げられる。

ソースコード・セキュリティー検査
ソースコードを検査してセキュリティー上の問題につながる実装が行われてないかなどをチェックする

ファジング
外部から意図的に例外につながるような入力データを網羅的に与え、その際の挙動を確認する

 本連載では、特に後者の「ファジング」について取り扱う。なお、ソースコードのセキュリティー検査については、情報処理推進機構(IPA)によって「IPA テクニカルウォッチ:『ソースコードセキュリティ検査』に関するレポート」(ダウンロード先)などの資料が公開されている。またファジングについても同じくIPAが「ファジング活用の手引き」や「ファジング実践資料」(両資料のダウンロード先)、「IPA テクニカルウォッチ:製品の品質を確保する「セキュリティテスト」に関するレポート」(ダウンロード先)といった資料を公開している。本特集とあわせてこれらの資料も参考にしていただきたい。