TOP
>
情報セキュリティ
> SQLインジェクションによるデータベースの不正操作
クラッカーから企業Webサイトを守り抜け!
第2回:Webサイトへの不正アクセス手法とその対策
著者:
NRIセキュアテクノロジーズ 観堂 剛太郎
2006/10/16
前のページ
1
2
3
SQLインジェクションによるデータベースの不正操作
SQLインジェクションは昨年以降、実際の被害が多発し、大きく取り上げられるようになった問題である。昨年度の弊社セキュリティ診断でも、3割以上のWebサイトにこの問題が存在したという結果がでており、多くのシステムが抱えている問題であることが裏付けられる。
図5:SQLインジェクションによるデータベースの不正操作
SQLインジェクションの具体的な攻撃原理などについての説明は、複数の機関から公表されているため、今回は割愛するが、本脆弱性を利用した攻撃手法はより高度化している。アプリケーションエラーを発生させることでデータベース中の任意の情報を画面中に表示させる手法や、画面上には重要情報は何も表示されないにも関わらず、アプリケーションの挙動の変化からデータベースの内部データを推測していく、ブラインドSQLインジェクションという手法もでてきており、より脅威が増加したと考えられる。
この問題に関しては脆弱性を作りこんでしまいやすいパターンというものは存在しない。あらゆるデータベースアクセスが発生する場所で、問題が存在する可能性がある。中には、ログイン認証以降の複雑な画面では対策されているにも関わらず、直近で追加開発された新規ユーザ登録画面での郵便番号検索で問題が見つかり、そこから登録済みのユーザ情報を含む、全データベースレコード情報を引き出せてしまうといったWebサイトも存在した。
SQLインジェクションは、問題が見つかって、後から対策を施すには非常に手間がかかる場合が多い。また、1箇所でも対策漏れがあれば、データを引き出せてしまえる可能性が残るため、確認テスト工数も膨大と成り得る。開発の着手前にあらかじめデータベースへのアクセス方法に関する取り決めを開発者内で行なっておけば、このような余分なコストはほとんどかからないといえる。
この脆弱性は、本来もっとも防衛したいデータベースの情報が、漏洩/改竄/破壊されてしまうという結果につながるものであり、データベースのセキュリティの設定に問題があると、被害が拡大する可能性がある。例え1箇所に漏れが発生しても、被害を最小限に食い止められるように、アプリケーションだけの対策に留まらず多層防衛の観点で複数の対策を施しておきたい。
対策
対象
内容
入力値検証
アプリケーション
Hiddenパラメータを含む全入力の妥当検証を行う必要がある。
バインドメカニズムの
利用
アプリケーション
SQL文を動的に生成するのではなく、バインドメカニズムを利用し、メタキャラの混入を防ぐ。
エラーバンドリングとエラー情報表示の抑止
アプリケーション/Webサーバ
データベースのエラーメッセージをそのまま画面上に表示してしまうと情報漏洩に繋がる。
適切な権限設定
データベース
Webアプリケーションが利用するデータベース接続アカウントには、必要最低限の権限のみを割り当てる。
機密情報の暗号化
データベース
パスワードは平文で格納せず、ハッシュ値を記録する。それ以外の機密情報も必要に応じて暗号化する。
不要なデフォルト機能の削除(プロシージャなど)
データベース
各データベースプロダクトごとに、デフォルトで不要かつ危険なプロシージャが利用可能となっている場合があり、被害を拡大させる可能性がある。
表2:SQLインジェクション対策の例
おわりに
3大脆弱性に関して、発生しやすいパターンやその対策を紹介した。これらは多くのWebサイトに潜んでいる危険性の高い問題である。自社で公開しているWebサイトに同様の問題がないことを確認していただきたい。
また、実際に発生しているその他の事件にも目を向けたい。警察庁の不正アクセス行為の発生状況や、IPA(独立行政法人 情報処理推進機構)のコンピュータウイルス・不正アクセスの届出状況で、繰り返し被害の上位にくる問題として、ユーザのパスワード管理不備による不正アクセスがあげられる。ログインIDと同じパスワードや、何らかの関連情報から推測が容易なパスワード(メールアドレスのアカウント部など)を設定してしまったユーザが、それを犯行者に推測され、なりすましを受けてしまうという問題である。
利用者に注意を呼びかけることも必要であるが、そもそもこのような脆弱なパスワードが設定できないように、システム側のパスワード設定ポリシーを見直す必要もある。
一般的なシステムであれば、パスワードの設定可能最低文字数や、英数字の混在を必須とするなどの制約を設けるようにしている。Webサイトにおいても、そこに、ログインIDと同じパスワード、もしくはログインIDを含む文字列などの安易な設定を拒否するような制約機能を追加すべきであろう。
Webサイトについては、こういったWebサイトを取り巻く脅威を洗い出し、確保すべきセキュリティレベル(ポリシー)にそった対策を適切に採用しながら、構築を行なっていく必要がある。アプリケーションだけの対策で安全性を確保することがコスト的に難しい場合でも、運用方法を含めてトータルに解決できる方式を検討していきたい。
次回は、Webサイトのセキュリティで考慮すべき対策として、内部関係者による情報漏洩という視点にて解説する。
前のページ
1
2
3
著者プロフィール
NRIセキュアテクノロジーズ株式会社 観堂 剛太郎
コンサルティング事業部 セキュリティコンサルタント
システム・インテグレータを経て2001年、NRIセキュアテクノロジーズに入社。システム開発で養ったセキュアなWebアプリケーション開発のノウハウを活かし、現在は主にWebサイトのセキュリティ診断や設計コンサルティング業務に従事する。
INDEX
第2回:Webサイトへの不正アクセス手法とその対策
多くのWebサイトに潜む3大脆弱性
権限昇格による管理者機能へのアクセス
SQLインジェクションによるデータベースの不正操作