Skip to content
Latchkey

O Que É Desserialização? Reconstruir Dados a Partir de Bytes Explicado

Desserialização é o inverso da serialização: ela reconstrói estruturas de dados em memória a partir de um fluxo de bytes lido do disco ou da rede.

Desserialização é como um programa recupera dados. Ela lê um fluxo plano de bytes - um arquivo JSON, um blob em cache, um payload de rede - e reconstrói o objeto estruturado que ele representa. Parece corriqueiro, mas desserializar entradas não confiáveis é uma das operações mais perigosas em software, o que a torna uma preocupação real para o CI que processa dados externos.

O que é desserialização

A desserialização analisa um fluxo de bytes serializado e reconstrói a estrutura original em memória - o objeto, a lista ou o registro. É o inverso da serialização e precisa usar um formato compatível e, muitas vezes, um schema compatível, ou falhará ou produzirá valores errados.

Por que entradas não confiáveis são perigosas

Alguns desserializadores podem instanciar tipos arbitrários ou executar código enquanto reconstroem um objeto. Alimentar um desserializador desses com bytes controlados por um atacante pode levar à execução remota de código. Essa "desserialização insegura" é uma classe de vulnerabilidade bem conhecida, especialmente em formatos que embutem informação de tipo.

Práticas de desserialização segura

As defesas são preferir formatos simples, apenas de dados, como JSON, validar a entrada contra um schema antes de confiar nela, e evitar desserializadores capazes de construir objetos arbitrários a partir de fontes não confiáveis. Trate qualquer dado que cruze uma fronteira de confiança como hostil até que seja validado.

Desserialização no CI

Pipelines de CI desserializam muitos dados externos: payloads de webhook, respostas de APIs de terceiros e artifacts baixados. Um passo de pipeline que analisa um payload não confiável deve validá-lo, e os scanners de segurança no CI especificamente sinalizam padrões de desserialização insegura no seu código.

Catching unsafe deserialization in CI
# Scan for unsafe deserialization in CI
steps:
  - uses: actions/checkout@v4
  - run: semgrep --config p/insecure-deserialization .

Por que importa nos pipelines

Um runner de CI muitas vezes tem acesso amplo - a segredos, credenciais de nuvem e ao repositório. Desserializar entradas não confiáveis ali é arriscado justamente porque o raio de impacto é grande. Validar payloads e fazer a varredura em busca de padrões inseguros evita que o pipeline se torne um vetor de ataque.

Principais conclusões

  • A desserialização reconstrói dados em memória a partir de um fluxo de bytes serializado; é o inverso da serialização.
  • Desserializar entradas não confiáveis pode executar código, então é uma classe séria de vulnerabilidade.
  • O CI desserializa webhooks e respostas de API - valide-os e faça a varredura em busca de padrões inseguros.

Guias relacionados