定義

Open Worldwide Application Security Project(OWASP)は、ソフトウェアのセキュリティを向上させることを専門とした非営利団体です。OWASPは「オープン・コミュニティ」モデルの下で運営されており、誰でもOWASP関連のオンライン・チャットやプロジェクトなどに参加して貢献することができます。OWASPのWebサイトでは、オンライン・ツールやビデオから、フォーラムやイベントまで、さまざまなリソースに無料で簡単にアクセスできます。

OWASP Top 10は、Webアプリケーション・セキュリティに関する最も重大な10のリスクについてのランキングと修正のガイダンスを提供します。このレポートは、OWASPのオープン・コミュニティの貢献者の幅広い知識を活かし、世界中のセキュリティ・エキスパートの共通認識に基づいて作成されています。リスクは、セキュリティ上の欠陥が発見された頻度、発見された脆弱性の重大度、考えられる事業への影響の大きさに従ってランク付けされています。レポートの目的は、開発者とWebアプリケーション・セキュリティ専門家に一般的なセキュリティ・リスクに関する知見を提供し、レポートの調査結果と推奨事項をセキュリティ・プラクティスに組み込み、アプリケーションにおけるこれらの既知のリスクの存在を最小限に抑えることです。

OWASP Top 10リストの活用方法と重要である理由

OWASP Top 10リストは、2003年から2~3年ごとに、アプリケーション・セキュリティ市場の進歩と変化のスピードに合わせて更新されています。このリストは実用的な情報を提供している点で重要であり、現在も多くの世界的な大組織におけるチェックリストとして、また、Webアプリケーションの社内開発標準としての役割を果たしています。

OWASP Top 10に対応できていない場合、監査者からは、標準の準拠において不備がある可能性を示唆するものとみなされがちです。一方、OWASP Top 10をソフトウェア開発ライフサイクル(SDLC)に組み込むことは、セキュア開発に関する業界のベストプラクティスを全面的に取り入れている証になります。


2021年のリストでの変更点

2021年のリストでは、3つの新しいカテゴリの追加、4つのカテゴリの名称とスコープの変更、いくつかのカテゴリの統合がありました。

OWASP Top 10 -  2017 vs 2021  | Black Duck

1. アクセス制御の不備(A01:2021)

以前はリストの5位であったアクセス制御の不備(攻撃者がユーザー・アカウントへのアクセスに利用できる脆弱性)が、2021年には1位になりました。この脆弱性は、攻撃者がユーザーまたは管理者としてシステムを操作することを可能にします。

例:アプリケーションでプライマリ・キーを変更できる場合。キーを別のユーザーのレコードに変更すると、そのユーザーのアカウントを表示または変更できます。

ソリューション: Seeker®などのインタラクティブ・アプリケーション・セキュリティ・テスト(IAST)ソリューションを利用すると、クロスサイト・リクエスト・フォージェリや、機密データが保存されているストレージのセキュリティの不備を容易に検出できます。また、JSON Webトークンの処理に使用されている不正なロジックやロジックの欠落も特定できます。ペネトレーション・テストは、IASTアクティビティを補完して、意図しないアクセス制御を手動で検出します。データ・アクセスの信頼境界を設けることで、アーキテクチャと設計の変更を保証することができます。

2. 暗号化の失敗(A02:2021)

このカテゴリは、以前は「機密データの露出」と呼ばれ、リスク・ランキングは3位でしたが、症状ではなく根本原因を正確に表すために「暗号化の失敗」と改称されました。暗号化の失敗は、保存または送信された重要データ(社会保障番号など)が侵害された場合に発生します。

例:機密データを適切に保護できない金融機関は、クレジットカード詐欺や個人情報窃取の格好の標的になる可能性があります。

ソリューション:Seekerのチェッカーにより、不十分な暗号強度、弱い暗号鍵またはハードコードされた暗号鍵をスキャンし、不完全または危険な暗号アルゴリズムを特定します。Black Duck®暗号化モジュールによりオープンソース・ソフトウェア(OSS)で使用されている暗号化方法を明らかにし、さらに詳細に評価して強度を高めることができます。Coverity®静的アプリケーション・セキュリティ・テスト(SAST)とBlack Duckソフトウェア・コンポジション解析(SCA)の両方に、コード・レベルおよびコンポーネント・レベルで「ポイント・イン・タイム」スナップショットを生成できるチェッカーが備わっています。ただし、他の内部および外部のソフトウェア・コンポーネントとの統合テスト中に機密データが漏洩することのないようにするために、IASTで補完し、継続的な監視と検証を行うことが不可欠です。 

3. インジェクション(A03:2021)

インジェクションは1位から3位に下がり、クロスサイト・スクリプティングはこのカテゴリに分類されるようになりました。コード・インジェクションは、攻撃者がアプリケーションに意図しない操作を実行させるために無効なデータをWebアプリケーションに送信したときに発生します。

例:アプリケーションが信頼できないデータを使用して脆弱なSQL呼び出しを作成した場合。

ソリューション:継続的インテグレーション/継続的デリバリー(CI/CD)パイプラインにSASTツールとIASTツールを含めることで、静的コード・レベルのテストとアプリケーション実行中の動的テストにより、インジェクションを引き起こす可能性がある欠陥を特定できます。Seekerなどのモダン・アプリケーション・セキュリティ・テスト(AST)ツールでは、さまざまなテスト段階でソフトウェア・アプリケーションを保護し、SQLインジェクションを含むさまざまなインジェクション攻撃をチェックすることができます。識別できるインジェクションの例として、NoSQLインジェクション、コマンド・インジェクション、LDAPインジェクション、テンプレート・インジェクション、ログ・インジェクションが挙げられます。Seekerは、Log4Shellの脆弱性を検出するための新しい専用チェッカーを備えた最初のツールであり、Log4Jの設定方法を確認し、実際の動作をテストして、その結果を特許取得済みのActive Verificationエンジンで検証(または無効化)します。 

4. 安全が確認されない不安な設計(A04:2021)

安全が確認されない不安な設計は、2021年に新設されたカテゴリで、設計上の欠陥に関連するリスクに焦点を当てています。組織の「シフトレフト」が進む中、脅威モデリング、安全な設計パターンと原則、参照アーキテクチャだけでは不十分です。

例:ある映画館チェーンでは団体予約割引を提供しており、15名以下の場合は保証金が不要です。攻撃者がこのフローを脅威モデル化し、この映画館チェーンの複数の映画館にわたって数百席の予約が取れるかどうかを調べれば、何千ドルもの損失を引き起こすことができます。

ソリューション:Seeker IASTにより脆弱性を検出し、極めて複雑なWeb、クラウド、マイクロサービス・ベースのアプリケーションのすべてのインバウンドおよびアウトバウンドAPI、サービス、関数呼び出しを公開します。関連するデータフローとエンドポイントのマップを視覚化することにより、アプリケーション設計の弱点を明確にし、ペネトレーション・テストと脅威モデリングの取り組みを支援します。

5. セキュリティの設定ミス(A05:2021)

以前の外部実体カテゴリからこのリスク・カテゴリに分類が変更され、6位から順位が上昇しています。セキュリティの設定ミスとは、設計または構成の弱点が設定エラーまたは欠点に起因する場合を指します。

例:デフォルトのアカウントとその元のパスワードが引き続き有効になっているため、システムが侵入に対して脆弱になる場合。

ソリューション:Coverity SASTなどのソリューションには、エラー・メッセージを通じて情報漏えいの可能性を識別するチェッカーが含まれています。Seeker IASTなどの動的ツールを利用することにより、アプリケーションのランタイム・テストで情報の漏えいや不適切なHTTPヘッダー設定を検出できます。 

6. 脆弱で古くなったコンポーネント(A06:2021)

このカテゴリは既知のセキュリティ・リスクおよび潜在的なセキュリティ・リスクをもたらすコンポーネントに関連するもので、9位から順位が上がっています。CVEなどの既知の脆弱性が存在するコンポーネントは、特定してパッチを適用する必要がありますが、古いコンポーネントや悪意のあるコンポーネントは、実行可能性と潜在的なリスクを評価する必要があります。

例:開発で使用されるコンポーネントの量が多いため、開発チームが、アプリケーションで使用されるすべてのコンポーネントを把握または理解していない場合。これにより、一部のコンポーネントが古くなり、攻撃に対して脆弱になる可能性があります。

ソリューション:Black Duckなどのソフトウェア・コンポジション解析(SCA)ツールを静的解析およびIASTと一緒に使用すると、アプリケーション内の古く安全でないコンポーネントを識別および検出することができます。IASTとSCAの連携により、脆弱なコンポーネントや古いコンポーネントの実際の使用状況を把握できます。Seeker IASTとBlack Duck SCAを連携させることで、脆弱なコンポーネントを特定し、そのコンポーネントがテスト対象のアプリケーションで現在読み込まれているかどうかなどの詳細を明らかにします。さらに、開発者のアクティビティ、コントリビューターの評価、バージョン履歴などの指標により、古いコンポーネントや悪意のあるコンポーネントがもたらす可能性のある潜在的なリスクをユーザーに知らせることができます。

7. 識別と認証の失敗(A07:2021)

以前は「認証の不備」と呼ばれていたこのカテゴリは、2位から順位が下がり、現在は識別の失敗に関するCWEが含まれるようになりました。具体的には、認証とセッション管理に関連する機能が正しく実装されていない場合、攻撃者はパスワード、キーワード、およびセッションを侵害することが可能になります。これによりユーザーIDなどの情報が盗まれる可能性が生じます。

例:Webアプリケーションで、弱いパスワードまたは推測しやすいパスワード(「password1」など)が使用できる場合。

ソリューション:多要素認証によってアカウント侵害のリスクを低減することができます。この種の欠陥を見つけるには自動統計解析が非常に役立ちますが、手動統計解析はカスタム認証スキームの評価を強化することができます。Coverity SASTには、認証の不備の脆弱性を具体的に特定するチェッカーが含まれています。Seeker IASTは、ハードコードされたパスワードや資格情報、および不適切な認証や重要なステップが欠落した認証を検出できます。

8. ソフトウェアとデータの整合性の不具合(A08:2021)

2021年に新設されたカテゴリ。整合性を検証せずに使用されるソフトウェア更新プログラム、重要なデータ、CI/CDパイプラインに焦点を当てています。現在このカテゴリに分類されている、安全でないデシリアライゼーションとは、デシリアライゼーションの欠陥により、攻撃者がシステム内のコードをリモートで実行できる脆弱性を指します。

例:アプリケーションが、攻撃者によって提供された悪意のあるオブジェクトをデシリアライズすることにより脆弱になる場合。

ソリューション:アプリケーション・セキュリティ・ツールはデシリアライゼーションの欠陥を検出するのに役立ち、ペネトレーション・テストは問題を検証するために使用できます。Seeker IASTは、安全でないデシリアライゼーションをチェックし、安全でないリダイレクトやトークン・アクセス・アルゴリズムの改ざんを検出するためにも役立ちます。

9. セキュリティ・ログとモニタリングの失敗(A09:2021)

このカテゴリは、以前は「不十分なログ記録と監視」と呼ばれていましたが、対象となる不具合の種類が拡張され、10位から順位が上がりました。ロギングとモニタリングはWebサイトに対して頻繁に実行する必要のあるアクティビティであり、不備があれば、サイトはより深刻な侵害アクティビティに対して脆弱になります。

例:ログイン、ログインの失敗、その他の重要なアクティビティなど、監査可能なイベントがログに記録されないため、アプリケーションが脆弱になる場合。

ソリューション:ペネトレーション・テストを実行した後、テスト・ログを調べて、考えられる欠点と脆弱性を特定できます。Coverity SASTとSeeker IASTは、ログに記録されないセキュリティ例外の特定に役立ちます。 

10. サーバーサイド・リクエスト・フォージェリ(A10:2021)

サーバーサイド・リクエスト・フォージェリ(SSRF)は、今年新設されたカテゴリであり、Webアプリケーションがユーザーから提供されたURLを検証せずにリモート・リソースを取得したときに発生する可能性があります。システムがファイアウォール、VPN、または追加のネットワークアクセス制御リストによって保護されている場合でも、攻撃者は、この脆弱性を利用して、アプリケーションに細工したリクエストを予期しない宛先に送信することができます。クラウドサービスの利用やアーキテクチャの複雑化により、SSRF攻撃の深刻度と発生率が高まっています。

例:ネットワーク・アーキテクチャがセグメント化されていない場合、攻撃者はSSRFペイロードの接続結果や、接続または拒否されるまでにかかった時間をもとに内部ネットワークをマッピングし、内部サーバーのポートが開いているか閉じているかを調べます。

ソリューション:Seekerは、追加のスキャンやトリアージを必要とせずにSSRFを追跡、監視、検出できる最新のASTツールです。高度なインストルメンテーションとエージェントベースのテクノロジーにより、SSRFから潜在的なエクスプロイトを洗い出すこともできます。

シノプシスの支援方法

多くの企業は、OWASPコンプライアンス要件を満たすために、多数のアプリケーション・セキュリティ・ツールを使用しています。このアプリケーション・セキュリティ対策は、適切ですが十分ではなく、組織は依然として、多様なASTツールからのさまざまな結果を集約、関連付け、正規化するという課題に直面しています。このような場合には、アプリケーション・セキュリティ・態勢管理(ASPM)ソリューションでプロセスの効率性とチームの生産性を向上させることができます。

ASPMソリューションは、OWASP Top 10の標準への違反を予防的に追跡して対処する場合に役立ちます。Software Risk ManagerのようなASPMソリューションを利用すると、アプリケーション・リスクとコンプライアンス違反の評価に基づいて、影響の大きいセキュリティ・アクティビティをコンテキスト化できます。

これらのソリューションはセキュリティ・アクティビティと調査結果の継続的なテスト、追跡、管理をサポートする開発フレームワークおよびツールと統合されているため、OWASP標準をストレスなく早期に可視化して実装することができます。たとえば、Software Risk Managerでは、すべてのASTツール(SAST、DAST、SCA、オープンソースおよび商用)からの結果を関連付けて種類別に統合し、一元化することができます。また、ビルトインのコンプライアンス・レポート機能によりOWASP標準に違反している結果を表示できます。

その後、追加テストで必要なテストの種類と、テストするアプリケーションの事業運営上の重要度を判断できます。ASTは個々のOWASP標準に対応するための貴重な情報を提供し、ASPMアプローチは、ASTのすべての問題にわたって反復可能なソフトウェアの品質管理と運用を促進し、自動化するために役立ちます。