Reino: Code Quality
Una mala calidad del código lleva a un comportamiento no predecible. Desde la perspectiva de un usuario, muchas veces también supone una usabilidad limitada. Pero para un atacante es una oportunidad para atacar al sistema de formas insospechadas.
Code Correctness: Stack Exhaustion
Abstract
Un programa capaz de crear un enlace circular en una estructura de datos puede provocar el agotamiento de la pila cuando la estructura de datos se procesa de forma recursiva.
Explanation
El uso de la recursividad es un elemento básico para crear y administrar estructuras de datos vinculados. La recursividad también corre el riesgo de procesarse indefinidamente si los datos incorporan un enlace circular, que a su vez agotará la pila y bloqueará el programa.
Ejemplo 1: El siguiente fragmento de código demuestra esta vulnerabilidad con Apache Log4j2.
Cuando el elemento secundario llama a
Ejemplo 1: El siguiente fragmento de código demuestra esta vulnerabilidad con Apache Log4j2.
Marker child = MarkerManager.getMarker("child");
Marker parent = MarkerManager.getMarker("parent");
child.addParents(parent);
parent.addParents(child);
String toInfinity = child.toString();
Cuando el elemento secundario llama a
toString()
, que incluye un método de procesamiento recursivo, desencadena una excepción de desbordamiento de pila (agotamiento de pila). Esta excepción se produce debido al enlace circular entre elemento secundario y elemento principal.References
[1] DOS-1: Beware of activities that may use disproportionate resources Oracle
[2] Standards Mapping - Common Weakness Enumeration CWE ID 674
[3] 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