Open Web Application Security Project Top 10(OWASP Top 10)

OWASPとは

Open Web Application Security Project(OWASP)は、ソフトウェアのセキュリティを向上させることを専門とした非営利団体です。OWASPは「オープン・コミュニティ」モデルの下で運営されており、誰でもプロジェクト、イベント、オンライン・チャットなどに参加して貢献することができます。OWASPの基本理念は、すべての資料と情報が無料で、誰でもWebサイトから簡単にアクセスできることです。OWASPは、ツール、ビデオ、フォーラム、プロジェクトからイベントまで、あらゆるものを提供します。つまりOWASPは、オープン・コミュニティの貢献者の幅広い知識と経験に裏打ちされた、汎用的なWebアプリケーション・セキュリティのリポジトリです[i]。

OWASP Top 10とは

OWASP Top 10は、Webアプリケーション・セキュリティに関する最も重大な10のリスクについてのランキングと修正のガイダンスを提供する、OWASPのWebサイトにあるオンライン・ドキュメントです。このレポートは、世界中のセキュリティ専門家間で一致している意見に基づいています。リスクは、セキュリティの欠陥が発見された頻度、脆弱性の重大度、考えられる事業への影響の大きさに基づいてランク付けされています。レポートの目的は、開発者とWebアプリケーション・セキュリティ専門家に最も一般的なセキュリティ・リスクに関する知見を提供し、レポートの調査結果と推奨事項をセキュリティ・プラクティスに組み込み、アプリケーションにおけるこれらの既知のリスクの存在を最小限に抑えることです[i]。 

OWASP Top 10のしくみと重要である理由

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

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

OWASP Top 10とは | Synopsys

上の図は、2013年版と2017年版の比較です。

最新版は2017年に発表され、次の図に示すように、2013年版への重要な変更が含まれています。インジェクションの問題は、依然としてアプリケーションで最も脆弱なセキュリティ問題の1つであり、機密データの露出が重要視されています。安全でないデシリアライゼーションなど、いくつかの新たな問題が加わり、他のいくつかの問題は統合されました。

最新のOWASP Top 10カテゴリと 使用可能なソリューションは、OWASP Top 10 2017スタンダードで確認可能

1. インジェクション。コード・インジェクションは、攻撃者が無効なデータをWebアプリケーションに送信したときに発生します。攻撃者の意図は、アプリケーションに意図しない操作を実行させることです。

  • 例:SQLインジェクションは、アプリケーションで見られる最も一般的なインジェクションの欠陥の1つです。SQLインジェクションの欠陥は、脆弱なSQL呼び出しを作成するときに、アプリケーションが信頼できないデータを使用することによって発生する可能性があります。
  • ソリューション:ソースコード・レビューが、インジェクション攻撃を防ぐ最善の方法です。CI/CDパイプラインにSASTおよびDASTツールを含めると、導入されたばかりのインジェクションの欠陥を特定するのに役立ちます。これにより、生産採用の前に欠陥を特定して低減することができます[i]。
 

2. 認証の不備。  特定のアプリケーションは、不適切に実装される場合が多くあります。具体的には、認証とセッション管理に関連する機能が正しく実装されていない場合、攻撃者はパスワード、キーワード、およびセッションを侵害できてしまいます。これにより、ユーザーIDなどが盗まれる可能性があります[ii]。

  • 例:Webアプリケーションで、弱いパスワードまたはよく使われるパスワード(「password1」など)が使用できる場合。
  • ソリューション: 多要素認証は、アカウントの侵害リスクを減らすのに役立ちます。自動統計解析はそのような欠陥を見つけるのに非常に役立ちますが、手動統計解析はカスタム認証スキーマの評価を強化することができます。シノプシスのCoverity SASTソリューションには、認証の不備の脆弱性を具体的に特定するチェッカーが含まれています。 
 

3. 機密データの露出。機密データの露出とは、保存または送信された重要データ(社会保障番号など)が侵害された場合を指します。

  • 例:機密データを適切に保護できない金融機関は、クレジットカード詐欺や個人情報窃取の格好の標的になる可能性があります。 
  • ソリューション: CoverityなどのSASTツール、およびBlack Duck Binary Analysis(バイナリ解析)などのSCAツールには、機密データの露出につながる可能性のあるセキュリティの脆弱性を特定する機能とチェッカーが含まれています。 
 

4. XML外部実態参照(XXE)。攻撃者は、脆弱なコンポーネント処理XMLを使用するWebアプリケーションを利用できます。攻撃者は、XMLをアップロードしたり、悪意のあるコマンドやコンテンツをXMLドキュメントに含めたりすることができます。

  • 例:  アプリケーションで、信頼できないソースがXMLのアップロードを実行できる場合。
  • ソリューション: 静的アプリケーション・セキュリティ・テスト(SAST)は、ソースコードのXXEを検出する際に非常に役立ちます。 SASTは、アプリケーションの構成と依存関係の両方を検査するのに役立ちます。
 

5. アクセス制御の不備。アクセス制御の不備とは、攻撃者がユーザー・アカウントにアクセスできる場合を指します。攻撃者は、システムのユーザーまたは管理者として操作することができます。

  • 例:アプリケーションで、プライマリ・キーを変更できる場合。キーが別のユーザーのレコードに変更されると、そのユーザーのアカウントを表示または変更できます。
  • ソリューション: 意図しないアクセス制御を検出するには、ペネトレーション・テストを使用することが非常に重要です。データ・アクセスの信頼境界を設けることで、アーキテクチャと設計の変更を保証することができます[iii]。
 

6. セキュリティ設定のミス。セキュリティの設定ミスとは、設計または構成の弱点が設定エラーまたは欠点に起因する場合を指します。

  • 例:  デフォルトのアカウントとその元のパスワードが引き続き有効になっているため、システムが侵入に対して脆弱になる場合。
  • ソリューション: シノプシスのCoverity SASTなどのソリューションには、エラー・メッセージを通じて利用可能な情報公開を識別するチェッカーが含まれています[ii]。 
 

7. クロスサイト・スクリプティング(XSS)。XSS攻撃は、アプリケーションにWebページ上の信頼できないデータが含まれている場合に発生します。攻撃者は、クライアント側のスクリプトをこのWebページにインジェクションします。

  • 例:アプリケーション内の信頼できないデータにより、攻撃者が「ユーザー・セッションを盗み」、システムにアクセスすることができる場合。
  • ソリューション: データ・フロー解析に精通したSASTソリューションは、これらの重大な欠陥を見つけて修正案を提案するのに役立つ優れたツールになります。また、OWASP Webサイトでは、コードからそのような欠陥を排除するためのベストプラクティスのチートシートを提供しています。共通脆弱性タイプ一覧(CWE)も含むXSSのようなOWASP Top 10カテゴリの場合、Black Duckは、脆弱性につながる弱点をチームに警告します。これにより、チームは脆弱性をよりよく理解し、修正作業の優先順位を付けることができます[ii]。
 

8. 安全でないデシリアライゼーション。安全でないデシリアライゼーションは、デシリアライゼーションの欠陥により、攻撃者がシステム内のコードをリモートで実行できる脆弱性を指します。

9. 機知の脆弱性を持つコンポーネントの使用。この脆弱性の名称はその性質を示しています。既知の脆弱性を含むコンポーネントを使用してアプリケーションを構築および実行するタイミングを表しています。

  • 例:開発で使用されるコンポーネントの量が多いため、開発チームが、アプリケーションで使用されるコンポーネントを把握または理解していない場合。これにより、コンポーネントが古くなり、攻撃に対して脆弱になる可能性があります。
  • ソリューション: Black Duckのようなソフトウェア・コンポジション解析(SCA)ツールを静的解析と一緒に使用すると、アプリケーション内の古くなった安全でないコンポーネントを識別および検出することができます[ii]。 
 

10. 不十分なロギングと監視。ロギングと監視は、Webサイトの安全性を保証するために、Webサイトに対して頻繁に実行する必要のあるアクティビティです。サイトを適切にログに記録して監視しないと、サイトはより深刻な侵害アクティビティに対して脆弱になります。

  • 例:ログイン、ログインの失敗、その他の重要なアクティビティなど、監査可能なイベントがログに記録されないため、アプリケーションが脆弱になる場合。
  • ソリューション: ペネトレーション・テストを実行した後、開発者はテスト・ログを調べて、考えられる欠点と脆弱性を特定できます。 SASTソリューションも、ログに記録されないセキュリティ例外の特定に役立つ可能性があります[ii]。 

独自のOWASP Top 10リストを作成する

詳細はこちら

シノプシスがサポートできるその他の方法

Coverity SAST + Black Duck SCA

シノプシスの包括的なCoverity SASTソリューションは、詳細かつ実行可能な修正アドバイスを提供することができます。CoverityのCI/CDパイプラインへのシームレスな統合によりテストを自動化し、開発スピードを維持することができます。OWASP Top 10の脆弱性の9/10をカバーするCoverityは、OWASP Top 10の脆弱性の低減における優秀なツールです。

残りのOWASP脆弱性(A9)に対処するBlack Duck SCAと組み合わせると、Coverity + Black DuckはすべてのOWASP脆弱性から全面的に保護するため、確信をもって開発することができます。詳細については、Coverityのデータシートをご覧ください。 

脅威モデリング

アプリケーションの設計に潜む弱点を明らかにします。脅威モデリングは、悪意のあるハッカーの観点を導入して、システムに害を及ぼす可能性がある脅威エージェントの種類を特定し、どの程度の被害が起こり得るかを確認します。通常のあらかじめ用意されたリスト以外の、新しい攻撃や他の方法では考慮されていない可能性のある攻撃を考察します。 

脅威モデルの内容

  • 資産をリスクに応じて優先順位付け
  • 脅威を発生確率に応じて優先順位付け
  • 発生の可能性が最も高い攻撃
  • 成功または失敗する可能性が高い現在の対策
  • 脅威を低減するための対策

アーキテクチャ・リスク解析(ARA)

システム設計の欠陥を特定してセキュリティ態勢を強化します。何年もの経験により、セキュリティ上の問題を引き起こすソフトウェアの不具合の約半分は、設計上の欠陥であることがわかっています。セキュリティの脆弱性についてソフトウェアをテストするだけでは不十分であり、攻撃に対して脆弱なままです。 

 

[i] https://owasp.org/www-project-top-ten/

[ii] https://wiki.owasp.org/?title=Special:Redirect/file/OWASP_Top_10-2017%28ja%29.pdf

[iii] https://cwe.mitre.org/data/definitions/284.html