OpenTextのホームページ。
技術トピックス

OWASPトップ10とは?

クエスチョンマークを中心としたIT項目の図解

概要

オープン・ウェブ・アプリケーション・セキュリティ・プロジェクト(OWASP)は、ソフトウェアのセキュリティを向上させることを目的としたオープンソースのアプリケーション・セキュリティ・コミュニティである。OWASPトップ10は、開発者が設計・配備するアプリケーションの安全性を高めるために、最も重大なアプリケーションセキュリティリスクをリストアップした業界標準のガイドラインです。

セキュリティリスクは常に進化しているため、OWASPトップ10リストはこれらの変化を反映するために定期的に改訂される。2021年に発表されたOWASP Top 10の最新版では、もはや深刻な脅威をもたらさないタイプの脆弱性の一部が、重大なリスクをもたらす可能性が最も高いものに置き換えられている。

OWASPトップ10は、アプリケーションのセキュリティを確保するための素晴らしいスタート地点ではあるが、最も多く指摘された脆弱性の中にはOWASPトップ10 2021に入らなかったものもあるため、これを最終ゴールと考えるべきではないことは確かだ。ソフトウェアの弱点から身を守るには、守備側は情報技術スタック全体をより広く見渡す必要がある。つまり、ITセキュリティの専門家は、ソフトウェア・エコシステム全体に焦点を当て、脆弱性の「伝統的な」ソースを超えたところに目を向ける必要があるということだ。

OWASPトップ10

OWASPトップ10(2021年)のカテゴリーとは?

A1:インジェクション

インジェクションの欠陥は、信頼されていないデータソースがインタプリタに送られるたびに発生する可能性がある。例としては、SQL、LDAP、XPath、NoSQLの動的データベースで、ユーザーが入力するクエリがよく見られる。攻撃者はユーザー入力にコードを注入し、クエリーインタープリターを騙して悪意のあるコマンドを実行させる。

アプリケーションにインジェクションの脆弱性があるのはなぜか?

  • ユーザーが提供したデータが十分に検証されていない。
  • 動的クエリが十分な入力サニタイズなしに実行される。
  • システム内で悪意のある行動に使用される敵対的なデータ。

インジェクションの欠陥の影響は?

  • アプリケーションまたは基礎となるホストの侵害。
  • 機密データの暴露。
  • 生産性、評判、収益の損失。

インジェクションの欠陥にフォーティファイはどのように役立つのか?

  • あなたが開発者ならFortifyはインジェクションの欠陥を検出し、タイプに応じた修正アドバイスを提供します。
  • もしあなたがQAやオペレーションにいるのであれば:Fortifyは実行時にコードを検証し、緩和策を講じます。
  • 業務に携わる場合Fortifyは、Javaと.NETインジェクションの試行に対して、ランタイムロギングと保護を提供します。

A2: 壊れた認証

ステートフルなアプリケーションでIDやセッションデータを管理する場合、認証の破 壊が発生する可能性がある。登録、クレデンシャル回復、API経路が、期限切れのセッショントークン、ブルートフォース、あるいはアカウントの列挙に対して脆弱である場合、その例はしばしば発見される。攻撃者は正当なユーザーになりすまし、アカウントを制御し、データ、プロセス、またはシステムを侵害する。

認証が破られた場合にアプリケーションが脆弱になるのはなぜか?

  • セッション ID の公開、適切な無効化、ローテーションの失敗。
  • パスワードポリシーをNIST 800-63Bなどの標準と整合させていない。
  • 二要素認証(2FA)を欠くか、自動化された攻撃を許可する。

破られた認証の影響は?

  • ユーザーの個人情報の盗難。
  • ユーザーの信頼の喪失。
  • 機密データの漏洩。

Fortify はどのようにお役に立てるのでしょうか?

  • 開発者であればFortifyは壊れた認証の問題を検出し、修復を推奨します。
  • もしあなたがQAやオペレーションにいるのであれば:Fortifyは、認証とセッション管理のセキュリティを動的に検証します。
  • 業務に携わる方:Fortifyは、Javaおよび.NETアプリケーションイベントのランタイム監視を行います。

A3: 機密データの暴露

アプリケーションが暗号化されていないデータ、特に個人を特定できる情報(PII)やその他の規制対象データにアクセスすると、機密データ暴露の問題が生じる可能性がある。レガシー・アプリケーションで弱い暗号サイファーが使われていたり、セキュアなトランスポート・プロトコルが間違って実装されていたり、データ中心のセキュリティが使われていなかったりする場合に、このような例がよく見られる。攻撃者は、実生活でのコントロールを可能にする機密性の高いユーザーデータにアクセスできる。

何がアプリケーションを脆弱にするのか?

  • HTTP、SMTP、FTPなどのプロトコルを介した平文でのデータ送信。
  • 機密データを平文で不必要に保存、送信、使用すること。
  • 古い、弱い、または標準に基づかない暗号アルゴリズムの使用。

機密データ流出の影響は?

  • 規制されたデータの危殆化(例.HIPAAまたはGDPR)の罰金につながる。
  • データの精査や監視にコストがかかるアイデンティティの乗っ取り。
  • 個人情報保護に関する法規制に準拠していない。

Fortify は機密データの暴露にどのように役立つのか?

  • 開発者ならFortifyは、機密データの暴露を特定し、問題の監査を自動化します。
  • もしあなたがQAやオペレーションにいるのであれば:Fortifyは、テンプレート化によってアプリケーションコンテキストの外側で緩和された発見を取り除きます。
  • 業務に携わる方Javaと.NETのアプリケーションのロギングと保護をFortifyします。

A4: XML外部エンティティ

XML外部エンティティの問題は、外部エンティティへの参照を含むXML入力が、弱く構成されたパーサーによって処理された場合に発生する可能性がある。信頼できないソースからのXML入力を解析するアプリケーションや、文書型定義(DTD)が有効になっている場合、SOAP 1.0のようなパッチが適用されていないフレームワークを使用している場合に、このような例がよく見られます。XMLは、SVGや画像ファイルからネットワーキング・プロトコルやPDFやRSSのような文書フォーマットまで、あらゆるところに存在している。攻撃者はXML入力で外部エンティティを参照し、その結果、プロセッサが悪用され、データの抽出、リモートでのコード実行、ネットワークサービスへの影響が発生する。

アプリケーションがXML外部エンティティに対して脆弱なのはなぜか?

  • アプリケーションはXML文書を解析し、プロセッサはDTDを有効にする。
  • SSOにSAMLを使用している、v1.2より前のSOAPを使用している、またはv2.0より前の.NET Frameworkを使用している。
  • パーサーは信頼できないソースを受け入れたり、信頼できないXMLデータを挿入したりする。

XML外部エンティティの影響は?

  • 機密データの盗難。
  • 攻撃者が管理するURLのロード。
  • サービス拒否攻撃(DoS)。

FortifyはXMLの外部エンティティをどのように支援できますか?

  • あなたが開発者ならFortifyは脆弱なXMLパーサーを検出し、緩和策を推奨します。
  • QAまたは運用担当者の方へ:Fortifyは、脆弱なXMLパーサーを自動的にスキャンし、エクスプロイトのペイロードを検証します。
  • 業務に携わる場合、Fortifyは、Javaおよび.NETアプリケーションの問題に対するランタイムロギングと保護を提供します。

A5: 壊れたアクセス制御

アクセス制御の問題は、コードと環境の制限が不完全に重なっていたり、同じような機能に対して複数の場所で定義されている場合に発生する可能性がある。この例は、制限されたページへの強制的なブラウジングによってセキュリティ・バイ・オブスキュリ ティが破られる場合や、アプリケーションがアクセス制御のための複雑な方法を複数の方法や場所で定義している場合によく見られま す。攻撃者はアクセス境界を侵害し、機密データを盗んだり、業務を妨害したりすることができる。

アクセス制御が破られたアプリケーションの脆弱性とは何か?

  • ログインせずにユーザーとして、またはユーザーとしてログインしているときに管理者として行動する機能。
  • 不正または昇格した特権のためにメタデータまたはトークンを操作すること。
  • ビザンチン(byzantine)、非強制的、または散在的なアクセス制御ロジック。

アクセス・コントロールが破られた場合の影響は?

  • 不正な情報開示や機密データの漏洩。
  • データの変更または破壊。
  • サイト管理者またはユーザーの乗っ取り。

Fortifyは、壊れたアクセスコントロールにどのように役立つのでしょうか?

  • あなたが開発者ならFortifyは監査を自動化し、他の場所で緩和された問題を除去するためのテンプレート化を可能にする。
  • QAやオペレーションに携わる方Fortifyエージェントは、隠れた攻撃対象や壊れたアクセス制御システムを検出します。
  • 業務に携わる方:Javaおよび.NETアプリケーションの実行時アクセス制御ロギングのためのFortify機器。

A6: セキュリティの設定ミス

セキュリティの設定ミスの欠陥は、アプリケーションやその基礎となる環境の設定中に導入される可能性があります。設定ミスは、ネットワークサービスやアプリケーションサーバーからコンテナやストレージまで、アプリケーションスタックのどのレベルでも起こりうる。デフォルトのアカウントやコンフィギュレーション、"リーキーな" エラーメッセージ、パッチが適用されていないフレームワークやサービスなどにその例がよく見られる。攻撃者は配備情報や特権データへのアクセスを獲得し、業務を妨害することができる。

アプリケーションがセキュリティの誤設定に脆弱なのはなぜか?

  • 不必要に有効化されたデフォルトのポートやアカウント、または変更されていないパスワード。
  • エラーや例外が発生した場合、スタックトレースやその他のメッセージを表示する。
  • スタックのどの部分によってもたらされるリスクに対しても、セキュリティを適切に強化していない。

セキュリティの誤設定による影響は?

影響は情報の漏洩から完全なシステム侵害まで様々である。

Fortifyは、セキュリティの誤設定にどのように役立つのでしょうか?

  • 開発者の場合Fortify は、スキャン中にアプリケーションの依存関係と設定ファイルを識別します。
  • QAや運用に携わる方Fortifyは、アプリケーションとサーバーの構成に問題がないか動的に評価します。
  • オペレーション部門ならFortifyは、環境リスクを報告するためのオープンソース分析を提供します。

A7: クロスサイト・スクリプティング

クロスサイト・スクリプティング(XSS)の欠陥は、HTMLの一部として、信頼されていない、監査されていないユーザー入力が実行された場合、またはユーザーが悪意のあるリンクと相互作用するように影響された場合に導入される可能性があります。JavaScriptやFlashのような言語でおなじみのコード構造が、信頼できないソースから受け入れられたり、別のユーザーエージェントが後で表示するために保存されたりする場合に、このような例がよく見られます。攻撃者は、ユーザーのマシン上でリモートでコードを実行したり、認証情報を盗んだり、リダイレクトサイトからマルウェアを配信したりすることができる。

何がアプリケーションをクロスサイト・スクリプティング(XSS)に対して脆弱にするのでしょうか?

XSSには3つの形式があり、通常はブラウザなどのユーザーエージェントをターゲットにします:

  • Reflected XSS: アプリケーションまたは API が、HTML 出力に信頼できない入力を含む。
  • 保存型XSS:ディスクに保存されたサニタイズされていないコードが、ユーザーの操作によって後でトリガーされる。
  • DOM XSS:信頼できない入力を消費するアプリケーション、フレームワーク、API。

クロスサイト・スクリプティング(XSS)の影響とは?

  • アプリケーションで被害者のアカウントを乗っ取る。
  • 対象のウェブアプリケーションからデータを取得する。
  • ページ上のコンテンツの修正。

Fortifyはクロスサイトスクリプティング(XSS)にどのように役立つのでしょうか?

  • あなたが開発者ならFortifyはコード内のXSS脆弱性を検出し、悪用の可能性を予測します。
  • もしあなたがQAやオペレーションに携わっているならFortifyは、XSSに脆弱なサニタイズされていない入力を動的に検証します。
  • 運用の場合Fortifyは、不正なリダイレクトを含むJavaと.NETのイベントのロギングを提供します。

A8: 安全でないデシリアライズ

安全でないデシリアライズの欠陥は、言語やフレームワークが、信頼されていないシリアライズされたデータをオブジェクトに展開することを許可するときに発生する可能性があります。開発者が、デシリアライズ処理中に自己実行できるメソッドに制限を設けていない場合に、このような例がよく見られる。攻撃者はこれらの"ガジェットチェーン" を活用し、アプリケーションロジックの外部から呼び出され、リモートでコードを実行したり、サービスを拒否したり、不正アクセスを行ったりします。

アプリケーションが安全でないデシリアライゼーションに脆弱なのはなぜか?

  • アプリケーションは信頼できないソースからデータをデシリアライズする。
  • アプリケーションは、デシリアライズの前にソースやコンテンツを検証しない。
  • 不必要なガジェットの露出を避けるため、受け入れ可能なクラスはホワイトリストに登録されない。

安全でないデシリアライズの影響は?

  • これらの欠陥は、最も深刻な攻撃のひとつであるリモートコード実行攻撃につながる可能性がある。

Fortifyは安全でないデシリアライゼーションをどのように支援できるのか?

  • あなたが開発者ならFortifyはソースコードの脆弱性を検出し、コンポーネント分析を提供します。
  • もしあなたがQAやオペレーションに携わっているのであれば:攻撃ベクトルを検証するために、動的に実行されるアプリケーションをFortifyします。
  • 業務に携わっている場合デシリアライズを含むJavaと.NETイベントのロギングをFortifyします。

A9: 既知の脆弱性を持つコンポーネントの使用

このような欠陥は、オープンソースやサードパーティのフレームワークやライブラリがアプリケーションに導入され、同じ権限で実行された場合に発生する可能性があります。コンポーネント・ベースの開発では、依存関係に関連するリスクを理解しておらず、コンポーネントやシステムのパッチ適用が困難または不可能である例がよく見られる。脆弱性は、アプリケーションの侵害からリモート・コードの実行まで多岐にわたる。

アプリケーションがオープンソースやサードパーティのフレームワークやライブラリに対して脆弱なのはなぜか?

  • これらは偶発的なものであることもある(例えばコーディング・エラー)または故意(例.バックドアコンポーネント)。
  • アプリケーションまたは環境で、パッチが適用されていない、または古いコンポーネントが使用されている(アプリケーションの近代化が 不可欠である理由の1つ)。
  • サードパーティのコードやネストされた依存関係の脆弱性に対するスキャンの欠如。
  • 入手不可能なコンポーネントのインベントリ、または無視されたセキュリティ情報。

既知の脆弱性を持つコンポーネントを使用した場合の影響は?

既知の脆弱性の中には、わずかな影響しかもたらさないものもあるが、HeartbleedやShellshockのような既知の最大の侵害のいくつかは、共有コンポーネントの既知の脆弱性を悪用することに依存している。既知のコード脆弱性を持つコンポーネントを使用すると、影響を受けたサーバー上でリモート・コードが実行され、攻撃者がマシンを完全に制御できるようになる可能性がある。

フォーティファイは、オープンソースのセキュリティにどのように役立ちますか?

  • 開発者の方へ: FortifyはSonatypeとの統合により、ソフトウェアコンポーネントの分析を提供します。
  • もしあなたがQAやオペレーションに携わっているのであれば:Fortifyは、実行時に既知の脆弱性の動的検証を自動化します。
  • 業務に携わる方Javaおよび.NETアプリケーションコンポーネントのロギングと保護をFortifyします。

A10: ロギングとモニタリングが不十分

攻撃ベクトルやアプリケーションの誤動作がよく理解されていなかったり、侵害の指標を監視するベストプラクティスが守られていなかったりすると、不十分なロギングや監視の欠陥がもたらされる可能性があります。このような例は、ロギング機能を持たないレガシーシステムや、アプリケーションの侵入テストのログが調査されない場合、あるいは、攻撃者が何を行ったかを理解するのに十分な詳細がログから得られない場合によく見られます。攻撃者は、持続性を確立し、さらに脆弱なシステムに軸足を移すために、通常外部から発見される平均約200日間の検知に依存している。

ロギングやモニタリングが不十分だと、アプリケーションが脆弱になるのはなぜか?

  • 警告とエラーは、ログメッセージを生成しないか、不十分であるか、不明瞭である。
  • ログは、改ざん制御なしにローカルに保存され、あるいは監視されていない。
  • アラートのしきい値や対応プロセスが不十分であるか、または何の措置も講じられない。

ロギングとモニタリングが不十分な場合の影響は?

成功する攻撃のほとんどは、脆弱性のプロービングから始まる。このようなプローブを許すと、悪用が成功する可能性が高まる。攻撃者は永続性を確立し、アプリケーションやオペレーティング・システムをバックドアしたり、データを盗んだり、あるいは気付かれずにシステムを不正にコントロールしたりする可能性がある。セキュリティ上重要な情報が記録されず、適切に保存されなければ、フォレンジック分析によって攻撃源を発見するための痕跡が残らない。攻撃者がロギング機能をコントロールしている場合、問題があることを理解することはより難しくなるか、あるいは不可能になるかもしれない。

ロギングとモニタリングが不十分な場合、Fortify はどのように支援できますか?

  • あなたが開発者ならFortifyは、アプリケーションやAPIのロギング機能に脆弱性がないかスキャンします。
  • もしあなたがQAやオペレーションに携わっているのであれば:Fortifyの動的スキャンは、ペンテストのような十分性レビューのためのアプリケーションログを生成する。
  • オペレーションJavaおよび.NETアプリケーションのロギングと保護をFortifyします。

OWASP(2021年)の新情報は?

前回のトップ10が発表された2017年からまだ4年しか経っていないが、サイバーセキュリティ業界には多くの変化があり、最優先の懸念事項や新たに追加すべき懸念事項について改めて考えさせられた。

新たに3つのカテゴリーが導入された:

A04:2021

不安定なデザイン:このカテゴリーでは、設計上の欠陥に焦点を当てる。開発における左シフトの動きは、脅威のモデル化においても左シフトを必要とするからだ。

A08:2021

ソフトウェアとデータの整合性の失敗:ソフトウェアの更新、重要なデータ、CI/CDパイプラインに関する仮定に焦点を当て、それらが影響を与える可能性のある完全性を検証しない。これはまた、A08:2017 - Insecure Deserializationも組み込んでいる。

A10:2021

サーバーサイドリクエストフォージェリ(SSRF):このカテゴリーは、コミュニティ調査のトップ10にほとんど入っている。彼らは、この脆弱性の悪用可能性と影響力が平均以上であることを強調している。

その他の変更

その他のカテゴリーは、名称が変更されたか、ランクが移動したか、他のカテゴリーに統合された:

  • A01:2017 - 注射はA:03に繰り下げられた。
  • A02:2017「認証の失敗」は「識別と認証の失敗」と改称され、A07に移された。
  • A03:2017 - Sensitive Data Exposureは、症状だけでなく根本的な原因により完全に対処するため、A02に繰り上げられ、Cryptographic Failuresと改名された。
  • A05:2017 - Broken Access Controlは、テストしたアプリケーションの94% に何らかのBroken Access Controlの暴露が見られたため、A01に移行した。
  • A06:2017「セキュリティの誤設定」がA05に1つ繰り上がった。
  • A07:2017 - クロスサイトスクリプティング(XSS)はA03インジェクションに統合された。
  • A09:2017「既知の脆弱性を持つコンポーネントの使用」はA06に繰り上げられ、「脆弱性および時代遅れのコンポーネント」と改称された。この変更は、コミュニティがこのクラブをランキング2位にしたことによるところが大きい。
  • A10:2017 - Insufficient Logging& Monitoring は A09 に繰り上がり、現在は Security Logging and Monitoring Failures と呼ばれている。

フォーティファイがお客様の組織をどのように支援できるかをお知りになりたいですか? 今すぐFortify on Demand by OpenText™ の15日間無料トライアルを開始しましょう。

脚注