セキュリティリスクとデータ露出: 2021年版OWASP Top 10

次のようなOWASP Top 10およびWebアプリケーションセキュリティに関する喫緊の疑問点への答えを探ってみましょう。

ソフトウェア開発では、セキュリティ脆弱性を露呈するソフトウェアの弱点がないかテストするのが通常です。しかし、Webアプリケーションセキュリティはいっそう複雑化しており、アプリケーションの攻撃面を広げるアプリケーションプログラミングインターフェイス(API)の利用が増えています。DevSecOps、AppSec、アプリケーション開発の各チームは、セキュリティリスクを軽減し、攻撃面を縮小し、アプリケーションの脆弱性によるデータ露出を防ぐためのプラクティスを探し求めています。

Webアプリケーションは激しい攻撃にさらされており、しかも攻撃の件数は着実に増えています。Webアプリケーションは脆弱性のあるサードパーティ製ライブラリを使用していることが知られています。そういった脆弱なコンポーネントにアクセスできることが、セキュリティリスクを作り出し、Webアプリケーションの攻撃面を露出します。攻撃者は容易に重大な混乱を引き起こし、クレジットカードデータなどの個人情報の詐取や改ざんを行ったり、サービス拒否に追い込んだり、あるいは単にデータを人質にとって金銭を要求することができます。残念ながら、企業は規模の大小を問わず、サイバーセキュリティの課題を避けて通れません。

攻撃者は脆弱性を探し出し、アプリケーションのセキュリティを毀損するのに利用します。Webアプリケーションの脆弱性となるのは、アプリケーションコードの弱点であったり、Webベースのアプリケーションでの設定ミスの問題であったりします。これらの脆弱性は以下のような原因から発生する可能性があります。

  • フォーム入力を検証またはサニタイズしていない
  • Webサーバーの誤設定
  • アプリケーション設計の欠陥
  • 認証の仕組みの設計や実装が不適切
  • アプリケーションプログラミングインターフェイス (API)

Verizon の 2021 Data Breach Investigation Report (DBIR)に示されているとおり、Webアプリケーション攻撃は、サイバーセキュリティインシデントおよびデータ漏洩に関して最も一般的な攻撃ベクターです。Webアプリケーションには、パッチの適用や低減すべき脅威モデリングなどのしっかりした予防・解決戦略が必要です。

Webアプリケーションのセキュリティ対策は何から始めるとよいか?

Open Web Application Security Project (OWASP)は、コミュニティ活動、トレーニング、啓発を通じてアプリケーションセキュリティ(AppSec)プラクティスをグローバルに推進しています。OWASP Top 10 は、セキュリティ上の脅威から未然にWebアプリケーションを保護し、リスクを低減しようとする組織にとっての参照標準です。OWASP Top 10 への準拠を検証するのは、組織のソフトウェア開発カルチャーを変革し、改善しようとするときの最初の一歩として好適です。OWASPは、アプリケーションにとっての脅威や、適切なコーディングおよびアプリケーションセキュリティプラクティスに従っていない場合に発生する可能性がある問題について、教育と啓発を提供しているからです。

Webアプリケーション改善に利用できるもう1つのリソースは、Common Vulnerabilities and Exposures (CVE) システムです。CVEは既知の情報セキュリティ脆弱性および露出へのリファレンスを提供します。CVEを利用することで、誰もが既知の脆弱性を追跡し、現実での悪用についてのデータを提供できます。そうしたデータは、ソフトウェア開発プラクティスや脅威モデリングアクティビティとして体系化し、セキュリティの構築に役立てることができます。

Webアプリケーションのスキャンまたはテスト(SAST、DAST、IAST、SCAなど)は、セキュリティチームにとって優れた基盤です。Webアプリケーションファイアウォール(WAF)も、OWASP Top 10 で識別されたWebアプリケーションに対する攻撃を判別し、モニターし、ブロックするためのツールです。

OWASPおよびOWASP Web アプリケーションセキュリティリスクトップ 10 とは何か?

OWASP Top 10 は、Webアプリケーションの最もよく知られた脆弱性および危険なセキュリティリスクのリストです。増加・進化する脅威を見越して定期的にアップデートされています。

OWASP Top 10攻撃とは何か、2021年版OWASP Top 10にはどんな脆弱性が含まれているか?

OWASPはTop 10リストのドキュメントを提供するほか、各脆弱性について専用のWebページで脅威、リスク、軽減策を説明しています。サイトは、各脆弱性がどのようなものかを説明し、脆弱性の可能性に優先順位を付けて対処するのに役立つリスクスコアを提示します。

2021年版のOWASP Top 10は次のA-1からA-10の脆弱性で構成されます。

1.A01:2021—アクセス制御の不備 (OWASP Top 10-2017ではA05)

最も重大なWebアプリケーションセキュリティリスクとしてリストの筆頭に上がったアクセス制御の不備には、34個のCWEが関連付けられています。これらのCWEは、アプリケーションにおいて他のカテゴリよりも多く発生しています。Webアプリケーションのアクセス制御モデルは、サイトが提供するコンテンツや機能と深く結びついています。アクセス制御が適切に構成されていなければ、ハッカーは機密ファイルへのアクセス権を取得したり、サイトを書き換えたりできます。

2.A02:2021—暗号化の失敗 (OWASP Top 10-2017ではA03)

暗号解読ソフトウェアには、暗号を破るのに使用されるさまざまなソフトウェアプログラムが含まれます。以前は「機微な情報の露出」という名前だった暗号化の失敗は、信頼されていないソースから保護されるべき情報が攻撃者に開示されていることを意味します。すると、ハッカーはクレジットカードプロセッサのデータやその他の認証情報などにアクセスできます。

3.A03:2021—インジェクション (OWASP Top 10-2017ではA01)

攻撃者が悪意のあるSQLコードを使用してバックエンドのデータベースを操作し、機密情報を暴露した場合、インジェクション攻撃と呼ばれます。NoSQL、OS、LDAP、SQLインジェクションなどのインジェクション欠陥は、信頼できないデータがコマンドまたはクエリーの一部としてインタープリターに送信されることで発生します。

クロスサイトスクリプティング(XSS)攻撃もインジェクションの一種です。HTMLページの内容を書き換えることができる無害な信頼されたWebサイトに悪意のあるスクリプトが挿入されます。

サーバーサイドリクエストフォージェリ(SSRF)は、ハッカーが認可されていないリストを見たり、テーブルを削除したり、認可されていない管理者アクセス権を保有するだけでなく、脆弱性のあるWebアプリケーションのバックエンドサーバーからコードを実行することさえ可能な攻撃です。

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

これは2021年版の新しいカテゴリであり、設計の欠陥に焦点をあてるものです。セキュアではないWebページ設計を防ぐため、脅威モデリング、セキュア設計のパターンおよび原則、参照アーキテクチャがますます必要とされるようになっています。

これは重要な追加要素です。なぜなら、開発者は設計およびアーキテクチャのコンセプトをどのように構成し、正しくコードに実装するかを意識する必要があるからです。設計およびアーキテクチャのコンセプトを誤って実装すると、セキュリティ脆弱性を発生させる可能性があります。

5.A05:2021—セキュリティの設定ミス (OWASP Top 10-2017ではA06)

今回、XML外部エンティティ攻撃はセキュリティの設定ミスに取り込まれました。高度な設定が可能なソフトウェアへの移行が進む中で、脅威も増しています。

6.A06:2021—脆弱で古くなったコンポーネント (OWASP Top 10-2017ではA09)

以前は「既知の脆弱性のあるコンポーネントの使用」というタイトルだったこのカテゴリは、OWASPのエキスパートたちがリスクアセスメントのテストに苦心しているよく知られた問題を表します。

多くのセキュリティの問題の原因が、古くなったサードパーティ製ソフトウェアコンポーネントに帰せられています。この問題は、悪用されるまでの時間が短くなっているにもかかわらず、組織が迅速にパッチを当てたり脆弱性に対処していないことへの懸念とも合わさっています。

7.A07:2021—識別と認証の失敗 (OWASP Top 10-2017ではA02)

標準化されたフレームワークがより容易に利用できるようになったことが功を奏していると見られるため、カテゴリとしての認証の脆弱性は、トップ10の中で2位から降格しました。ユーザーアカウントが認証できない場合、サービス拒否につながる可能性があるため、以前は「認証の不備」と呼ばれていました。ほとんどのインスタンスでは、マルチファクター認証は採用されていません。識別の失敗とより関連が深いCWEが含まれるようになりました。

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

2021年版で新しく追加されたこのカテゴリは、整合性を検証せずにソフトウェアアップデート、重要なデータ、CI/CDパイプラインに関して思い込みをすることにフォーカスしています。「A8:2017—セキュリティログとモニタリングの失敗」はこのより大きなカテゴリに統合されました。

SolarWindsの侵害に関連する最近の攻撃や、ビルド環境の安全確保を巡る懸念により、この脅威の重要性が増しています。ソフトウェアの整合性は、Executive Order on Cybersecurity, section 4 で特に名指しされました。

9.A09:2021—セキュリティログとモニタリングの失敗 (OWASP Top 10-2017ではA10)

このカテゴリは、可視性、インシデントアラート、フォレンジックに直接的な影響を与える可能性があるより多くの失敗のタイプを含むよう拡張されました。

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

データでは、Top 10に追加されたばかりのこのカテゴリのインシデント率は低いことが示されています。

SASTでOWASPへのコンプライアンスを推進する方法は?

ニュースではひんぱんにサイバー攻撃が報じられていますが、避けられるはずのセキュリティ脆弱性によってWebアプリケーションが攻撃の被害に遭うことは許容できません。静的コード解析とも呼ばれる静的アプリケーションセキュリティテスト(SAST)は、Webアプリケーションのソースコードに対して自動化されたテストや解析を行うことを可能にします。

SASTはチェック対象のコードを解析し、Webアプリケーションのセキュリティ脆弱性を露呈する可能性がある弱点がないか探します。SASTツールは、実行可能なアプリケーションがなくても解析を行うことができます。SASTはその場でコードを解析し、OWASP Top 10違反をすばやく知らせます。

OWASP Top 10のガイダンスをソフトウェア開発アクティビティに最初から組み込み、SASTによってコンプライアンスを検証するのは、セキュリティ脆弱性を減らす良いプラクティスです。開発プロセスの早期にSASTを取り入れることで、セキュリティコンプライアンスの要件を満たしながら、修正が最も容易でコストも最少の時期に、セキュリティコンプライアンスのセキュリティ上の弱点やアプリケーション脆弱性を識別できます。

セキュリティツールの出力への対応は膨大な作業が必要になることもあるため、セキュリティ分野のリスクモデルを組み込んだ自動SASTツールを探すとよいでしょう。OWASPは最も重要な問題や脆弱性に対処しているため、開始点に適しています。収集がついたとチームが感じられるようになったら、改善を加えることができます。下の表に挙げられている発展的なセキュアコーディング標準は、セキュリティを拡げ、将来の成功を準備するのに役立つでしょう。

コーディング標準名 管理団体 目的の概要
CERT (Computer Emergency Response Team) CERT Coordination Center 開発者がコーディングおよび実装中にエラーを避け、さらに設計の低レベルでのエラーを検出するのに役立つガイドラインです。
OWASP Top 10 OWASP (Open Web Application Security Project) Foundation Webアプリケーションおよびソフトウェア開発者はこの標準を使用してWebアプリケーションの重大なセキュリティリスクを検出し、修正します。
CWE (Common Weakness Enumeration) コミュニティにより開発・保守 開発者がソフトウェアの脆弱性および弱点を識別するのに役立ち、ソフトウェアの欠陥を理解するのを支援するカテゴリシステムです。また、開発者はこのシステムを利用して欠陥を修正・予防するツールを開発します。
DISA Application Security and Development STIGS Defense Information Systems Agency (DISA) および United States Department of Defense マネージャー、設計者、開発者、システム管理者がアプリケーションおよびアプリケーション開発のセキュリティ制御を構築し、維持するのに役立ちます。

Parasoft などの自動SASTソリューションは、OWASPのアップデートごとにアップデートされたコンプライアンスパックを提供しています。下の図に示すように、新しいルールはチェッカーとなり、開発者が JavaC/C++.NETPythonなどの新しいコーディングプラクティスを推進するのに役立ちます。OWASPによって指摘された上位10のリスクを排除し、開発者のガイドとなります。さらに、AI/MLを活用した自動優先順位付け機能が、手動での優先順位付けから憶測を排除します。

新しいParasoft チェッカー/ルールのOWASP Top 10 2021サポート対応

下の図は、Parasoftのチェッカー/ルールのOWASP Top 10 2021アップデート版対応状況です。

Parasoftのチェッカー/ルールのOWASP Top 10 2021アップデート版対応状況

SASTとDASTはどう違うのか?

Webアプリケーションセキュリティ対応のもう1つの武器は、動的アプリケーションセキュリティテスト(DAST)です。DASTでは、実行時テストまたはブラックボックステストの最中に、セキュリティ脆弱性を悪用するさまざまな方法を探ることで、悪意のある攻撃やその他の外部的なふるまいをシミュレートします。

ですから、SASTはアプリケーションを実行することなくあらゆるコード行を解析しますが、DASTは脆弱性のスキャンを始める前にアプリケーションを実行しなければなりません。つまり、実行可能なソフトウェアが必要です。

SASTかDASTかの判断には多くの要素が関係します。SASTツールとDASTツールを比較したSASTに関する記事をご覧ください。

ホワイトペーパー(英語) のダウンロード: How to Choose a Modern Static Analysis Tool with CTA: Download the Whitepaper

著者: Kevin E. Greene

ParasoftのDirector of Security SolutionsであるKevinは、ソフトウェアセキュリティ、サイバー研究および開発、DevOps分野での広範な経験と知識を有しています。その知識を活かして、ソフトウェアセキュリティプラクティスの改善に役立つ有意義なソリューションとテクノロジーを開発しています。

(この記事は、開発元Parasoft社 Blog 「Security Risks & Data Exposure: The OWASP Top 10 for 2021」2021年10月19日の翻訳記事です。)

Parasoft Jtestについて

Java対応静的解析・単体テストツール Parasoft Jtest

Jtestは、テスト工数の大幅削減とセキュアで高品質なJavaシステムの開発を強力にサポートするJava対応テストツールです。1,000個以上のコーディング規約をもとにソースコードを静的に解析し、プログラムの問題点や処理フローに潜む検出困難なエラーを検出します。さらに、JUnitを用いた単体テストについて、作成、実行、テストカバレッジ分析、テスト資産の管理といった単体テストに係る作業をサポートし、単体テストの効率化を促進します。

Top