Ir para o conteúdo

Retire os segredos dos logs e arquivos HAR antes de compartilhá-los

Blog / Publicado 

"Você pode me enviar um arquivo HAR?" é uma solicitação razoável de um engenheiro de suporte e algo perigoso de se atender impensadamente. Uma exportação HAR é uma gravação completa de uma sessão do navegador: cada solicitação, cada cabeçalho de resposta, cada cookie enviado e, muitas vezes, também os corpos de resposta. Entregar um sem edição dá ao destinatário a capacidade de agir como você em qualquer site dessa gravação, enquanto essas sessões estiverem em vigor.

O mesmo se aplica, de forma menos óbvia, aos trechos de log que as pessoas colam em tickets, tópicos do Slack e janelas de bate-papo o dia todo. Vale a pena ter uma rotina.

O que realmente está em um arquivo HAR

HAR é JSON e é exaustivo por design. Em uma exportação normal você encontrará:

O Desinfetante de arquivos HAR pega a exportação e remove as partes que contêm credenciais – cookies, cabeçalhos de autenticação, tokens – enquanto deixa intacta a estrutura de solicitação e resposta, que é o que a pessoa que está depurando seu problema realmente precisa. Cole, pegue um arquivo limpo e anexe.

Veja o que você está enviando

Higienizar as cortinas é melhor do que não higienizar, mas o hábito útil é olhar primeiro. Copie os cabeçalhos da solicitação suspeita de suas ferramentas de desenvolvimento e execute-os através do Analisador de cabeçalho HTTP: divide um bloco bruto em pares nome/valor que você pode ler, o que torna óbvio quando há um X-Internal-Auth ou um cabeçalho de token específico do fornecedor que um padrão de redação genérico não teria reconhecido como segredo.

Os cookies merecem um visual próprio. Cole um Cookie ou Set-Cookie linha para o analisador de cookies e você obtém cada cookie dividido com seus atributos - HttpOnly, Secure, SameSite, expiração. Isso é uma verificação de redação ("quais destes são tokens de sessão?") e uma revisão de segurança ao mesmo tempo: um cookie de sessão sem HttpOnly ou com validade de um ano é uma descoberta por si só, e você já está olhando para ela.

A saída do terminal tem dois problemas

Os logs de terminal colados carregam segredos – strings de conexão, tokens em comandos curl, dumps de ambiente – e também carregam sequências de escape ANSI. Essa é a razão pela qual um tronco colorido se transforma em ESC[0;32m fazem barulho quando cai em um ticket e tornam o texto difícil para qualquer pessoa ler e difícil para você pesquisar. O Decapador ANSI remove os códigos de cor e controle do cursor e deixa o texto.

Então redija. O redator de dados encontra as categorias recorrentes – endereços de e-mail, endereços IP, números de telefone, números de cartão, strings em forma de chave – e as substitui de forma consistente, de modo que o registro ainda seja lido como um traço coerente em vez de se tornar uma parede de [REDACTED]. A consistência é importante quando você está depurando: se o mesmo ID de usuário for substituído pelo mesmo espaço reservado em todos os lugares, o leitor ainda poderá seguir uma solicitação em cinquenta linhas.

A correspondência de padrões não capturará um segredo que se pareça com texto comum, portanto leia o resultado antes de enviá-lo. Nomes de host internos, nomes de clientes em campos de texto livre e caminhos de arquivos contendo nomes de usuário são as três coisas que sobrevivem a cada passagem automatizada.

Redação não é rotação

O ponto mais importante, e que as pessoas ignoram: se uma credencial já foi enviada para algum lugar que não deveria ter ido, removê-la de um documento não adianta nada. O destinatário pode tê-lo. Pode estar em um arquivo de e-mail, em um sistema de tickets, em um back-end de bate-papo, na pasta de download local de alguém ou nos registros de um provedor modelo.

Girar. Invalide a sessão, revogue o token, role a chave API. Em seguida, limpe o arquivo. Nessa ordem, porque a limpeza leva um minuto e a rotação é a parte que realmente fecha a exposição.

Colar em uma janela de bate-papo é publicar

A depuração com um assistente é normal agora, e um rastreamento de pilha com uma string de conexão vai para terceiros no momento em que você pressiona Enter. Dependendo do produto e do plano, esse texto pode ser retido, revisado por um ser humano ou usado para treinamento. Trate qualquer colagem em um modelo hospedado como uma transferência para uma parte externa — porque é isso que realmente é — e limpe-a exatamente como você limparia um anexo de um e-mail externo.

Este é o caso em que as ferramentas locais não são uma preferência, mas o ponto principal: cada ferramenta nomeada aqui é executada em seu navegador, portanto, a versão não editada do arquivo nunca é carregada em nada que esteja a caminho de ser limpa. Limpar um log contendo segredos colando-o em um site que o processa em um servidor significa que o segredo já foi embora, independentemente da aparência da saída limpa.

Uma lista de verificação que vale a pena fixar

  1. Grave o HAR em uma janela privada com apenas a guia relevante aberta e comece a gravar depois você fez login.
  2. Execute a exportação através do desinfetante.
  3. Abra o arquivo limpo e procure por token, secret, key, auth, password e seus próprios nomes de domínio.
  4. Retire os códigos ANSI de qualquer saída de terminal e edite os identificadores.
  5. Leia o resultado de ponta a ponta. É mais curto do que você pensa.
  6. Gire tudo o que estava ativo no original.
  7. Envie-o através de um canal que expira, não um que arquiva para sempre.

Seis minutos de trabalho contra um vazamento de credenciais que, de outra forma, ficaria na fila de tickets indefinidamente.

Escrito por Ján Turský

Criador do TextArray – criando ferramentas gratuitas que priorizam a privacidade e que rodam inteiramente no seu navegador.