TOP情報セキュリティ> 多くのWebサイトに潜む3大脆弱性
crack
クラッカーから企業Webサイトを守り抜け!

第2回:Webサイトへの不正アクセス手法とその対策
著者:NRIセキュアテクノロジーズ  観堂 剛太郎   2006/10/16
1   2  3  次のページ
多くのWebサイトに潜む3大脆弱性

   第1回では、2005年度のNRIセキュアテクノロジーズのWebサイトのセキュリティ診断結果を元に、全体の傾向について解説した。今回は発見された主な脆弱性について詳しく解説する。

   診断結果からは、多くのサイトで共通した脆弱性が発見されている。その中でも特に危険度の高い3つの攻撃を可能にする脆弱性を3大脆弱性(表1)と呼んでいる。
  • 関連チェック不足によるなりすまし
  • 権限昇格による管理者機能へのアクセス
  • SQLインジェクションによるデータベースの不正操作

表1:多くのサイトで発見された3大脆弱性

   この3つの脆弱性はそれぞれ、重要な情報がダイレクトに不正取得されてしまうもので、大量のデータが一気に取得されることも起こりうるため、実際の攻撃に悪用された場合には重大な情報漏洩事件に発展しかねない。

   システム側で制限をかけている「本来はアクセスできないはずの情報」に、システムの不備を突いてアクセスできてしまうという性質はどれも同じである。セキュリティ診断の結果として、致命的な欠陥をもつWebサイトのほとんどは、これらの問題が1つ、もしくは複数存在していた。中には3大脆弱性がすべて発見されたWebサイトも存在した。

3大脆弱性の発生割合
図1:3大脆弱性の発生割合
出典:NRIセキュアテクノロジーズ

   中でも危険度の高いSQLインジェクションの脆弱性については、それを利用した事件も実際に数多く発生しており、紹介される機会も増えたため、攻撃手法や対策方法に関する情報の入手は容易になったといえる。

   本連載では3大脆弱性について、筆者らが診断した多くのWebサイトで見られた発生パターンや、その対策について紹介する。


関連チェック不足によるなりすまし

   まず2004年度、2005年度ともに多い脆弱性が「関連チェック不測によるなりすまし」である。「なりすまし」とは、一般的にはログインIDやパスワードなどの認証情報やセッションIDを詐取され、悪用される攻撃を指す。

関連チェック不足によるなりすましの事例
図2:関連チェック不足によるなりすましの事例

   今回話題とするのは「関連チェック不足よるなりすまし」で、Webサイトの性質によって形を変えて発生する脆弱性である。よく発見されるパターンとしては、データを一覧で表示し、そこから1つを選択して、データの詳細を見るという一連の画面遷移中に発生するものである。

   一覧とは、Webサイトによって、購入履歴の一覧であったり、契約の一覧であったり、受発注した取引の一覧であったりと様々である。

   一覧画面から詳細画面に遷移する時に、システムの内部IDをクライアントからサーバ側に送信する場合がある。このIDは画面には表示されず、HiddenパラメータやURL引数に設定され、データベース上の管理IDに利用されて、これをKeyにしてデータベースから実際の詳細データを引っ張ってくることになる。

   ここで、そのIDを1つずらすなどして、ログイン中のユーザとは無関係なIDを指定しても、詳細データが表示されてしまう場合がある。ログイン中のユーザに「その(無関係なIDで取得された)購買履歴を表示してもよいか?」といった関連チェック(データベースの検索条件に追加することを含む)がなされていないために発生してしまうものである。

   更に、こういった内部IDは連番で振られていることが多く、IDをずらしながらアクセスすることで、結局は全データが取得できてしまうという結果となる例が多い。筆者らがセキュリティ診断を実施したWebサイトの中には、数100万件のデータがこのような方法により、不正に取得できる状態にあるものも存在した。

   この問題は、権限管理や認証チェックなどのように、アプリケーションのフレームワークとして1箇所で実装するということが難しく、データの参照や更新時に毎回チェックしなければならない場合が多いため、実装時の「漏れ」として発生してしまうものと考えられる。

   一見すると、非常に単純な脆弱性であり、「今更そんな問題が…」と考えてしまうかもしれない。しかし、この問題が3割のWebサイトで発見されるのである。

   この脆弱性を発生させないためには、関連チェックを随所で確実に行うことも必要だが、ユーザ属性を保有するようなデータへのアクセスでは内部IDをおもてにださず、セッション内で独立したIDに振り直すといったアプローチが考えられる。

   具体的には、図3のように、取得した情報リストの内部IDと関連付いたインデックス番号をセッション内で保有し、HTML中には内部IDではなく、インデックス番号をHiddenパラメータとして含める。こうなると、無関係な情報へのアクセスが不可能となる。このように、そもそも脆弱性を作り出しにくい実装方式を採用すべきである。

セッション中で内部IDとリストのインデックスを置き換えるアプローチ
図3:セッション中で内部IDとリストのインデックスを置き換えるアプローチ

1   2  3  次のページ


NRIセキュアテクノロジーズ 観堂 剛太郎
著者プロフィール
NRIセキュアテクノロジーズ株式会社   観堂 剛太郎
コンサルティング事業部 セキュリティコンサルタント
システム・インテグレータを経て2001年、NRIセキュアテクノロジーズに入社。システム開発で養ったセキュアなWebアプリケーション開発のノウハウを活かし、現在は主にWebサイトのセキュリティ診断や設計コンサルティング業務に従事する。


INDEX
第2回:Webサイトへの不正アクセス手法とその対策
多くのWebサイトに潜む3大脆弱性
  権限昇格による管理者機能へのアクセス
  SQLインジェクションによるデータベースの不正操作