CWE-482 Variante Rascunho Low likelihood

Comparing instead of Assigning

This vulnerability occurs when a developer accidentally uses a comparison operator (like '==') where an assignment operator (like '=') was intended, creating a logic error instead of setting a value.

Definição

What is CWE-482?

This vulnerability occurs when a developer accidentally uses a comparison operator (like '==') where an assignment operator (like '=') was intended, creating a logic error instead of setting a value.
This common coding mistake happens because assignment and comparison operators look very similar in many programming languages. For example, using `if (x = 5)` instead of `if (x == 5)` assigns the value 5 to `x` and then evaluates the assignment's result as the condition, which is often always true, breaking the intended program logic. To prevent this, developers should adopt defensive coding habits like placing constants on the left side in comparisons (e.g., `if (5 == x)`), which would cause a compilation error if written incorrectly as `if (5 = x)`. Modern compilers and linters often flag this pattern with warnings like "possible unintended assignment," which should always be investigated and corrected.
Impacto no mundo real

Real-world CVEs caused by CWE-482

Ainda não há referências CVE públicas associadas a este CWE no catálogo da MITRE.

Como os atacantes a exploram

Trajeto do atacante passo a passo

  1. 1

    The following example demonstrates the weakness.

  2. 2

    The following C/C++ example shows a simple implementation of a stack that includes methods for adding and removing integer values from the stack. The example uses pointers to add and remove integer values to the stack array variable.

  3. 3

    The push method includes an expression to assign the integer value to the location in the stack pointed to by the pointer variable.

  4. 4

    However, this expression uses the comparison operator "==" rather than the assignment operator "=". The result of using the comparison operator instead of the assignment operator causes erroneous values to be entered into the stack and can cause unexpected results.

Exemplo de código vulnerável

Vulnerable Java

The following example demonstrates the weakness.

Vulnerável Java
void called(int foo) {
  	foo==1;
  	if (foo==1) System.out.println("foo\n");
  }
  int main() {
  		called(2);
  		return 0;
  }
Exemplo de código seguro

Secure pseudo

Seguro pseudo
// Validate, sanitize, or use a safe API before reaching the sink.
function handleRequest(input) {
  const safe = validateAndEscape(input);
  return executeWithGuards(safe);
}
What changed: the unsafe sink is replaced (or the input is validated/escaped) so the same payload no longer triggers the weakness.
Lista de verificação de prevenção

How to prevent CWE-482

  • Testing Many IDEs and static analysis products will detect this problem.
Sinais de deteção

How to detect CWE-482

Automated Static Analysis High

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.)

Correção automática do Plexicus

O Plexicus deteta automaticamente o CWE-482 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.

Perguntas frequentes

Frequently asked questions

O que é o CWE-482?

This vulnerability occurs when a developer accidentally uses a comparison operator (like '==') where an assignment operator (like '=') was intended, creating a logic error instead of setting a value.

Qual a gravidade do CWE-482?

A MITRE classifica a probabilidade de exploração como Baixa — a exploração é pouco comum, mas a fraqueza deve mesmo assim ser corrigida quando descoberta.

Que linguagens ou plataformas são afetadas pelo CWE-482?

MITRE lists the following affected platforms: C, C++.

Como posso prevenir o CWE-482?

Many IDEs and static analysis products will detect this problem.

Como é que o Plexicus deteta e corrige o CWE-482?

O motor SAST do Plexicus correlaciona a assinatura de fluxo de dados do CWE-482 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-482?

A MITRE publica a definição canónica em https://cwe.mitre.org/data/definitions/482.html. Pode também consultar a documentação da OWASP e do NIST para orientações adjacentes.

Pronto quando você estiver

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.