> For the complete documentation index, see [llms.txt](https://coky-t.gitbook.io/owasp-asvs-ja/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://coky-t.gitbook.io/owasp-asvs-ja/owasp-apurikshonsekyuriti-40/0x18-v10-malicious.md).

# V10: 悪意あるコード

## 管理目標

コードが以下の上位要件を満たすことを確認します。

* 悪意のある行為はアプリケーションの他の部分に影響を与えないようセキュアかつ適切に処理されます。
* 時限爆弾や他の時間ベースの攻撃を持ちません。
* 悪意のある宛先や認証されていない宛先に "Phone Home" していません。
* バックドア、イースターエッグ、サラミ攻撃、ルートキット、または攻撃者がコントロールできる不正なコードを持ちません。

悪意のあるコードを見つけることは否定命題の証明であり、完全に確認することは不可能です。コードに固有の悪意のあるコードや不要な機能が含まれていないことを確認するために、最善の努力を払うべきです。

## V10.1 コード完全性

悪意のあるコードに対する最善の防御は「信頼するが検証する」です。不正なコードや悪意のあるコードをコードに取り込むことは多くの法的管轄で犯罪行為となります。方針と手続きにより悪意のあるコードに関する制裁措置が明確になるでしょう。

開発リーダーは定期的にコードチェックインを確認すべきです。特に時刻、I/O、ネットワーク機能にアクセスする可能性を確認します。

|      #     | 説明                                                           |  L1 |  L2 |  L3 | CWE |
| :--------: | ------------------------------------------------------------ | :-: | :-: | :-: | :-: |
| **10.1.1** | 時間関数、安全ではないファイル操作、ネットワーク接続など、悪意のあるコードを検出できるコード解析ツールが使用されている。 |     |     |  ✓  | 749 |

## V10.2 悪意あるコード検索

悪意のあるコードは極めてまれであり、検出が困難です。手動で詳細にコードレビューすることで論理爆弾を探す手助けができますが、非常に経験豊富なコードレビュー担当者でさえ、悪意のあるコードが存在することを知っていても見つけるのに苦労します。

このセクションに従うことは、サードパーティライブラリを含む、ソースコードへの完全なアクセスなしでは不可能です。

|      #     | 説明                                                                                                                                                                                |  L1 |  L2 |  L3 | CWE |
| :--------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-: | :-: | :-: | :-: |
| **10.2.1** | アプリケーションソースコードおよびサードパーティライブラリに不正な phone home やデータ収集機能が含まれていない。そのような機能が存在する場合、データを収集する前に、その機能操作に対するユーザの許可を得る。                                                                      |     |  ✓  |  ✓  | 359 |
| **10.2.2** | アプリケーションが連絡先、カメラ、マイク、位置情報などのプライバシー関連機能やセンサーに対する不要な許可や過剰な許可を要求していない。                                                                                                               |     |  ✓  |  ✓  | 272 |
| **10.2.3** | アプリケーションソースコードおよびサードパーティライブラリに、ハードコードされたアカウントや鍵、追加の文書化されていないアカウントや鍵、文書化されていないバイナリ BLOB、ルートキット、デバッグ防御、セキュアではないデバッグ機能、その他の発見された場合に悪意を持って使用される可能性のある古い機能、セキュアではない機能、隠し機能などのバックドアがない。 |     |     |  ✓  | 507 |
| **10.2.4** | 日付と時刻に関連する関数を検索して、アプリケーションソースおよびサードパーティライブラリに時限爆弾が含まれていない。                                                                                                                        |     |     |  ✓  | 511 |
| **10.2.5** | アプリケーションソースコードおよびサードパーティライブラリに、サラミ攻撃、ロジックバイパス、論理爆弾などの悪意のあるコードが含まれていない。                                                                                                            |     |     |  ✓  | 511 |
| **10.2.6** | アプリケーションソースコードおよびサードパーティライブラリにイースターエッグやその他の望ましくない機能が含まれていない。                                                                                                                      |     |     |  ✓  | 507 |

## V10.3 アプリケーションの完全性

アプリケーションがデプロイされた後も、悪意のあるコードが挿入される可能性があります。アプリケーションは、信頼されていないソースから署名されていないコードの実行やサブドメインのテイクオーバーなどの一般的な攻撃から自分自身を保護する必要があります。

このセクションに従うことは戦略的かつ継続的であることが望まれます。

|      #     | 説明                                                                                                                                                                                                                                                                          |  L1 |  L2 |  L3 | CWE |
| :--------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-: | :-: | :-: | :-: |
| **10.3.1** | アプリケーションにクライアントまたはサーバの自動更新機能がある場合、更新はセキュアなチャネル経由で取得し、デジタル署名されている。更新コードは更新をインストールまたは実行する前に、その更新のデジタル署名を確認する必要がある。                                                                                                                                                            |  ✓  |  ✓  |  ✓  |  16 |
| **10.3.2** | アプリケーションがコード署名やサブリソース完全性などの完全性保護を採用している。アプリケーションは、信頼できないソースやインターネットからのインクルード、モジュール、プラグイン、コード、ライブラリをロードするなど、信頼できないソースからのロードや実行をしてはいけない。                                                                                                                                      |  ✓  |  ✓  |  ✓  | 353 |
| **10.3.3** | アプリケーションが期限切れドメイン名、期限切れ DNS ポインタや CNAME、パブリックソースコードリポジトリの期限切れプロジェクト、一時的なクラウド API、サーバレス機能、ストレージバケット (*自動生成バケットID*.cloud.example.com) などの DNS エントリや DNS サブドメインに依存している場合、そのアプリケーションがサブドメインテイクオーバーから保護されている。保護にはアプリケーションにより使用される DNS 名が有効期限や変更について定期的にチェックされるようにすることも含めることができる。 |  ✓  |  ✓  |  ✓  | 350 |

## 参考情報

* [Hostile Subdomain Takeover, Detectify Labs](https://labs.detectify.com/2014/10/21/hostile-subdomain-takeover-using-herokugithubdesk-more/)
* [Hijacking of abandoned subdomains part 2, Detectify Labs](https://labs.detectify.com/2014/12/08/hijacking-of-abandoned-subdomains-part-2/)
