2008年に入り,SQLインジェクション攻撃が猛威を奮い続けている。8月6日には,アウトドア商品などを扱う通販サイト「ナチュラム・イーコマース」が外部からSQLインジェクション攻撃を受けたことを明らかにした(関連記事)。約65万件の個人情報が流出した可能性があるという。その少し前の7月23日には,ECサイト事業を手がけるアイリスプラザが攻撃を受けたと発表した。使っていない古いプログラムのぜい弱性を突かれ,カード情報2万8000件が漏えいした可能性があった。

 SQLインジェクション攻撃では,情報を盗み出すものだけでなく,サイト改ざん事件も多発している。例えば(米国のビジネスウィーク誌のサイトが乗っ取られた事件(関連記事)。Webページではないが,ゴルフダイジェストオンラインもSQLインジェクション攻撃によって,メルマガ配信用のコンテンツを書き換えられた。

 SQLインジェクション以外のぜい弱性についてはどうか。筆者がWebアプリケーションのぜい弱性診断を行っている経験から言えば,一部に改善の兆しはあるものの,新開発のサイトであってもまだ大半のサイトが多くのぜい弱性を抱えているのが実情だ。

 Webアプリケーションのぜい弱性問題がクローズアップされるようになってかなりの時間が経った。SQLインジェクションが大きな問題として世の中に認識されたきっかけは,2005年5月のカカクコムやOZmallに対する攻撃である。ところが,あれから3年以上経った今でも,一部の例外を除いて,まだ多くの企業ではWebアプリケーションぜい弱性に対する取り組みが進んでいない。

 その理由には,多くのユーザーがぜい弱性のとらえ方を誤解していること,対策が体系化されていないことなどが挙げられる。そこで本コラムでは,Webアプリケーションにぜい弱性が生じる本質的な原因を整理し,具体的な対処法を解説していく。

■ Webアプリケーションぜい弱性はなぜなくならないのか

 まず,ぜい弱性が一向になくならない原因について考えてみよう。筆者の考えるところでは主に次の3点だ。

  • 発注者の責任が意識されていない
  • セキュア開発における役割分担が明確でない
  • 対策技術の体系化の遅れ

 このうち特に見落とされがちなのが1番目と2番目である。順に見てみよう。

発注者の責任が意識されていない
 Webアプリケーションのセキュリティ事件の原因がぜい弱性にある場合,多くのユーザーは責任は開発企業にあると考えるのではないだろうか。多くの発注者は,いまだに「専門家に任せているのだから大丈夫」という意識でいるようだ。

 しかし契約論的に言えば,責任は開発企業ではなく,Webサイトの運営企業にある。実際,これまでに発生したセキュリティ事件や事故の中にも,Webサイトの運営会社,つまりWebアプリケーションの発注者が責任を問われているケースがいくつもある。

 開発会社が負うべき責任は「発注仕様どおりに開発する責任」であり,その発注仕様にセキュリティ要件が記載されていなければ,ぜい弱性があっても契約は全うしたことになる。「ぜい弱性は瑕疵(かし)ではない」というのが開発会社側の意識である(注1)。このため,運営企業がアプリケーションを他社に開発委託する場合は,「安全なアプリケーションを開発させる責務」が運営企業側にある。このような責務があることを意識していない企業が多いために,セキュアなアプリケーション開発が進んでいないのである。

(注1)経済産業省が主導でとりまとめた「情報システムの信頼性向上のための取引慣行・契約に関する研究会」~情報システム・モデル取引・契約書~には,「セキュリティ要件をシステム仕様としている場合は,『システム仕様書との不一致』に該当し,本条の『瑕疵』に含まれる」としており,仕様にうたわれない脆弱性は瑕疵ではないという見方をとっている。