本記事では、重要なインパクトのある10の脆弱性についてまとめた、「OWASP Top 10」をご紹介します。OWASP Top 10は3年に1度のペースで改定されてきたドキュメントで、特にウェブアプリケーションにおける重要な脆弱性やその脆弱性を作りこまないようにする方法を示しています。これによりセキュリティ対策の基礎を効率的、効果的に学ぶことができるため、これからセキュリティに関する勉強を始めたい方にうってつけです。

はじめに

サイバー攻撃による個人情報の漏えいやサービス提供不能などのニュースが毎日のように報道される中、セキュリティ専任者だけでなく、開発者や経営者であってもセキュリティ対策に注意を払う必要性が高まっています。

とはいえ、IT技術の発展に伴いビジネスのスピード感は加速する中で、そのスピード感を抑えるものと考えられがちなセキュリティ対策は蔑ろにされることが多いです。仮に対策されていたとしても場当たり的な対策に留まっており、必ずしも効果的・効率的な対策とはなっていません。

このような状況下においてセキュリティ対策として本質的に必要なことは、「セキュアと言われているものに頼ること」だけではなく、「構造的にセキュリティに意識を向け、具体的な施策を使えるようにすること」です。

OWASPコミュニティの幅広いジャンルおよびレベルのドキュメントやツールは、開発者、運用エンジニア、ディレクタ、ウェブアプリケーションに関係する、どのような立場の方でもご活用いただけるものであり、セキュリティの考え方や現実的な施策を展開しています。「セキュリティの勉強を始める必要性は感じているけど何から始めたらよいか分からない」といったご意見を開発者の方から多くいただいていますが、これらOWASPコミュニティの成果物を通じて、ソフトウェア開発ライフサイクル（SDLC）におけるセキュア開発の実現力を高めるきっかけを掴むことができます。

本記事では、OWASPコミュニティが誇る最高の成果物である「OWASP Top 10」をご紹介します。OWASP Top 10を活用することで重要な脆弱性の内容を理解するとともに、その対処法についても学ぶことができます。それではOWASP Top 10を通じてセキュリティの世界の扉を開いてみましょう。

対象読者

セキュリティ専任ではない開発者、運用エンジニア、ディレクタ、デザイナ など。

OWASP Top 10とは

3年に1度の頻度で公開される、ウェブアプリケーションにおける重要な脆弱性やその脆弱性を作りこまないようにする方法などを示した成果物です。2013年に公開されたものが最新版であり、日本語に翻訳されています。また、企業のウェブアプリケーションにおいて、「OWASP Top 10に掲載されている脆弱性に対応できていること」をセキュリティ要件として定めていることもあります。さらに、セキュリティベンダにおけるウェブアプリケーション脆弱性診断サービスがOWASP Top 10に対応していることを示して、その品質を訴求するなど、個人のみならず法人においても活用されています。

重要なインパクトのある10の脆弱性

OWASP Top 10では、以下のような脆弱性が示されています。

OWASP Top 10で示されている10の脆弱性 項番 脆弱性 脆弱性概要 A1 インジェクション SQL、OS、LDAPなどに悪意のある文字列を挿入するインジェクション攻撃により、意図しないコマンドの実行や適切な権限のないデータへのアクセスが行われます。 A2 認証とセッション管理の不備 パスワード、鍵、セッショントークンなどを漏洩させたり、他の実装不備を用いてなりすましなどが行われます。 A3 クロスサイトスクリプティング（XSS） 被害者のブラウザ上でスクリプトを実行し、ユーザセッションのハイジャック、ウェブサイトの改ざん、悪意のあるサイトへのリダイレクトなどが行われます。 A4 安全でないオブジェクト直接参照 オブジェクトに直接アクセスされ、適切な権限のないデータへのアクセスが行われます。 A5 セキュリティ設定のミス デフォルト設定での利用や最新のソフトウェアを利用していないことなどにより、アプリケーション、フレームワーク、サーバなどのセキュリティが損なわれ、最悪の場合、機密性の高い情報の漏洩につながります。 A6 機密データの露出 クレジットカード情報、個人情報、認証情報などの機密性の高い情報が適切に保護されておらず、それらの情報が漏洩します。 A7 機能レベルアクセス制御の欠落 機能レベルでのアクセス制御が行われていないことにより本来許可されていない機能を利用されます。 A8 クロスサイトリクエストフォージェリ（CSRF） ユーザからの正当なリクエストとして認識されるリクエス トを被害者のブラウザに生成させ、被害者が意図しない処理を実行されます。 A9 既知の脆弱性を持つコンポーネントの使用 脆弱なコンポーネントを悪用されることにより、深刻なデータ損失やサーバ乗っ取りなどが行われます。 A10 未検証のリダイレクトとフォーワード 適切な検証が実装されていないリダイレクト／フォーワードを悪用し、被害者をフィッシングサイトやマルウェアサイトに誘導します。

それぞれの脆弱性に対し、以下の項目について解説しています（図1参照）。

各脆弱性の詳細 項番 大項目 小項目 内容 1 脆弱性の概要 脅威となる人 この脆弱性を悪用されることでどのような人が被害を受ける可能性があるかを示しています。 攻撃手法 悪用可能な攻撃を成立するための難易度「容易」「普通」「困難」の3段階で定義しています。 脆弱性の普及度 脆弱性の作りこまれやすさを「極高」「高」「中」「低」の4段階で定義しています。 検出難易度 テストまたはコード解析による脆弱性の検出の難易度を「容易」「普通」「困難」の3段階で定義しています。 技術的影響 脆弱性を利用して想定される被害の範囲を「深刻」「中程度」「軽微」の3段階で定義しています。 ビジネスへの影響 ビジネス上の評判の低下や、リカバリにかかるコスト増など考慮すべきビジネスへの影響を示しています。 2 脆弱性有無の確認 基本的にはテスター向けに脆弱性有無を確認するポイントを示していますが、開発者向けに脆弱性を作りこまないようにするための概念を示しているものもあります。 3 防止方法 開発者向けに脆弱性を作りこまないようにするための具体的な方法を示しています。 4 攻撃シナリオの例 場合によっては具体的なコードを用いて想定される攻撃シナリオを示しています。本項目が示されていることがOWASP Top 10の最大の特徴であると筆者は考えています。その理由として、どのような攻撃が行われるかを理解せずにただ単にセキュリティを向上させる方法だけ理解しても、体系的な理解を得ることはできないからです。 5 参考資料 関連するOWASPコミュニティの他の成果物に加え、他の団体などが公表している関連資料を掲載しています。

今後この連載で、A1：インジェクションやA3：クロスサイトスクリプティング（XSS）などそれぞれの詳細についての解説記事を執筆していく予定です。

その他に考慮したい脆弱性

OWASP Top 10として定義はされていなくても、その他に考慮すべき脆弱性の一例として以下が掲載されています。この中から2016年にリリースされるであろうTop 10に食い込んでくる脆弱性があるかもしれません。