Webアプリケーションを用いたサイトを運用する場合で、個人情報やクレジットカード情報などを取り扱う場合に、安全に開発する、つまりセキュアプログラミングを行うことは重要です。ほかに安全性を高める手段として、脆弱性検査(Penetration Test:ペンテスト、擬似ハッキング検査、擬似アタック検査とも言います)が提供されています。

 私は国内で最初に脆弱性検査をセキュリティビジネスとして展開してきました。最初にホームページにそうしたサービスを掲載したのは96年のことで、当時はファイアウォール検査サービスなどと呼んでいました。まだ、Webアプリケーションの脆弱性などは認識されていないころでした。

 Webアプリケーションの脆弱性は問題視されていなくとも、サービスを提供できなくするDoS(Deny of Service)攻撃を受ける脆弱性などがOSやミドルウエアなどの基盤ソフトに存在しました。たった数バイトのパケットを送りつけるだけでWindows NTがブルースクリーンになったり、Apacheを標準設定でインストールするとCGI経由でコマンド入力を許すような脆弱性があったり、メールサーバーのsendmailにもバッファオーバフローやコマンド入力を許す脆弱性があったりした時代でした。

 そのころから、それらの脆弱性を突いたホームページの改ざんが日常的に起こりました。そのような被害に遭うサイトが日本でも増えたために、脆弱性がないかどうかを調べるサービスをいろいろな会社が提供し始めました。

 当時は見つかる脆弱性と言えば、OSそのものやApache、sendmailなどのサービスを提供する上で基盤となるソフトのバージョンが古かったり、FTPやtelnetでアクセスするためのパスワードの設定が甘い、といったものがほとんどでした。

 そのようなことを調べるために脆弱性検査サービスは活況を呈していましたが、今では、Webアプリケーション関連の脆弱性を調べることが多くを占めるようになりました。Webアプリケーションの脆弱性については、今さらここで説明する必要はないでしょう。

 残念ながらWebアプリケーションのソースコードを逐一チェックするホワイトボックス検査ではなく、実際に攻撃を仕掛けてみて脆弱性がないか調べるブラックボックス検査では「全ての脆弱性」を調べることはできませんし、費用も決して安いものではありません。

 最近のWebアプリケーションは複雑かつ大規模です。しかも頻繁に追加、修正が行われます。そのようなサイトへブラックボックス検査をするときに、全てのアプリケーションを検査すると開発コストからみても膨大な費用がかかってしまいます。

 それはWebアプリケーションの検査には、人間が手で行わなければいけない項目が非常に多いためです。数年前から自動的に調べるツールも出てきていますが、自動化できる部分はあっても、精密に検査しようとすると、やはり人間が、しかも高度な技術を持った技術者が必要になります。

 それだけコストをかけて検査したにもかかわらず、検査によって発見された脆弱性を指摘された当事者は、「指摘された項目だけ」修正しようとします。多くの企業や組織でそのような対応をしていることでしょう。ところが、その後に起こることは以下のような事象です。

  • 指摘された項目が正しく修正されない。
  • 指摘事項以外にある同様の脆弱性は放置される。
  • その後更新されたプログラムには同様、あるいは、新規の脆弱性が作りこまれる。

 これらは珍しいことではなく、むしろよくあることです。そのために「定期検査」が行われるのですが、その費用も基本的には営業的なディスカウントはあっても、基本的には相応の費用がかかります。そして、上記のような事象が繰り返されています。

 理想的な考えからすれば、一つの小さな問題を広く大きくとらえて、みんなで話し合い、同様の事象が他にないか点検・修正し、今後の行動に役立てることが重要になります。しかし、開発の現場では「バグは日常茶飯事」のこと。仕様変更やバグ対応などで追われる現場では、言われたことだけに対応するだけで手一杯なのです。これは、開発の現場の立場に立つとよく分かります。しかも、最近の経済不況を受け、受注単価も下降傾向にあります。そのような中で独自に品質を上げる取り組みができている優良な開発企業は多くはありません。脆弱性検査をセキュリティ品質の向上に役立てるのには限界があるということです。

 もちろん、脆弱性検査をしないと「現状認識」「問題意識」が持てないこともありますから、そのような場合には有効です。特に、実際に攻撃を仕掛けて顧客情報が見えてしまいますという報告が出れば、対策に着手せざるを得なくなりますから効果的である場面も多いのです。

 注意深く安全に開発されている場合であっても、むしろセキュリティに気配りすればするほど心配は増します。「ウチのサイトは本当に安全だろうか」と心配すればするほど「プロに実際に攻撃を仕掛けてもらって問題点がないか確認したい」という思いが募ります。そのようなWebサイトは「念のために確認したい」という目的でハイレベルな検査を受けるべきです。