検索
連載

機密情報に合法的に近づけるWebアプリケーションを守れWebアプリケーションファイアウォールの必要性(1)(2/3 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

Webアプリケーションセキュリティとネットワークセキュリティの間隙

 SQLインジェクションやクロスサイトスクリプティングは、Webアプリケーションセキュリティに携わる人たちの間では広く語られていた用語であり、その危険性について以前から識者たちはたびたび警告を発していた。しかしながら、ファイアウォールやIDS(不正侵入検知システム)といったネットワークセキュリティに携わるネットワークエンジニアたちの間でこれらの危険性が十分に語られてきたとはいえない。

 Webアプリケーションの脆弱性に対する防御はネットワークエンジニアの範疇(はんちゅう)ではなく、Webアプリケーション開発者の仕事であるという意識があったからではないだろうか。事実、これらの脆弱性に対してIDSやIPS(不正侵入防御システム)といった既存のネットワークセキュリティ製品は極めて無力である。その結果、Webアプリケーションの脆弱性に対する対策は、Webアプリケーション開発者たちの努力に委ねられていった。

セキュアプログラミングの限界

 Webアプリケーションの脆弱性を生み出さないために、Webアプリケーション開発者の間ではセキュアプログラミングという概念が浸透していった。この概念には、セキュアなプログラムを作成するためのあらゆる方策が含まれているが、よくいわれることはユーザーからの入力データをそのままプログラムに受け渡すのではなく、一度必ず浄化作業(サニタイジング)を行うという考え方である。

 例えば、プログラムやコマンドで意味を持つメタキャラクタ(メタ文字:\、[、]、|、$、*など)の入力を禁止し、正規表現にて入力文字列のパターンを限定することによって入力データの浄化を行う。以下に非常に簡単なPerl用のサニタイジング関数を2つ示す。入力された文字に対していずれかを実行すればサニタイジングがなされる。

#! 不正文字のリストを使用したネガティブフィルタ 
 
sub FilterNeg {                
 local( $fd ) = @_;
#! <,>,",',%,;,),(,&,+ の文字列を削除する  
 
    $fd =~ s/[\<\>\"\'\%\;\)\(\&\+]//g;
  return( $fd ) ;
}
 
#! 合法文字のリストをベースにしたポジティブフィルタ
 
sub FilterPos {
   local( $fd ) = @_;
 
#! 英数字およびスペース以外を削除する
 
  $fd =~ tr/A-Za-z0-9\ //dc;
  return( $fd ) ;
}              
Perl用のサニタイジング関数

 セキュアプログラミングは、Webアプリケーションの脆弱性を防ぐ唯一の有効な手段であると考えられてきた。しかし、Webアプリケーション開発者たちによる手作業での努力に依存するこのやり方はいくつかの弱点をはらんでいる。

●開発者のスキルに依存

 セキュアプログラミングにはノウハウが必要となる。プロジェクトに参加する開発者がすべて優秀な開発者であるなら話は別だが、Webアプリケーション開発には複数の開発者たちがかかわるものであるし、通常はスキルにばらつきがある。1人の優秀な開発者のスキルをプロジェクト全員に伝達することにも限界があり、その結果セキュアプログラミングのスキルを持つ開発者がソースコードのレビューとテストを繰り返すことになる。

●開発工数の増加

 ソースコードのレビューとテストを繰り返す作業は、作成するプログラムが大きなものであればあるほど膨大な作業量となっていき、開発工数の増加によるコストがのしかかってくる。

●完全なプログラム開発の難しさ

 Webアプリケーション開発者が考慮しなければならないのはセキュリティだけではない。機能とパフォーマンスを追求しながら、同時にセキュアなアプリケーションを、限られたリソース、限られた工数の中で完成させていくことは簡単ではない。いくつかの国内有名サイトでWebアプリケーションの脆弱性を原因とした情報漏えいが発生している現実を見ても、Webアプリケーション開発者の努力に依存する従来の手法に限界が示されている。

 余談になるが、このようなWebアプリケーション開発者の努力にもかかわらず、いざWebアプリケーションの脆弱性による情報漏えいが発生した際の、Webアプリケーション開発者に集まる非難はフェアではない。ネットワークエンジニアたちは責任を逃れ、エンドユーザーからは責任追及、IT業界からの非難のまなざし。必ずしもWebアプリケーション開発者によるサボタージュによって問題が発生したとはいえないにもかかわらず、この扱いが妥当であるとはいい難い。本連載で紹介するWAFがWebアプリケーション開発者たちの助けとなり、過度な非難から免れる手段となれば幸いである。

Copyright © ITmedia, Inc. All Rights Reserved.

Security & Trust 記事ランキング

  1. 従業員は「最新のサイバー脅威との戦い」を強いられている セキュリティ教育に不満を持つ理由の1位は?
  2. 「SQLite」のゼロデイ脆弱性、GoogleのAIエージェントが見つける AIは脆弱性調査の課題をどう解決したのか?
  3. 増える標的型ランサムウェア被害、現場支援から見えてきた実態と、脆弱性対応が「限界」の理由
  4. ランサムウェア攻撃を受けた企業、約6割が「サプライチェーンのパートナー経由で影響を受けた」 OpenText調査
  5. Google Cloudがサイバーフィジカルシステムのレジリエンスを高める10の指標を解説 最初にすべきことは?
  6. 日本人の約半数が「1年前より危険」と考えるオンライン詐欺とは マカフィーがホリデーショッピング詐欺に関して調査
  7. 「このままゼロトラストへ進んでいいの?」と迷う企業やこれから入門する企業も必見、ゼロトラストの本質、始め方/進め方が分かる無料の電子書籍
  8. Microsoftが注意喚起 「クイックアシスト」を悪用した「テクニカルサポート詐欺」の手口、対策とは
  9. ゼロトラストの理想と現実を立命館大学 上原教授が語る――本当に運用できるか? 最後は“人”を信用できるかどうか
  10. 長続きする高度セキュリティ人材育成の秘訣を「第19回情報危機管理コンテスト」から探る
ページトップに戻る