メインコンテンツまでスキップ

8. セキュリティに関する考慮事項

ネットワークに面したアプリケーションは、受信データの処理ロジックに脆弱性を示す可能性があります。複雑なパーサーは、そのような脆弱性の可能性のある源としてよく知られています。例えば、ノードをリモートでクラッシュさせたり、さらにはリモートで任意のコードを実行したりする能力などです。CBOR は、パーサーの複雑さを減らし、可能な場合はエンコード可能な値の全範囲に意味を与えることによって、そのような脆弱性を持ち込む機会を狭めようとしています。

リソース枯渇攻撃は、デコーダーを誘導して非常に大きなデータ項目 (文字列、配列、マップ) を割り当てさせたり、深くネストされた項目を設定することでスタックの深さを枯渇させたりしようとする可能性があります。デコーダーは、これらの攻撃を緩和するために適切なリソース管理を備えている必要があります。(非常に大きなサイズが指定された項目も、整数オーバーフローの脆弱性を悪用しようとする可能性があります。)

CBOR データ項目がゲートキーパー関数によって検査され、その後別のアプリケーションによって使用されるアプリケーションでは、そのデータ項目の複数の解釈が可能な場合に脆弱性を示す可能性があります。例えば、攻撃者はマップ内の重複キーと数値の精度問題を利用して、ゲートキーパーの判断を 2 番目のアプリケーションが使用する解釈とは異なる解釈に基づかせる可能性があります。セキュリティコンテキストで使用されるプロトコルは、これらの複数の解釈が確実に 1 つに還元されるように定義されるべきです。これを容易にするため、そのようなコンテキストで使用されるエンコーダーおよびデコーダーの実装は、少なくとも 1 つの strict モードの動作を提供するべきです (セクション 3.10)。