# S8. サービス拒否 (Denial of Service (DoS))

## 管理目標

プラクティスとメカニズムを確立して、コントラクトの機能とか要請を妨げる可能性のあるサービス拒否 (DoS) 攻撃を防ぎます。

## S8.1 ガス制限 (Gas Limits)

### 管理目標

コントラクト設計と機能実装がガス使用に効率的であり、out-of-gas エラーや関連する脆弱性に関連するリスクを軽減することを確認します。

### S8.1.A 効率的なループと関数の設計 (Efficient Loop and Function Design)

| 参照コード   | 要件                                                                  | L1 | L2 | L3 | SWE |
| ------- | ------------------------------------------------------------------- | -- | -- | -- | --- |
| S8.1.A1 | 重要な機能のガス消費を慎重に管理することで、コントラクトが不十分なガスのグリーフィング攻撃から保護されていることを確認します。     |    | ✓  | ✓  |     |
| S8.1.A2 | RocketDepositPool コントラクトのようなシステムが burn() のような関数の失敗を適切に処理することを確認します。 |    | ✓  | ✓  |     |
| S8.1.A3 | 関数とループのガス使用が効率的であり、out-of-gas エラーを回避することを検証します。                     |    | ✓  | ✓  |     |
| S8.1.A4 | ブロックガス制限によるサービス拒否攻撃を防ぐメカニズムを実装して、トランザクションや操作がガス制限の制約を超えないことを確保します。  |    | ✓  | ✓  |     |

### S8.1.B フォールバックメカニズム (Fallback Mechanisms)

| 参照コード   | 要件                                                       | L1 | L2 | L3 | SWE |
| ------- | -------------------------------------------------------- | -- | -- | -- | --- |
| S8.1.B1 | try/catch ブロックには十分なガスが提供され、エラー時の失敗や予期しない動作を回避することを確認します。 |    | ✓  | ✓  |     |

## S8.2 資源枯渇に対する耐性 (Resilience Against Resource Exhaustion)

### 管理目標

戦略を実装して、DoS シナリオにつながる可能性のあるリソース枯渇攻撃から保護します。

### S8.2.A レート制限 (Rate Limiting)

| 参照コード   | 要件                                                                                                       | L1 | L2 | L3 | SWE |
| ------- | -------------------------------------------------------------------------------------------------------- | -- | -- | -- | --- |
| S8.2.A1 | サービス拒否 (DoS) 攻撃につながる可能性のあるブロッキングメカニズムの使用を避けます。                                                           |    | ✓  | ✓  |     |
| S8.2.A2 | 過剰なデータクエリを効率的に処理することで、supportsERC165InterfaceUnchecked() のような関数における潜在的な DoS から保護します。                     |    | ✓  | ✓  |     |
| S8.2.A3 | 特に条件が満たされないシナリオで、アサーションがサービス拒否や予期しないコントラクトの差し戻しにつながらないことを確認します。                                          |    | ✓  | ✓  |     |
| S8.2.A4 | 外部関数呼び出しからの戻り値がチェックされ、予期しない動作につながる可能性がある、チェックされていない戻り値に関連する問題を防いでいることを検証します。                             |    | ✓  | ✓  |     |
| S8.2.A5 | 起こりうるすべてのエラー状態を適切に処理することで、コントラクト関数が予期しない差し戻しによるサービス拒否から保護されていることを確認します。                                  |    | ✓  | ✓  |     |
| S8.2.A6 | ERC165Checker.sol の supportsERC165InterfaceUnchecked() のような関数が大きなデータクエリを効率的に処理して、過剰なリソース消費を回避することを確認します。 |    | ✓  | ✓  |     |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://coky-t.gitbook.io/owasp-scsvs-ja/owasp-sumtokontorakutosekyuriti-001/0x17-s8-denial-of-service-dos.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
