# S5. 安全なインタラクションと通信 (Secure Interactions and Communications)

## 管理目標

スマートコントラクトの安全なインタラクションプロトコルを確立し、コントラクト、外部オラクル、クロスチェーン統合間の安全な通信を確保します。これには、コントラクトインタラクションの管理、オラクル統合の保護、クロスチェーンインタラクションの処理、ブリッジのセキュリティの確保を含みます。

## S5.1 コントラクトインタラクション (Contract Interactions)

### 管理目標

コントラクト間のすべてのインタラクションが安全であり、外部呼び出しに関連するリスクを最小限に抑え、信頼できる領域を最小限に維持し、エラーを適切に処理することを確認します。

### S5.1.A 安全なメッセージパッシング (Secure Message Passing)

| 参照コード   | 要件                                                                                                  | L1 | L2 | L3 | SWE |
| ------- | --------------------------------------------------------------------------------------------------- | -- | -- | -- | --- |
| S5.1.A1 | LzApp から継承された関数への呼び出しが推奨されるアプローチ (\_lzSend など) を使用し、lzEndpoint.send への直接呼び出しに関連する脆弱性を避けていることを確認します。 |    | ✓  | ✓  |     |
| S5.1.A2 | 外部コントラクトとやり取りする際、msg.sender が一貫性を維持し、送信者コンテキストの予期しない変更に関連するセキュリティ問題を避けていることを確認します。                  |    | ✓  | ✓  |     |
| S5.1.A3 | 信頼できない外部コントラクト呼び出しを管理し、複数の引き出しや順序外のイベントなどの予期しない結果を防ぎます。                                             |    | ✓  | ✓  |     |
| S5.1.A4 | インタラクションするプールの検証がないと、リスクが生じる可能性があります。インタラクション前にすべてのプールが検証され、潜在的なセキュリティ問題を防いでいることを確認します。             |    | ✓  | ✓  |     |
| S5.1.A5 | 低レベルの .delegatecall() が適切に管理され、実行結果を提供せずに戻り値をブール値に変換することを認識していることを検証します。                            |    | ✓  | ✓  |     |

### S5.1.B 最小限の信頼できる領域 (Minimal Trusted Surface)

| 参照コード   | 要件                                                                                         | L1 | L2 | L3 | SWE |
| ------- | ------------------------------------------------------------------------------------------ | -- | -- | -- | --- |
| S5.1.B1 | スマートコントラクトが、明確に定義されて制限されたインタフェースを通じて他のコントラクトやシステムとやり取りすることのみにより、信頼できる領域を最小限に抑えていることを検証します。 |    | ✓  | ✓  |     |
| S5.1.B2 | スマートコントラクトには、機密性の高い操作を実行する前に、やり取りする当事者の信頼性と真正性を検証するチェックを含むことを確認します。                        |    | ✓  | ✓  |     |
| S5.1.B3 | スマートコントラクトのインタラクションが、セキュリティを損なう可能性がある外部データやコントラクトへの依存を避けるように設計されていることをチェックします。             |    | ✓  | ✓  |     |
| S5.1.B4 | コントラクトが、外部とのインタラクションによる障害や予期しない動作を適切に処理して、障害が連鎖することを避けていることを検証します。                         |    | ✓  | ✓  |     |
| S5.1.B5 | 他のコントラクトとのインタラクションが監視および監査され、異常なアクティビティや認可されていないアクティビティを検出して対処していることを確認します。                |    | ✓  | ✓  |     |

## S5.2 オラクル統合 (Oracle Integrations)

### 管理目標

オラクル統合が、データ完全性を維持し、障害を適切に処理しながら、安全で、信頼でき、改竄防止を備えたデータフィードを提供することを確認します。

### S5.2.A 安全なデータフィード (Secure Data Feeds)

| 参照コード   | 要件                                                                               | L1 | L2 | L3 | SWE |
| ------- | -------------------------------------------------------------------------------- | -- | -- | -- | --- |
| S5.2.A1 | スマートコントラクトが、データの完全性と真正性のチェックを含む、安全で改竄防止を備えたデータフィードを提供するオラクルを使用していることを検証します。      |    | ✓  | ✓  |     |
| S5.2.A2 | スマートコントラクトがオラクルから受け取ったデータを検証し、悪意のあるデータや不正なデータがコントラクトの操作に影響を及ぼすことから防いでいることを確認します。 |    | ✓  | ✓  |     |
| S5.2.A3 | スマートコントラクトが、オラクル障害や信頼できないデータの場合に、フォールバックメカニズムを含むことをチェックします。                      |    | ✓  | ✓  |     |
| S5.2.A4 | オラクルとの統合が、暗号化や安全な通信チャネルなど、データセキュリティのベストプラクティスに従っていることを検証します。                     |    | ✓  | ✓  |     |
| S5.2.A5 | スマートコントラクトのオラクル統合が、複数のソースからのデータにおける潜在的な矛盾や競合を処理できるように設計されていることを確認します。            |    | ✓  | ✓  |     |

### S5.2.B 分散型オラクル (Decentralized Oracles)

| 参照コード   | 要件                                                                                  | L1 | L2 | L3 | SWE |
| ------- | ----------------------------------------------------------------------------------- | -- | -- | -- | --- |
| S5.2.B1 | スマートコントラクトが分散型オラクルを使用して、データの信頼性を高め、単一障害点や操作を防いでいることを検証します。                          |    | ✓  | ✓  |     |
| S5.2.B2 | スマートコントラクトが、分散型オラクルのデータに基づいてアクションを起こす前に、分散型オラクルのコンセンサスまたは多数意見を検証するメカニズムを含むことを確認します。 |    | ✓  | ✓  |     |
| S5.2.B3 | スマートコントラクトが分散型オラクルからのデータの潜在的なレイテンシや遅延を考慮し、運用の信頼性を維持していることをチェックします。                  |    | ✓  | ✓  |     |
| S5.2.B4 | スマートコントラクトが分散型オラクル間の操作や談合を防ぐためのチェックを含むことを検証します。                                     |    | ✓  | ✓  |     |
| S5.2.B5 | 分散型オラクル統合が、マルチオラクル環境におけるセキュリティと信頼性の標準に準拠していることを確認します。                               |    | ✓  | ✓  |     |

## S5.3 クロスチェーンインタラクション (Cross-Chain Interactions)

### 管理目標

クロスチェーンインタラクションにおいて、外部呼び出しとアトミックスワップを安全に処理して、運用の信頼性を維持し、不正を防止することを確認します。

### S5.3.A 外部呼び出しの安全な処理 (Handling External Calls Securely)

| 参照コード   | 要件                                                                                                               | L1 | L2 | L3 | SWE |
| ------- | ---------------------------------------------------------------------------------------------------------------- | -- | -- | -- | --- |
| S5.3.A1 | Chainlink VRF (Verifiable Random Function) のパラメータが徹底的に検証され、fulfillRandomWord 関数が元に戻す代わりに不正な値を返すことを防いでいることを確認します。 |    | ✓  | ✓  |     |
| S5.3.A2 | クロスチェーンメッセージングに堅牢なセキュリティチェックを導入して、正しいパーミッションと意図した機能を確保します。                                                       |    | ✓  | ✓  |     |
| S5.3.A3 | CREATE オペコードを使用して作成されるコントラクトがブロックの再編成を安全に処理して、予期しない消去を防いでいることを検証します。                                             |    | ✓  | ✓  |     |
| S5.3.A4 | 堅牢なクロスチェーンメッセージングセキュリティチェックを確保して、あるチェーンで有効な署名が別のチェーンで悪用される可能性のある、リプレイ攻撃を防いでいる。                                   |    | ✓  | ✓  |     |

### S5.3.B アトミックスワップ (Atomic Swaps)

| 参照コード   | 要件                                                                                 | L1 | L2 | L3 | SWE |
| ------- | ---------------------------------------------------------------------------------- | -- | -- | -- | --- |
| S5.3.B1 | スマートコントラクトが堅牢なメカニズムを備えたアトミックスワップをサポートして、スワップが正常に完了するか、まったく実行されないことを確保していることを検証します。 |    | ✓  | ✓  |     |
| S5.3.B2 | スマートコントラクトには、アトミックスワップ条件を検証して、部分的なスワップや不正なスワップを防ぐためのチェックを含むことを確認します。               |    | ✓  | ✓  |     |
| S5.3.B3 | スマートコントラクトがアトミックスワップの潜在的な障害や紛争を安全かつ公正に処理することをチェックします。                              |    | ✓  | ✓  |     |
| S5.3.B4 | アトミックスワップ機能が徹底的にテストされ、さまざまなシナリオやエッジケースをカバーしていることを検証します。                            |    | ✓  | ✓  |     |

## S5.4 ブリッジ (Bridges)

### 管理目標

不正を防止し、データの完全性を維持するために、堅牢な妥当性確認と検証を導入することで、クロスチェーントランザクションのセキュリティを確保します。

### S5.4.A クロスチェーントランザクションセキュリティ (Cross-Chain Transaction Security)

| 参照コード   | 要件                                                                                    | L1 | L2 | L3 | SWE |
| ------- | ------------------------------------------------------------------------------------- | -- | -- | -- | --- |
| S5.4.A1 | クロスチェーントランザクションのスマートコントラクトには、異なるチェーンにまたがるトランザクションを検証および妥当性確認するための堅牢なメカニズムを含むことを検証します。 |    | ✓  | ✓  |     |
| S5.4.A2 | スマートコントラクトが、適切なセキュリティチェックを実装することで、クロスチェーントランザクションの二重支払いやリプレイ攻撃を防ぐことを確認します。            |    | ✓  | ✓  |     |
| S5.4.A3 | クロスチェーントランザクションコントラクトが、異なるブロックチェーンネットワーク間の通信とデータの完全性を安全に処理することをチェックします。               |    | ✓  | ✓  |     |
| S5.4.A4 | スマートコントラクトには、クロスチェーントランザクションの障害や不整合を処理するためのフォールバックとリカバリメカニズムを含むことを検証します。              |    | ✓  | ✓  |     |


---

# 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/0x14-s5-secure-interactions_and_communications.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.
