界: Code Quality

コードの質が低いと、予測できない動作につながります。ユーザーの視点には、それがしばしば使い勝手の悪さとなって現れます。攻撃者にとっては、予期せぬ方法でシステムにストレスを与える機会となります。

Code Correctness: Stack Exhaustion

Abstract
データ構造に循環リンクを作成できるプログラムは、そのデータ構造が再帰的に処理されるときにスタックの枯渇を引き起こす可能性があります。
Explanation
再帰の使用は、リンクされたデータ構造を作成および管理するために不可欠な要素です。また、データに循環リンクが組み込まれている場合、再帰によって処理が無期限に行われるリスクがあります。これにより、スタックが使い果たされ、プログラムがクラッシュします。

例 1: 次のコード スニペットは、Apache Log4j2 を使用したこの脆弱性を示しています。

Marker child = MarkerManager.getMarker("child");
Marker parent = MarkerManager.getMarker("parent");

child.addParents(parent);
parent.addParents(child);

String toInfinity = child.toString();


再帰処理メソッドが含まれる toString() を子が呼び出すと、スタック オーバーフロー例外 (スタック枯渇) がトリガーされます。この例外は、子と親の間の循環リンクが原因で発生します。
References
[1] DOS-1: Beware of activities that may use disproportionate resources Oracle
[2] Standards Mapping - CIS Azure Kubernetes Service Benchmark 1
[3] Standards Mapping - CIS Amazon Elastic Kubernetes Service Benchmark 2
[4] Standards Mapping - CIS Amazon Web Services Foundations Benchmark 2
[5] Standards Mapping - CIS Google Kubernetes Engine Benchmark normal
[6] Standards Mapping - Common Weakness Enumeration CWE ID 674
[7] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective C.3.3 - Web Software Attack Mitigation
desc.controlflow.java.code_correctness_stack_exhaustion