Pular para o conteúdo
Todos os conceitos

Adulterar um dado serializado

Decodificar o blob, trocar um campo, recodificar, e o servidor aceita o objeto alterado.

Quando um dado serializado não é protegido, adulterá-lo é mecânico. O blob quase sempre está só codificado (base64), não cifrado nem assinado de verdade. Então o ataque é: decodificar, editar o campo que interessa, recodificar, enviar.

Veja um cookie de sessão em base64 que decodifica para {"u":"ana","role":"user"}. Trocar "role":"user" por "role":"admin" e recodificar produz um cookie que o servidor lê como "ana é admin". Nenhuma senha, nenhuma falha de memória: é só editar texto.

base64 -d < token.txt                       # {"u":"ana","role":"user"}
base64 -d < token.txt | sed 's/user/admin/' | base64 -w0   # cookie adulterado

A lição: codificar (base64) não é proteger. Base64 é só uma maneira de escrever bytes como texto; qualquer um desfaz. O que protege é autenticar o dado (assinar e verificar) ou não deixar o cliente carregar a decisão.

blob base64 "role": "user" "role": "admin" blob base64 decodifica troca o campo recodifica aceita Codificar não é proteger: base64 se desfaz, edita-se o campo e se refaz.
O blob base64 decodifica para JSON; o atacante troca role de user para admin e recodifica; o servidor aceita.

Aparece nestes desafios