BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ソフトウェアアプリケーションのセキュリティリスク TOP 10

ソフトウェアアプリケーションのセキュリティリスク TOP 10

原文(投稿日:2010/03/04)へのリンク

ソフトウェアアプリケーションのセキュリティ評価・改善を目標とするオープン組織 OWASP が,OWASP Top 10 アプリケーションセキュリティリスク - 2010 RC1 (PDF) をリリースした。この白書は Web アプリケーションのセキュリティリスクのトップ10と,そこから想定される脆弱性を攻撃者(threat agent) が利用する方法の詳細,さらにその防止策の例とアドバイスを文書化したものだ。

Creative Common Attribution ShareAlike 3.0 ライセンス の元にリリースされた OWASP Top 10 Web アプリケーション セキュリティリスク – 2010 の内容は次のようなものだ。

セキュリティリスク 解説
A1 –インジェクション SQL,OS,LDAP インジェクションなどのインジェクション脆弱性は,信頼できないデータがコマンドやクエリの一部としてインタプリタに送信されたときに顕在化する。攻撃者の敵意のあるデータにインタプリタが欺かれることによって,意図しないコマンドの実行や,許可されないデータの参照が可能になる。
A2 –クロスサイトスクリプティング (XSS) XSS 脆弱性は,アプリケーションが信頼性の低いデータを取得して,適切な検証やエスケープを行わないままブラウザに送信する場合に起きる。攻撃者は XSS を利用して,ユーザセッションのハイジャックや Web サイトの棄損,あるいは悪意のあるサイトへのリダイレクトなどを行うスクリプトを,犠牲者のブラウザ上で実行することができる。
A3 –不完全な認証およびセッション管理 多くのアプリケーションは,認証やセッション管理に関連する機能を正しく実装できていない。そのためパスワード,キー,セッショントークンなどの漏洩や,脆弱性を利用した他ユーザへの「なりすまし」が行われる可能性がある。
A4 –安全でないオブジェクトの直接参照 ファイルやディレクトリ,データベースキーなど,内部の実装オブジェクトへの参照が公開されていると,オブジェクトへの直接参照が可能になる。アクセス制御チェックやその他のプロテクトがなければ,攻撃者はこれらの参照を操作して,承認されないデータをアクセスすることができる。
A5 –クロスサイト要求偽造 (Cross Site Request Forgery / CSRF ) CSRF 攻撃は脆弱性を持った Web アプリケーションに対して,犠牲者がログオンしているブラウザから,セッションクッキーなど認証情報を含んだ偽造 HTTP 要求を送信させるものだ。これによって攻撃者は,攻撃対象となるアプリケーションが正当な要求と判断するようなリクエストを,犠牲者のブラウザに生成させることが可能になる。
A6 –不適切なセキュリティ設定 セキュリティはアプリケーションやフレームワーク,web サーバ,アプリケーションサーバ,プラットフォームのセキュアな設定に依存している。出荷時のデフォルト設定はたいていの場合セキュアではないので,これらはすべて再定義と設定の実施,そしてメンテナンスが必要だ。
A7 –URL アクセス制限の失敗 多くのアプリケーションでは,保護されたリンクやボタンを表示する前に UR アクセスの正当性をチェックしている。これらのページをアクセスする時にも,これと同じようなアクセス制御が必要だ。そうでなければ攻撃者は結局,隠されたこれらのページにアクセスする URL を偽装できてしまうだろう。
A8 –未検証のリダイレクトとフォワード Web アプリケーションはよく,ユーザを他のページや Web サイトにリダイレクトあるいはフォワードする。その行き先ページを決定するために信頼できないデータが使用されることも多い。適切な検証を行わなければ,攻撃者はフィッシングやマルウェアサイトに犠牲者をリダイレクトさせたり,あるいはフォワードを利用して認証されていないページにアクセスすることができてしまう。
A9 –安全でない暗号化ストレージ クレジットカードやSSN,認証パスワードといった重要なデータを,適切な暗号化やハッシュを使用して保護していない Web アプリケーションは多い。攻撃者はこのような保護の弱いデータを,個人情報の盗用やクレジットカード詐欺,その他の犯罪に利用するかも知れない。
A10 –不十分なトランスポート層保護 重要な通信を保護する必要があるときでも,ネットワーク情報が暗号化されていない場合が多い。また暗号化に脆弱なアルゴリズムを使用していたり,証明が期限切れや無効であったりなど,適切な利用ができていないことがある。

資料では,これらのセキュリティリスクに対するサイトの脆弱性を判断して攻撃を防ぐ方法と合わせて,攻撃者が行うアタックの例についても説明している。例えばインジェクションセキュリティリスクについては,次のような脆弱な SQL クエリがベースとして利用される。

String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") +"'";

攻撃者はブラウザの ‘id’ パラメータに ' or '1'='1 を設定することでこの脆弱性を利用する。これによってクエリの意味が,指定されたユーザだけではなく account データベースのすべてのレコードを返すように変更される。

http://example.com/app/accountView?id=' or '1'='1

結果として実行されるのは 次のような SQL になる。

SELECT * FROM accounts WHERE custID='' or '1'='1'

このようなインジェクションリスクへのアドバイスとして,資料では “信頼性の低いデータをコマンドやクエリから分離する” ことを推奨している。

    1. 安全な API を使用するか,あるいはパラメータインターフェースを設けるなどして,インタプリタへの全面的な依存を回避するのが望ましい。ただしストアドプロシージャのように,パラメータ指定であっても内部的にはインジェクションが可能な API に注意が必要だ。
    2. パラメータ化された API が利用できない場合は,インタプリタ固有のエスケープ方法を使用して,特殊文字を注意深くエスケープする必要がある。OWASP の ESAPI では,この種のエスケープルーチンがいくつか提供されている。
    3. 適切な正規化の後に妥当性チェックや “ホワイトリスト” 検証を行う手法も,インジェクションの防止に効果的だ。ただし特殊文字の入力が必要なアプリケーションでは完全な効果が期待できない場合が多い。OWASP の ESAPI には,ホワイトリスト入力検証ルーチンの拡張ライブラリがある。

本書のトップ10リストは,ソフトウェアアプリケーションのリスク識別・評価方法である OWASP リスク評価手法 に基づき,以下のステップに従って作成されたものだ。

  1. リスク識別
  2. 可能性予測係数
  3. 影響予測係数
  4. リスク重要度判定
  5. 対処方法決定
  6. リスク評価モデルのカスタマイズ

2007 年にリリースされた資料と比較すると,トップ10リストにはいくつか変更された点がある。注目すべきは “悪意のあるファイルの実行” と “情報漏洩と不適切なエラー処理” の2つが削除され,“不適切なセキュリティ設定” と “未検証のリダイレクトとフォワード” が新たに追加されたことだ。

image

オープンWebアプリケーション・セキュリティ・プロジェクト(Open Web Application Security Project,OWASP)は OWASP 基金の支援する,ソフトウェアアプリケーションのセキュリティ向上を目標とした非営利慈善団体であり,セキュリティツールや規格の無償提供,アプリケーションのセキュリティテスト/セキュアなコード開発/コードレビューなどの書籍出版,セキュリティに関するコントロールとライブラリの提供,カンファレンスの開催,調査研究,メーリングリスト運営などの活動を行っている。

この記事に星をつける

おすすめ度
スタイル

BT