Automated static analysis, commonly referred to as Static Application Security Testing (SAST), can find some instances of this weakness by analyzing source code (or binary/compiled code) without having to execute it. Typically, this is done by building a model of data flow and control flow, then searching for potentially-vulnerable patterns that connect "sources" (origins of input) with "sinks" (destinations where the data interacts with external components, a lower layer such as the OS, etc.)
Public Static Field Not Marked Final
This vulnerability occurs when a class exposes a public static field without declaring it as final, allowing unintended modification from anywhere in the application.
What is CWE-500?
Real-world CVEs caused by CWE-500
Ainda não há referências CVE públicas associadas a este CWE no catálogo da MITRE.
Trajeto do atacante passo a passo
- 1
Identificar um caminho de código que trata input não confiável sem validação.
- 2
Criar um payload que explora o comportamento inseguro — injeção, traversal, overflow ou abuso de lógica.
- 3
Entregar o payload através de um pedido normal e observar a reação da aplicação.
- 4
Iterar até que a resposta exponha dados, execute código do atacante ou escale privilégios.
Vulnerable C++
The following examples use of a public static String variable to contain the name of a property/configuration file for the application.
class SomeAppClass {
public:
static string appPropertiesConfigFile = "app/properties.config";
...
} Secure C++
Having a public static variable that is not marked final (constant) may allow the variable to the altered in a way not intended by the application. In this example the String variable can be modified to indicate a different on nonexistent properties file which could cause the application to crash or caused unexpected behavior.
class SomeAppClass {
public:
static const string appPropertiesConfigFile = "app/properties.config";
...
} How to prevent CWE-500
- Architecture and Design Clearly identify the scope for all critical data elements, including whether they should be regarded as static.
- Implementation Make any static fields private and constant. A constant field is denoted by the keyword 'const' in C/C++ and ' final' in Java
How to detect CWE-500
O Plexicus deteta automaticamente o CWE-500 e abre um PR de correção em menos de 60 segundos.
O Codex Remedium analisa cada commit, identifica esta fraqueza exata e entrega um pull request pronto para revisão com o patch. Sem tickets. Sem transferências.
Frequently asked questions
O que é o CWE-500?
This vulnerability occurs when a class exposes a public static field without declaring it as final, allowing unintended modification from anywhere in the application.
Qual a gravidade do CWE-500?
A MITRE classifica a probabilidade de exploração como Alta — esta fraqueza é ativamente explorada em campo e deve ser priorizada para remediação.
Que linguagens ou plataformas são afetadas pelo CWE-500?
MITRE lists the following affected platforms: C++, Java.
Como posso prevenir o CWE-500?
Clearly identify the scope for all critical data elements, including whether they should be regarded as static. Make any static fields private and constant. A constant field is denoted by the keyword 'const' in C/C++ and ' final' in Java
Como é que o Plexicus deteta e corrige o CWE-500?
O motor SAST do Plexicus correlaciona a assinatura de fluxo de dados do CWE-500 em cada commit. Quando é encontrada uma correspondência, o nosso agente Codex Remedium abre um PR de correção com o código corrigido, testes e um resumo de uma linha para o revisor.
Onde posso saber mais sobre o CWE-500?
A MITRE publica a definição canónica em https://cwe.mitre.org/data/definitions/500.html. Pode também consultar a documentação da OWASP e do NIST para orientações adjacentes.
Weaknesses related to CWE-500
Pare de pagar por desenvolvedor.
Comece a fechar o ciclo.
O Plexicus é o ASPM nativo de IA que verifica, filtra, corrige, pentesta e explica — de forma autónoma. Programadores ilimitados, repos ilimitados, ações de IA de utilização justa. Nível gratuito real, €269/mo anual quando estiver pronto.