Falhas do tipo CWE-491

4 resultados

Método clone() público sem final (Object Hijack)

Uma classe implementa Cloneable e expõe um método clone() público sem declarar como final, permitindo que subclasses o sobrescrevam. Um atacante pode herdar da classe, interceptar o clone() e retornar um objeto malicioso em vez de uma cópia legítima, enganando o código que confiava no resultado da clonagem.

Exemplo

Uma classe BankAccount implementa clone() públicamente. Um atacante cria uma subclasse que sobrescreve clone() para retornar um objeto com saldo manipulado. Código que clona uma BankAccount para copiar dados seguramente acaba recebendo um objeto falso controlado pelo atacante.

Como mitigar

Declare o método clone() como final se a clonagem deve ser exatamente como definido na classe original. Alternativamente, evite expor clone() publicamente ou use padrões como cópia defensiva em construtores em vez de Cloneable.