OWASP Top10について調べてみた
初めに
アプリケーションの脆弱性について調べることがあり、その中でOWASPとOWASP Top10について触れる機会が度々ありました。大体どういうものかというのは知っていたのですが、OWASPという団体についてや、アプリケーションの脆弱性の傾向についてはそれほど把握していませんでした。
今回ブログのネタを探すにあたってちょうどいいものがないかなと探していたところで思いついたので、これを機に調べてみました。
OWASPについて
OWASP(Open Web Application Security Project)は、ウェブアプリケーションのセキュリティに焦点を当てた国際的な非営利団体です。OWASPは、ウェブアプリケーションのセキュリティに関する情報やツールの提供、教育と啓発活動を行い、安全なウェブアプリケーションの開発と運用を促進しています。
世界中に290以上の支部が存在し、日本にも「OWASP Japan」が存在します。
OWASP Top10について
OWASP Top 10は、OWASPが数年に一度くらいのペースで更新するウェブアプリケーションセキュリティのトップ10のリストです。このリストは、ウェブアプリケーションのセキュリティ上のリスクと脅威に焦点を当てており、開発者やセキュリティ専門家にとって重要なガイドとなっています。
OWASP Top10
現時点で最新のものは 2021年版が最新となります。
2021年版のTop10は下記になります。
- 「アクセス制御の不備」
- 「暗号化の失敗」
- 「インジェクション」
- 「安全が確認されない不安な設計」
- 「セキュリティの設定のミス」
- 「脆弱で古くなったコンポーネント」
- 「識別と認証の失敗 」
- 「ソフトウェアとデータの整合性の不具合」
- 「セキュリティログとモニタリングの失敗」
- 「サーバーサイドリクエストフォージェリ(SSRF)」
説明と対策
以下にOWASP Top 10のリストとそれぞれの脅威の内容と対策について簡単に説明します。
1. 「アクセス制御の不備」
- 内容:適切なアクセス制御が行われず、権限のないユーザーがシステムにアクセスできる脆弱性。
- 対策:アクセス制御の実施や適切な権限の付与を行う。
2. 「暗号化の失敗」
- 内容:データの暗号化やアクセス制御の不備により、センシティブな情報が漏洩する脆弱性。
- 対策:データの暗号化やアクセス制御の実施、セキュアなデータベースの使用を検討する。
3. 「インジェクション」
- 内容:外部からの不正なデータがアプリケーションに注入されることによる脆弱性。
- 対策:入力値のバリデーションやエスケープ処理を行い、入力データを信頼できる形に変換する。また、プレースホルダーやパラメータ化クエリの使用を検討する。
4. 「安全が確認されない不安な設計」
- 内容:エラーメッセージからの情報漏洩、保護されてない認証情報の保存など、設計上にある欠陥による脆弱性。
- 対策:開発工程においてセキュリティ対策やテストを通常より前倒しにして実施する ”シフトレフト” 開発手法をとり、また、常に脅威を評価し、既知の攻撃方法を防ぐためにコードを堅牢に設計し、テストする文化と方法論を確立する。
5. 「セキュリティ設定のミス」
- 内容:デフォルトのセキュリティ設定や不適切な設定により、セキュリティが低下する脆弱性。
- 対策:セキュリティ設定の変更や必要なセキュリティ機能の有効化を行う。
6. 「脆弱で古くなったコンポーネント」
- 内容:メンテナンスされていない、ライブラリ、フレームワークなどのコンポーネントの使用。既存の脆弱性が含まれるコンポートの使用により脅威にさらされる脆弱性。
- 対策:未使用の依存関係、不要な機能、コンポーネントを取り除き最小の状態にする。ソフトウェア構成分析ツールなどを使用して、使用するコンポーネントに関する脆弱性の確認を定期的に行う。
7. 「識別と認証の失敗 」
- 内容:脆弱な認証メカニズムの使用やパスワードの不適切な管理による脆弱性。
- 対策:強力な認証メカニズムの実装、パスワードのハッシュ化やマルチファクタ認証の利用を検討する。
8. 「ソフトウェアとデータの整合性の不具合」
- 内容:アプリケーションが信頼されていないソースに由来するプラグインやライブラリ、モジュール、CDNs に依存している場合。 権限のないアクセスや悪意のあるコード、システムののっとりの可能性がある安全でないCI/CDパイプライン等。
- 対策:コードサインあるいは類似のメカニズムを用いて、ソフトウェアやデータが意図されたソースから取得されたものであることを検証する。プルリクエストなどコードや設定の変更に対するレビュープロセスを確立する。
9. 「セキュリティとモニタリングの失敗」
- 内容: ロギングや検知、モニタリング、適時の対応が十分に行われなく、アクティブな違反の検出、侵害の検知ができていないという状態。
- 対策:ログイン、アクセス制御の失敗、設定の変更などの入力、変更の記録をログに残す。ログの改ざんや削除の防止。異常なログが記録されていないかログのモニタリングとアラートの確立。
10. 「サーバサイドリクエストフォージェリ(SSRF)」
- 内容:アプリケーション内でサーバサイドのリクエストを偽装し、外部リソースへのアクセスがされる状態。攻撃者がリクエスト先のURLを指定できる場合、重要な内部リソースへのアクセスやネットワークスキャン、他のサービスへの攻撃などが行われる脆弱性。
- 対策:入力データのサニタイズ、ホワイトリストの利用、リモートリソースへのネットワークの分離。
これらの脆弱性に対する具体的な対策方法は簡単にですが先述の通りです。詳細な情報や最新の情報については、参考にあるOWASP公式ウェブサイトを参照してください。
まとめ
OWASP Top 10のリストは、ウェブアプリケーションの開発やセキュリティ対策において重要なポイントを押さえるためのガイドです。開発者やセキュリティ専門家は、これらのリスクと脅威に対処するための対策を実施することが必要です。
詳細については、OWASPの公式ウェブサイトを参照してください。
参考
OWASP Top 10:2021
Discussion