こんにちは。株式会社エーアイセキュリティラボの吉開です。
セキュリティエンジニアとしてこの度のAeyeScanの大型アップデートの対応を担当したので、内容をご紹介します。
具体的には、APIスキャン機能オプションにOWASP API Security Top 10 2023に対応するためのスキャンルールを追加しました。この機能を使うことにより、従来のWebアプリ診断では検知できなかった Web APIの実装や運用で発生しがちな脆弱性を検知することが可能になります。
OWASP API Security Top 10 2023についても解説していますので、ぜひご覧ください。
Webアプリ診断とWeb API診断の違いとは?
Webアプリ診断は、Webアプリケーションに対して疑似的な攻撃を実施することでSQLインジェクションやクロスサイトスクリプティング(XSS)などの一般的な脆弱性や、最新のWebフレームワークに潜む脆弱性を検査することです。
一方、Web API診断は、Web APIの実装と運用に起因する脆弱性を対象にしています。Web APIは使い方を公開するという性質上、アプリケーションのロジックが外部から推測されやすいというリスクがあります。また、外部から秘匿すべき機微なデータを取り扱うことが多いことから、認証と認可で問題が起きやすく、このようなWeb API固有の脆弱性を考慮した診断が必要です。
AeyeScanのAPIスキャン機能では、APIセキュリティの最新の啓発文書である OWASP API Security Top 10 2023のうち、外部から検出可能な項目に対応しています。
OWASP API Security Top 10とは
OWASP API Security Top 10とは、OWASPがAPIセキュリティについて調査した情報をまとめた文書です。最新版はOWASP API Security Top 10 2023で、2023年6月5日にリリースされています。
OWASPはOpen Web Application Security Projectの略称で、ソフトウェア全般のセキュリティ向上を目的としたオープンコミュニティです。このコミュニティがまとめた文書として代表的なものはアプリケーションセキュリティのリスクを文書化したOWASP Top 10ですが、OWASP API Security Top 10では、Web API開発で気を付けるべき最も一般的でリスクの高い10のセキュリティ問題をカバーしています。
AeyeScanのWeb API診断でできること
AeyeScanのWeb API診断は、APIスキャン機能オプションとして提供しています。今回の大型アップデートにより、OWASP API Security Top 10 2023の下記の項目に対応いたしました。
OWASP API Security Top 10 2023 | AeyeScanでの対応状況 |
---|---|
API1:2023 オブジェクトレベルの認可の不備 | 〇 |
API2:2023 認証の不備 | 〇 |
API3:2023 オブジェクトプロパティレベルの認可の不備 | 〇 |
API4:2023 制限のないリソース消費 | ‐(対象外 ※1) |
API5:2023 機能レベルの認可不備 | 〇 |
API6:2023 機密性の高いビジネスフローへの無制限のアクセス | ‐(対象外 ※2) |
API7:2023 サーバーサイドリクエストフォージェリ | 〇 |
API8:2023 セキュリティの設定ミス | 〇 |
API9:2023 不適切なインベントリ管理 | 〇 |
API10:2023 APIの安全ではない使用 | ‐(対象外 ※3) |
下記のような検査が困難な脆弱性は対象外となります
※1 過度な負荷をかけるスキャンを必要とするため
※2 現時点では自動化が困難なため
※3 外部からの検査が困難なため
API開発で特に注意しておきたい脆弱性
ここからはOWASP API Security Top 10 2023の中から、特にAPI実装と運用の時に発生しがちな脆弱性カテゴリを解説します。
API1:2023 オブジェクトレベルの認可の不備
オブジェクトレベルの認可の不備とは、リクエストの中のオブジェクトIDを変更されることにより、アクセスが許可されていないオブジェクトへのアクセスが可能な状態となる脆弱性です。情報漏洩やデータの改ざんの危険性があります。
対策方法としては、オブジェクト単位で適切に認可処理を実装することが挙げられます。
参考URL: https://owasp.org/API-Security/editions/2023/en/0xa1-broken-object-level-authorization/
API2:2023 認証の不備
認証の不備とは、APIがブルートフォース攻撃への耐性がないこと、弱いパスワードの設定を許容していること、またはJWT認証の署名検証の不備などの認証メカニズムに関する脆弱性です。対策方法としては、下記のような方法が挙げられます。
- 独自の認証方式を使用しない
- 機密性の高い操作には再認証を求める
- パスワード再設定のエンドポイントにはブルートフォース攻撃を防ぐためのアクセス数制限を行う
- 多要素認証を実装する
参考URL: https://owasp.org/API-Security/editions/2023/en/0xa2-broken-authentication/
API3:2023 オブジェクトプロパティレベルの認可の不備
オブジェクトプロパティレベルの認可の不備は、オブジェクトのプロパティへのアクセス制限を適切に行っていないことにより、攻撃者がオブジェクトの情報を不正に取得または更新できる状態になっている脆弱性です。
このカテゴリは、前バージョンのOWASP API Security Top 10 2019の2つのカテゴリが1つに統合されたものになります。AeyeScanではその2つのカテゴリを個別に検査できます。
API3:2019 データの過剰な公開
データの過剰な公開とは、他ユーザの個人情報などのクライアントに公開すべきでない情報がAPIのレスポンスに含まれている脆弱性です。
対策方法としては、公開するオブジェクトのプロパティごとに公開する必要があるかどうかを確認し、公開すべきでない情報はHTTPレスポンスに含めないことが挙げられます。
API6:2019 一括割り当て
一括割り当てとは、オブジェクト内への書き込みを許可すべきでないプロパティに対して、値を書き込むことができる脆弱性です。リクエストに含まれているオブジェクトを使用して、データベース上のオブジェクトのプロパティを一括で更新していることで発生します。
対策方法としては、リクエストで受け取ったオブジェクトデータの中から必要なプロパティのみを更新するようにすることが挙げられます。
参考URL:
https://owasp.org/API-Security/editions/2023/en/0xa3-broken-object-property-level-authorization/
https://owasp.org/API-Security/editions/2019/en/0xa3-excessive-data-exposure/
https://owasp.org/API-Security/editions/2019/en/0xa6-mass-assignment/
API5:2023 機能レベルの認可不備
機能レベルの認可不備とは、機能の使用を許可すべきでないユーザに対し、機能の実行の認可が適切に実装されていない脆弱性です。対策方法としては、HTTPリクエストに含まれる認証情報に紐づく権限を確認し、権限を持たない機能は処理を行わないことが挙げられます。
参考URL: https://owasp.org/API-Security/editions/2023/en/0xa5-broken-function-level-authorization/
API9:2023 不適切なインベントリ管理
不適切なインベントリ管理とは、古いバージョンのAPIや、staging環境が外部公開されているなど、APIホストが適切に管理されていない状態になっている脆弱性です。対策方法としては、稼働している全てのAPIホストを調査し、APIホストに適切なアクセス制限を施すことが挙げられます。
参考URL: https://owasp.org/API-Security/editions/2023/en/0xa9-improper-inventory-management/
おわりに
AeyeScanはSaaS型のWebアプリケーション脆弱性診断プラットフォームです。かんたんに高精度なWeb診断を実施することができることから、Webアプリ診断の内製化ツールとして多くの企業様にご活用いただいております。
今回ご紹介したAPIスキャン機能を使うことで、Web API診断も内製化が可能です。大型アップデートとしてOWASP API Security Top 10 2023に対応いたしましたが、今後も順次機能を強化してまいりますので、ぜひご期待ください。
AeyeScanの詳細はこちら: https://www.aeyescan.jp
参考文献
OWASP Top 10 API Security Risks – 2023
OWASP API Security Top 10 2023〜OWASP Top 10との違い〜