2021年版「OWASP Top 10 」を徹底解説!

セキュリティ対策というと難しく考えることが往々にしてよくありがちですが、はじめから順に自分で考えなくても、先人たちの知恵の結晶ともいえる資料が世の中にはたくさんあります。言うまでもなく国内にもいろいろありますが、海外にも注意を向けてみると多方面にわたり重要な意味を持つセキュリティ関連のドキュメントや資料があります。今回は、Webアプリケーションセキュリティについて情報を収集しているとよく見つける『OWASP Top 10』について徹底解説していきます。Webアプリ開発者やセキュリティ担当者であればぜひとも知見を広げておきたい内容です。

 

OWASPとは

Open Web Application Security Project(OWASP)はソフトウェアのセキュリティをより良くすることを研究対象とした営利を目的とせずに活動する団体で、機能を発揮できるように『オープン・コミュニティ』モデルの下で組織をまとめて動かされており、誰でもプロジェクト、イベント、オンライン・チャットなどに参加して貢献できます。団体の基本的な方針や精神は、人を限定せずにありとあらゆる資料と情報が無料でWebサイトから簡単にアクセスできることで、ツール・ビデオ・フォーラム・プロジェクトからイベントまで、あらゆるものが提供されています。結果として、オープン・コミュニティに対する貢献をした人の幅広い知識と経験に裏付けの得られた、汎用的なWebアプリケーション・セキュリティ開発環境におけるソースコードや設計などといった情報が保管されているデータベースとなっています。

 

OWASP Top 10とは

OWASP Top 10は、Webセキュリティの致命的・決定的な欠点が発見された頻度・脆弱性の重大度・考えられる事業への影響の大きさに基づいてランク付けされています。レポートの目的は開発者とWebアプリケーション・セキュリティ専門家に世間で最も広く行き渡っているセキュリティ・リスクに関する知識や見識などを提供して、レポートの調査結果と推奨事項をセキュリティ・プラクティスに組み込むことによって、アプリケーションにおけるこれらのすでに知られているリスクの存在を必要な分だけに抑えることです。

OWASPは世界中のセキュリティ専門家間でくいちがいなく同じである意見に基づいており、2003年からTop 10はリストの状態をそのまま保ちつづけており、Webセキュリティ市場の進歩と変化のスピードに合わせて更新されています。Top 10の価値は提供されている実際に役に立つ情報にあるため、現在も多くの大手企業において主要なチェックリストやWebアプリケーションの開発標準として貢献しています。Top 10に対応できていない場合、監督する責任者からコンプライアンス標準の面で不備がある可能性の含みを持たせるものとみなされがちですので、ソフトウェア開発ライフサイクル(Software Development Life Cycle)に組み込むことは、安全が保証されている開発に関する最善の方法が考えのうちに入っている説得力のある証拠となります。

 

2021年のOWASP Top 10でどんなことが変化したのか

新しく3つのカテゴリがあり、名前とスコープが変更された4つのカテゴリと2021年のTop 10にいくつかが統合され、そもそもの原因に焦点を当てるために名前が変更されました。

01:2021 –壊れたアクセス制御

5番目の位置から上に移動すると、アプリケーションの94%が、平均発生率3.81%の何らかの形の壊れたアクセス制御についてテストされ、提供されたデータセットで最も多く発生し、318kを超えています。含まれている注目すべき一般的な弱点列挙(CWE)には、CWE-200:不正なアクターへの機密情報の公開・CWE-201:送信データによる機密情報の公開・CWE-352:クロスサイトリクエストフォージェリが含まれます。

参考文献

 

02:2021 –暗号化の失敗

根本的な原因というよりも広範な症状であり、以前は機密データの公開として知られていた#2に1つの位置をシフトすると、暗号化に関連する障害(またはその欠如)に焦点が当てられます。これはしばしば機密データの漏洩につながります。含まれている注目すべき一般的な弱点列挙(CWE)は、CWE-259:ハードコードされたパスワードの使用・CWE-327:壊れたまたは危険な暗号アルゴリズム・CWE-331:不十分なエントロピーです。

参考文献

 

03:2021 –インジェクション

インジェクションは3番目の位置までスライドします。アプリケーションの94%は、最大発生率19%、平均発生率3%、及び274k回の発生率で何らかの形の注入についてテストされました。含まれている注目すべき一般的な弱点列挙(CWE)は、CWE-79:クロスサイトスクリプティング・CWE-89:SQLインジェクション・CWE-73:ファイル名またはパスの外部制御です。

参考文献

 

04:2021 –安全でない設計(NEW)

2021年の新しいカテゴリで、設計及びアーキテクチャの欠陥に関連するリスクに論争点をあてており、脅威モデリング、安全な設計パターン及び参照アーキテクチャの使用を増やす必要があります。コミュニティとして、私たちはコーディングスペースの『左シフト』を超えて、Secure byDesignの原則にとって重要なアクティビティを事前にコーディングする必要があります。注目すべき一般的な弱点列挙(CWE)には、CWE-209:機密情報を含むエラーメッセージの生成・CWE-256:資格情報の保護されていないストレージ・CWE-501:信頼境界違反・CWE-522:保護が不十分な資格情報が含まれます。

参考文献

 

05:2021 –セキュリティの設定ミス

前版の#6から上昇して、アプリケーションの90%が何らかの形の構成ミスについてテストされ、平均発生率は4%で、このリスクカテゴリでのCommon Weakness Enumeration(CWE)の発生率は208kを超えました。高度に構成可能なソフトウェアへのシフトが増えるにつれ、このカテゴリーが上昇するのは当然のことです。含まれている注目すべきCWEは、CWE-16:構成・CWE- 611:XML外部エンティティ参照の不適切な制限です。

参考文献

 

06:2021 –脆弱で古いコンポーネント

コミュニティ調査のトップ10で2位でしたが、データでトップ10に入るのに十分なデータもありました。脆弱なコンポーネントは、リスクのテストと評価に苦労している既知の問題であり、含まれているCWEに共通の弱点列挙(CWE)がマップされていない唯一のカテゴリであるため、デフォルトのエクスプロイト/影響の重み5.0が使用されています。含まれている注目すべきCWEは、CWE-1104:メンテナンスされていないサードパーティコンポーネントの使用・2013年と2017年のトップ10の2つのCWEです。

 

07:2021 –識別と認証の失敗

以前はBrokenAuthenticationとして知られていたこのカテゴリは、2番目の位置からスライドダウンし、識別の失敗に関連するCommon Weakness Enumerations(CWE)が含まれるようになりました。含まれている注目すべきCWEは、CWE-297:ホストの不一致による証明書の不適切な検証・CWE-287:不適切な認証・CWE-384:セッション固定です。

参考文献

 

08:2021 –ソフトウェアとデータの整合性の障害(NEW)

2021年の新しいカテゴリで、整合性を検証せずに、ソフトウェアアップデート、重要なデータ、およびCI / CDパイプラインに関連して仮定することに焦点を当てています。Common Vulnerability and Exposures / Common Vulnerability Scoring System(CVE / CVSS)データからの最大の加重影響のひとつです。注目すべき一般的な弱点列挙(CWE)には、CWE-829:信頼できない制御領域からの機能の組み込み・CWE-494:整合性チェックなしのコードのダウンロード・CWE-502:信頼できないデータの逆シリアル化が含まれます。

参考文献

 

09:2021 –セキュリティログと監視の失敗

セキュリティのログと監視の失敗は、OWASPトップ10 2017の10位からわずかに上昇したトップ10コミュニティ調査からのものです。ログ記録と監視はテストが難しい場合があり、多くの場合はインタビューや侵入中に攻撃が検出されたかどうかを尋ねます。このカテゴリのCVE / CVSSデータはそれほど多くありませんが、不当に他者の領域を侵すことへの検出と対応はきわめて大切なことです。それでも、説明責任、可視性、インシデントアラート、およびフォレンジックに非常に影響を与える可能性があります。このカテゴリは、CWE-778:Insufficient Loggingを超えて拡張・CWE-117:ログの不適切な出力中和・CWE-223:セキュリティ関連情報の省略・CWE-532:ログファイルへの機密情報の挿入が含まれます。

参考文献

 

10:2021 –サーバー側リクエスト偽造(SSRF)(NEW)

このカテゴリは、トップ10コミュニティ調査から追加されました。データは、平均以上のテストカバレッジと平均以上のエクスプロイトおよびインパクトの潜在的な評価を伴う比較的低い発生率を示しています。新しいエントリは、注意と認識のためのCommon Weakness Enumerations(CWE)の単一または小さなクラスターである可能性が高いため、それらが焦点の対象となり、将来のエディションでより大きなカテゴリにロールインできることが期待されます。

参考文献

 

OWASP Top 10 2021 –次のステップ

設計上、OWASPトップ10は本質的に最も重要な10のリスクに限定されています。すべてのOWASPトップ10には、含めるために詳細に検討された『最前線』のリスクがありますが、最終的には成功しませんでした。データをどのように解釈しても、他のリスクはより一般的で影響力がありました。成熟したappsecプログラム・セキュリティコンサルタント・ツールベンダーに向けて取り組んでいる企業は、提供するサービスの対象範囲を拡大したいと考えています。次の3つの問題は、特定して修正する価値があります。

 

コード品質の問題

コード品質の問題には、既知のセキュリティ上の欠陥またはパターン・複数の目的での変数の再利用・デバッグ出力での機密情報の公開・オフバイワンエラー・チェック時間/使用時間(TOCTOU)の競合状態・署名されていないまたは署名された変換エラーが含まれます。このセクションの特徴は、通常、厳格なコンパイラフラグ・静的コード分析ツール・リンターIDEプラグインで識別できることです。現代の言語は設計により、Rustのメモリ所有権と借用の概念・Rustのスレッド設計・Goの厳密な型指定と境界チェックといった問題の多くを排除しました。

参考文献

 

サービス拒否

十分なリソースがあれば、サービス拒否は常に可能です。ただし、設計とコーディングの慣行は、サービス拒否の規模に大きく影響します。リンクを知っている人なら誰でも大きなファイルにアクセスできると仮定します。そうしないと、すべてのページで計算コストの高いトランザクションが発生します。その場合、サービス拒否は実行に必要な労力が少なくてすみます。

参考文献

 

メモリ管理エラー

Webアプリケーションは、Java・.NET・node.js(JavaScriptまたはTypeScript)などのマネージドメモリ言語で記述される傾向があります。ただし、これらの言語は、バッファオーバーフロー・ヒープオーバーフロー・解放後の使用・整数オーバーフローといったメモリ管理の問題があるシステム言語で記述されています。Webアプリケーション言語が名目上メモリが『安全』であるという理由だけで、基盤がそうではないことを証明する多くのサンドボックスエスケープが何年にもわたってありました。

参考文献

 

まとめ

OWASP Top 10はWebアプリケーションのセキュリティ分野において、最新のサイバー攻撃のトレンドを認識するためにことのほか役に立ちます。Webアプリ開発者やセキュリティ担当者であれば新しく告げ知らされた攻撃のトレンドを知っていると、その攻撃と類似する他の攻撃にも最前線に立って対応できます。また、公共のために業務する各機関においてもWebセキュリティにおける重要なガイドラインや指標として認識されており、取り上げられている項目に対応できていない場合、セキュアな開発を実施する最善の方法を取り入れていないとジャッジが下される可能性があります。日本国内においては、『IPA(独立行政法人情報処理推進機構)』や『JPCERTコーディネーションセンター』がガイドラインとして取り入れています。