Reino: Code Quality
Códigos de baixa qualidade levam a comportamentos imprevisíveis. Da perspectiva do usuário, isso normalmente se manifesta como usabilidade ruim. Para um invasor, trata-se de uma oportunidade para atacar o sistema de formas imprevistas.
Code Correctness: Stack Exhaustion
Abstract
Um programa capaz de criar um link circular em uma estrutura de dados pode causar esgotamento da pilha quando a estrutura de dados é processada recursivamente.
Explanation
O uso da recursão é um elemento básico para criar e gerenciar estruturas de dados vinculadas. A recursão também correrá o risco de processar indefinidamente se os dados incorporarem um link circular, que, por sua vez, esgotará a pilha e travará o programa.
Exemplo 1: O trecho de código a seguir demonstra essa vulnerabilidade usando o Apache Log4j2.
Quando o filho chama
Exemplo 1: O trecho de código a seguir demonstra essa vulnerabilidade usando o Apache Log4j2.
Marker child = MarkerManager.getMarker("child");
Marker parent = MarkerManager.getMarker("parent");
child.addParents(parent);
parent.addParents(child);
String toInfinity = child.toString();
Quando o filho chama
toString()
, que inclui um método de processamento recursivo, ele aciona uma exceção de estouro de pilha (exaustão de pilha). Essa exceção ocorre devido ao link circular entre filho e pai.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