2021年版 OWASP Top 10 概要と2017との比較
OWASP Top 10 2021が2021年9月24日に公開されました。
2017年版から3つの新しいカテゴリーも追加され、4番目には安全でない設計(Insecure Design)といった設計・アーキテクチャに関するカテゴリーも追加されています。
今回は、OWASP Top 10 2021の概要と2017年版との変更点を解説します。
(正式な日本語翻訳版が公開されていないため、カテゴリー名が正式な日本語訳版とは異なる場合があります。)
OWASP Top 10 2021 概要
以下のカテゴリーがOWASP Top 10 2021となりました。
OWASP Top 10 2021
A01:2021 - アクセス制御の不備
URL、内部アプリケーションの状態、HTMLの変更やCORSの設定ミスによるアクセス制御のバイパス、アクセス制御の不備のあるAPIへのアクセスといったものがこのカテゴリーに含まれます。
それ以外にも、パストラバーサル(CWE-35)や機微情報のソースコード埋め込み(CWE-540)なども関連するCWEとして扱われています
A02:2021 - 不適切な暗号化
平文での通信、デフォルトで使用される弱い暗号化アルゴリズム、弱い暗号化キーの利用、証明書の有効確認の欠如などがこのカテゴリーに含まれます。
前回は「機微な情報の露出」というカテゴリーでしたが、「不適切な暗号化」と名称を変更し、原因にフォーカスを当てるようになりました。
A03:2021 - インジェクション
SQLインジェクション、OSコマンドインジェクション、HTTPヘッダーインジェクション、加えてクロスサイトスクリプティング(XSS)など幅広いものがこのカテゴリーに含まれます。
ヘッダーやURL、JSONなどのすべてのパラメーターへの自動テストを強く推奨することに加えて、ソースコードレビューがこのカテゴリーの脆弱性を発見するための最良な方法だとされています。
A04:2021 - 安全でない設計
「効果のない・欠落した制御設計」による幅広いものがこのカテゴリーに該当します。
ただし、「安全でない設計」が他のすべてのカテゴリーの原因となる訳ではなく、安全でない設計と安全でない実装に違いがあることも注意が必要です。
例としては、機密情報を含むエラーメッセージの生成や保護が不十分なクレデンシャルなどがあります。
対策はセキュリティの専門家を交えた開発ライフサイクルを確立し、セキュリティの評価、脅威モデリングをする、などがあげられています。
A05:2021 - 不適切なセキュリティ設定
不要な機能の有効化、サーバーやフレームワークの不適切なセキュリティ設定、セキュリティヘッダーの未設定などが含まれています。
攻撃シナリオとして、デフォルト設定が残ったままによるデフォルトアカウントでのログインやアクセス制御されていない機密情報などが例示されています。
A06:2021 - 脆弱で古くなったコンポーネント
使用しているクライアント・サーバー側のコンポーネントのバージョンがわからない、サポートされていない、古くなっている場合などがこのカテゴリーに該当します。
防ぐ方法として、利用しているコンポーネントのバージョンとその依存関係を継続的に把握するといった適切なパッチ管理プロセスを実施することがあります。
A07:2021 - 不適切な識別と認証
ブルートフォース攻撃への未対策、脆弱なパスワードの許可、弱いパスワードを忘れた場合のプロセス、セッションの無効化の欠如などがあります。
A08:2021 - ソフトウェアとデータの整合の不備
このカテゴリーには、安全でないデシリアライゼーションや信頼できないソースからのデータを検証なしに利用することが含まれています。
Codecov社のセキュリティインシデントによる影響であったように、安全でないCI/CDパイプラインによる不正アクセスなどの可能性があることが指摘されています。
A09:2021 - セキュリティログとモニタリングの不備
ログイン、ログインの失敗、警告やエラーメッセージなど必要な情報がロギングされていない、ログ情報がローカルにのみ保存されている、監視が適切に行われていない、などがこのカテゴリーに含まれます。
このカテゴリーはテストによる確認が難しいため、多くの場合、インタビューやペネトレーションテスト時に攻撃を検知できたか、などで確認されます。
A10:2021 - サーバーサイドリクエストフォージェリ (SSRF)
サーバーサイドリクエストフォージェリ (SSRF)はユーザーから入力されたURLを検証せずにリクエストを送る場合に発生します。
クラウドサービスやアーキテクチャの複雑さが高くなっているため、重要度が高まってきています。
2017との変更点
2017と2021での主な変更点は以下のようになっています。
OWASP Top 10 2017と2021の比較 (OWASP Top10 2021の表より日本語翻訳)
「アクセス制御の不備」が5位から1位に上昇しています。
アプリケーションの94%で何らかのアクセス制御のテストが実施されています。
「アクセス制御の不備」には34のCWEが割り当てられ、他のどのカテゴリよりも多く発生しています。
「アクセス制御の不備」による影響は、プライバシーや規制へもあり、大きな情報漏洩は大きなコストに繋がります。
「インジェクション」が1位から3位になっています。
また、2017年に7位であったクロスサイトスクリプティング (XSS)が2021年では「インジェクション」に含まれるようになりました。
「インジェクション」は2010より不動の1位であったのですが、XSSを含めても3位と順位を下げています。
対策として、より良いフレームワークとセキュアなpaved road (舗装された道路)を採用することで重要であり、またこの影響で順位が下がってきていると思われます。
「インジェクション」には33のCWEが割り当てられ、「アクセス制御の不備」に次いで2番目に多く発生しています。
新しいカテゴリーの「安全でない設計」が4位になっています。
シフトレフトを進めていくためには、Secure by Designの原則に不可欠なコーディング前の活動が重要であるため、OWASP Top 10のカテゴリーとしても含まれるようになりました。
「安全でない設計」の追加は、今回の変更の中でも最も大きなものだと感じていますし、OWASP 20th Anniversaryのプレゼンテーションの中でも最も物議を醸すものだと発言しています。
しかし、収集したデータ分析による評価でも十分に重要性が示され、4位となりました。
セキュアな開発ライフサイクルの構築、脅威モデリング、より早い段階で開発チームとセキュリティチームを統合することなどが重要です。
加えて、他のカテゴリーと同様にセキュアなフレームワークを採用し、開発チームと共にpaved roadを作成することも大切だとされています。
「脆弱で古くなったコンポーネント」が9位から6位に上昇しています。
業界調査の結果では2位となっており、収集したデータ分析による評価でもTop10に含めるのに十分なデータがあり、ランクを上げています。
「脆弱で古くなったコンポーネント」の利用は、規模が大きく・コストのかかるセキュリティインシデントの根本原因になっています。
サプライチェーンセキュリティという観点でも重要なカテゴリーになっています。
「不適切な識別と認証」が2位から7位になっています。
Top10に含めるべきものではありますが、標準的なフレームワークの利用によって影響が緩和され、「インジェクション」と同様に順位を下げているようです。
新しいカテゴリーの「ソフトウェアとデータの整合の不備」が8位になっています。
2017年に8位であった「安全でないデシリアライゼーション」もこのカテゴリーの一部となっています。
新しいカテゴリーの「サーバーサイドリクエストフォージェリ (SSRF)」が10位になっています。
業界調査では1位となっており、現時点の収集したデータによる重要性は示されていませんが、専門家がこのカテゴリが重要であると指摘しています。
その他、前回、「機微な情報の露出」と呼ばれていたものが名称を変更し、「不適切な暗号化」は3位から2位へ、「不適切なセキュリティ設定」は前回4位の「XML 外部エンティティ参照 (XXE)」と統合され、6位から5位へ上昇しています。
「セキュリティログとモニタリングの不備」も10位から9位に上昇しています。
さいごに
今回は2021年版のOWASP Top 10の概要と2017との比較を紹介しました。
フレームワークを利用することなどによって、「インジェクション」や「不適切な識別と認証」は影響が弱まり、順位を下げる形となりました。
一方、「アクセス制御の不備」、「脆弱で古くなったコンポーネント」が前回より大きく順位を上げていることから、近年より重要度を増しているものも今回のTop 10からは感じとることができます。
Next Step として、Top 10に含まれなかった「コード品質の問題」「サービス運用妨害 (DoS)」「メモリ管理エラー」があげられていますのでこちらも合わせて確認してみると良いと思います。
OWASP Top 10をセキュリティのチェックとして利用している場合には、今回のアップデートを確認し、追加で行う必要があるものを検討してみることをおすすめします。
yamoryは、今回新たに6位となった「脆弱で古くなったコンポーネント」の対策を行うことができるサービスです。
利用しているアプリケーションライブラリの依存関係を含むソフトウェアの一覧を取得し、その中に含まれる脆弱性の把握・管理を行うことで、パッチ管理プロセスの実施をサポートすることができます。
アプリケーションライブラリの脆弱性だけでなく、GPL、MITライセンスなどのライセンス情報の把握も行うことができます。
また、これまではアプリケーションライブラリのみに対応していましたが、サーバのミドルウェア・OSのソフトウェア・脆弱性管理も行うことができるようになりました。
無料でトライアルもできますので、ぜひ一度お試しください。
yamoryではエンジニア・セキュリティエンジニアを募集しております。こちらより応募お待ちしております。