# V11: ビジネスロジック

## 管理目標

検証対象のアプリケーションが以下の上位要件を満たすことを確認します。

* ビジネスロジックフローはシーケンシャルであり、順番に処理され、迂回できません。
* ビジネスロジックには継続的な小額の資金転送や一度に百万の友人の追加などの自動攻撃を検出および防御するための制限を含んでいます。
* 高価値のビジネスロジックフローでは悪用ケースや悪意のある人物を考慮し、なりすまし、改竄、情報漏洩、権限昇格の攻撃に対する保護を有しています。

## V11.1 ビジネスロジックセキュリティ

ビジネスロジックセキュリティはすべてのアプリケーションにはそれぞれ個性があるため、一つのチェックリストをすべてに適用することはできません。ビジネスロジックセキュリティは外部からの脅威に対して保護するように設計されている必要があります。Web アプリケーションファイアウォールやセキュア通信を使用して追加することはできません。OWASP Cornucopia や同様のツールを使用するなどして、デザインスプリントの中で脅威モデリングを使用することをお勧めします。

|      #     | 説明                                                                                                                                                                  |  L1 |  L2 |  L3 | CWE |
| :--------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-: | :-: | :-: | :-: |
| **11.1.1** | アプリケーションは同じユーザのビジネスロジックフローをシーケンシャルなステップ順序でのみ処理し、ステップをスキップしない。                                                                                                       |  ✓  |  ✓  |  ✓  | 841 |
| **11.1.2** | アプリケーションはすべてのステップで現実的な人的時間、すなわちトランザクションがあまりに速く送信されていない、で処理されたビジネスロジックフローのみを処理する。                                                                                    |  ✓  |  ✓  |  ✓  | 799 |
| **11.1.3** | アプリケーションはユーザごとに正しく適用される特定のビジネスアクションやトランザクションに対して適切な制限がある。                                                                                                           |  ✓  |  ✓  |  ✓  | 770 |
| **11.1.4** | アプリケーションは大量のデータ流出、ビジネスロジックリクエスト、ファイルアップロード、サービス拒否攻撃などの過度の呼び出しから防御するための自動化防止コントロールがある。                                                                               |  ✓  |  ✓  |  ✓  | 770 |
| **11.1.5** | アプリケーションは、脅威モデリングや同様の方法論を用いて特定された、起こりうるビジネスリスクや脅威から保護するためにビジネスロジック制限やバリデーションがある。                                                                                    |  ✓  |  ✓  |  ✓  | 841 |
| **11.1.6** | アプリケーションは機密性の高い操作に対する "Time Of Check to Time Of Use" (TOCTOU) 問題やその他の競合状態を被っていない。                                                                                   |     |  ✓  |  ✓  | 367 |
| **11.1.7** | アプリケーションはビジネスロジックの観点から異常なイベントやアクティビティを監視している。例えば、順序の異なるアクションや通常のユーザが決して行わないアクションを実行しようと試みる。 ([C9](https://owasp.org/www-project-proactive-controls/#div-numbering)) |     |  ✓  |  ✓  | 754 |
| **11.1.8** | アプリケーションは自動化された攻撃や異常なアクティビティが検出されたときに設定可能なアラートを発している。                                                                                                               |     |  ✓  |  ✓  | 390 |

## 参考情報

詳しくは以下の情報を参照してください。

* [OWASP Web Security Testing Guide 4.1: Business Logic Testing](https://owasp.org/www-project-web-security-testing-guide/v41/4-Web_Application_Security_Testing/10-Business_Logic_Testing/README.html)
* [OWASP AppSensor](https://github.com/jtmelton/appsensor) や [OWASP Automated Threats to Web Applications](https://owasp.org/www-project-automated-threats-to-web-applications/) の使用を含め、自動化対策はさまざまな方法で実現できます。
* [OWASP AppSensor](https://github.com/jtmelton/appsensor) は攻撃検出と対応にも役立ちます。
* [OWASP Cornucopia](https://owasp.org/www-project-cornucopia/)
