検索
連載

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

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

ネットワークセキュリティ製品がいかに無力であるか

 Webアプリケーションの脆弱性は非常に多岐にわたっており、攻撃手法は複数の脆弱性を利用したものである場合が多いためにジャンル分けも複雑になる。よくまとまった資料としてOWASP(The Open Web Security Project)がWebアプリケーションの脆弱性トップ10のリストを作成している。このリストには詳細な解説付きの日本語版もあるので、ぜひ参考としてほしい。

 では、このリストに掲載されているような脆弱性を防御する場合、IDSやIPSといったネットワークセキュリティ製品がいかに無力であるのかを説明する。

 まず、「アプリケーションセキュリティ」という言葉が多くの誤解を生んでいる。多くのネットワークセキュリティベンダが、マーケティングメッセージとしてアプリケーションセキュリティという言葉を使用し、アプリケーションレイヤの攻撃を防御できるという。このメッセージをそのまま信じるユーザーは、「この製品を導入しておけばアプリケーションレイヤのあらゆる攻撃からの防御が可能である」という間違った理解を持つかもしれない。ベンダがこういった誤解を意図的に生み出しているわけではないだろうが、あまりに広くこの言葉が使われているが故に、WAFの必要性が分かりにくくなっているのではないかと懸念する。

 あらためて言明しておかねばならないが、既存のネットワークセキュリティ製品であるファイアウォール、IDS/IPSは、Webアプリケーションの脆弱性に対してほとんど無力である。ネットワークセキュリティ製品がどれだけ、「ディープパケットインスペクション」やアプリケーションセキュリティをうたっていたとしても、である。ファイアウォール、IDS/IPS が、いかにHTTPプロトコルやHTMLコンテンツを解析し、Webサーバの脆弱性を防いだとしても、Webアプリケーションは守れない。OWASPトップ10リストの中でも最も上位に位置する「Unvalidated Input(許可されていない入力)」を見てみよう。

 Unvalidatedは「確認されていない」「許可されていない」というような意味を持つ。つまり、ユーザーからの入力(Input)があった際、プログラムでユーザー入力に対する確認作業が不足しているためにWebアプリケーション開発者が想定しない結果を引き起こすWebアプリケーションの脆弱性全般を指す。「フォースフルブラウジング」「コマンドインジェクション」「クロスサイトスクリプティング」「バッファオーバーフロー」「SQLインジェクション」「Cookieポイズニング」「Hiddenフィールドマニピュレーション」など代表的なWebアプリケーション脆弱性の多くがUnvalidated Inputの一部である。

 Hiddenフィールドマニピュレーションは、「隠しフィールド操作」などと訳されることがあるが、そうすると意味が不明瞭になるため、ここではHiddenフィールドマニピュレーションと表記する。まず図3を見てもらいたい。このWebページはあるオークションサイトであると考えてほしい。

図3 Webオークション
図3 Webオークション

 この購入画面で使用されるHTMLの一部は以下のとおりである。

<form name=bid action="buy.php" method=get>
  <input type="Hidden" name="price" value="10,000.00 JPY">
  <input type="Hidden" name="product" value="PDA">
  <b><FONT FACE=Tahoma,Verdana,Arial SIZE=2
     COLOR=##006633>Buy it now!<br>
     10,000.00 JPY</b> <br><br>
  <FONT FACE=Tahoma,Verdana,Arial SIZE=1 COLOR=##006633>
  <input type=submit name="Input" value="Buy it!"><br>
</form>
HTMLソース(抜粋)

 先ほどと同様に、このフォームの解説を以下に示す。

パラメータの送信先:buy.php
使用するHTTPメソッド:GET
パラメータの種類と属性:

コントロールの種類 名前
Hidden price 10,000.00 JPY
Hidden product PDA
送信ボタン Input Buy it!

 このようにHiddenフィールドとは、Webブラウザ内には表示されていないため、通常はユーザーが意識することのないフィールドである。だが実際には、WebアプリケーションからWebブラウザにデータが送信されており、ユーザーからのアクションによって再びWebアプリケーションに受け渡される。Hiddenフィールドはエディタを使用すれば簡単に参照できる。そして、このフィールドの改ざんも容易である。ローカルマシンにHTMLを保存して商品の価格を編集するだけである。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 改ざんしたHTMLファイルをWebブラウザで開き、“Buy it!”ボタンをクリックする。こうして高価な商品がタダ同然で購入できる(この例では、10,000円の商品を40円に改ざんした)。もちろん、Webアプリケーションのプログラムにおけるチェック機構が働いていなければ、の話である。

Webアプリケーションのつくりが理解できない

 Hiddenフィールドマニピュレーションによる攻撃は、以下の手法によって防ぐことができると考えられる(WebアプリケーションでHiddenフィールドを使わない手法も考えられるが、ここでは述べない)。

  • データベースに保持された価格とレスポンスに含まれる値をその都度比較する
  • アプリケーションにおいて、レスポンスで返した値を保持しておき、その値と次のリクエストに含まれる値を比較する
  • URIないしはPOSTデータにHiddenフィールドの値のハッシュ値を付加し、Webアプリケーションでハッシュ値と実際の値を比較する

 ここで防御のために必要となる前提知識は「Webアプリケーションのつくり」である。既存のネットワークセキュリティ製品にとっては、HTTPリクエストに含まれるpriceのパラメータ値が40.00であろうと、10000.00であろうと“正しい”HTTPリクエストであることに変わりはない。単一のHTTPリクエストを採取して解析しても、なんら怪しいところはない。

 おかしいところといえば、このページにおけるPDAの購入を行うにしては価格が低いというのみであり、それを検知する手段はWebアプリケーションのつくりを理解する仕組みがなければ存在しない。仮に極めて柔軟性の高いIDS/IPSが存在するならば、カスタマイズ設定において、「このURLにおけるパラメータとパラメータ値は、この入力しか受け付けない」という正規表現を入力できるかもしれない。

 しかし、Webアプリケーションにおいてパラメータ値は状況に応じて変わっていく。さらに、どのページをリクエストするときも同一のURLが使われ、パラメータのみが異なっており、それに基づいてコンテンツがダイナミックに生成されるWebアプリケーションも多数存在する。そのような環境においてIDS/IPSを使用するWebアプリケーションに合わせてカスタマイズしていくことは不可能である。この攻撃を防御できるのはセキュアプログラミングとWAFである。

 Hiddenフィールドマニピュレーションの例で分かるように、Webブラウザに渡される情報は簡単に参照、改ざんされる可能性がある。その前提をおろそかにし、プログラムでユーザー入力のチェックを行わないことからWebアプリケーションの脆弱性は発生しやすい。そして改ざんされたユーザー入力はIDSやIPSをすり抜けてしまう。

 次回は、より多くの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回情報危機管理コンテスト」から探る
ページトップに戻る