Executando verificação de segurança...
16

Postmortem: todas as sessões foram invalidadas por conta do endpoint /thumbnail

Turma, venho aqui realizar o primeiro Postmortem do TabNews e explicar em detalhes porque todas as sessões foram invalidadas.

Resumo

Ontem 21/07/22 às 21:53 (Horário de Brasília) foi feito o deploy de um novo endpoint na API que gera thumbnails customizadas de cada publicação aqui do TabNews. Infelizmente, este endpoint estava configurado para realizar um cache de 60 segundos e estava guardando consigo o token de sessão do usuário.

Felizmente, esta falha só conseguiria ser explorada se o usuário visitasse o endpoint que gera a thumbnail manualmente, onde sem isso, não havia nenhum impacto ao acessar o TabNews, ou até mesmo compartilhar as publicações.

Como o problema foi descoberto

O usuário ErickCReis criou uma issue reportando que estava logado na conta de outro usuário, e dentro desta mesma issue o usuário GuiLra reportou também que estava conectado na conta do exato mesmo usuário.

O usuário em questão era o aprendendofelipe e ao investigar as informações nos logs e no banco de dados, de fato os dois usuários estavam compartilhando o mesmo cookie de sessão do aprendendofelipe.

Após as informações enviadas por eles, notamos que isto aconteceu, pois o aprendendofelipe manualmente acessou as URLs de thumbnails que eu publiquei nessa issue e em algum momento, ambos ErickCReis e GuiLra acessaram também, recebendo da CDN o cabeçalho Set-Cookie que estava cacheado com a sessão do aprendendofelipe.

O que foi feito

  1. Consertamos o bug removendo o cache por completo da rota de thumbnail através deste PR, e iremos fazer outras implementações para dificultar que isso se repita.
  2. Criamos um outro PR reproduzindo do zero o bug para nos certificarmos que estamos sob controle da situação.
  3. Todos os caches da CDN foram invalidados e todos os snapshots de deploys passados tanto em ambiente de Produção quanto Homologação relacionados a esse problema foram removidos.
  4. Apesar da abrangência do impacto ser pequeno (inicialmente apenas as pessoas que manualmente clicaram nos links daquela issue), invalidamos todas as sessões de todos os usuários por precaução.
  5. Você pode fazer o login novamente ou recuperar a sua senha caso tenha esquecido, o sistema está se comportanto como anteriormente.
  6. Todos os endpoints da API que utilizam Cache-Control foram revisados a procura da mesma falha e em nenhum deles foi identificado o mesmo comportamento. O /thumbnail era o único endpoint que estava ao mesmo tempo injetando a sessão do usuário e fazendo o cache.
  7. Além do primeiro PR desta lista remover o cache do endpoint /thumbnail, este PR faz parar a injeção da sessão do usuário, tornando o endpoint 100% genérico.
  8. Por fim, nada no core do sistema de autentização ou autorização foi impactado.

Pesquisa

Você pode acompanhar toda pesquisa realizada com todas as informações através dessa issue.

Agradecimentos

Muito obrigado a ErickCReis, GuiLra e aprendendofelipe por toda ajuda na pesquisa, vocês são pessoas sensacionais 🤝 🤝 🤝 🤝 🤝

No mais, qualquer dúvida ou qualquer informação, estou de plantão aqui no TabNews, no repositório do TabNews e no email [email protected].


⚠️ O repositório Open Source do TabNews ainda está em Modo Privado. Caso queira receber um convite para participar, leia esta publicação.

Carregando publicação patrocinada...
8

Nossa hoje quando abri meu e-mail tinha umas 40 mensagens de [Bug] Estou logado com outro usuário (Issue #544), fiquei impressionado com a velocidade no reparo do problema! Parabéns a toda turma envolvida!

4

Show Rodrigo! De fato foi um bate-volta muito rápido entre todo mundo ali, o que fez conectar rapidamente os pontos. E além da comunicação dentro da issue, tive uma rápida comunicação por email para trocar informações mais sensíveis. Foi tudo muito fantástico e nós demos mais um passo de maturidade e hardening (endurecimento), o que é natural para qualquer sistema vivo 🤝

7

Essa falha era grave, não tem como minimizar, mas a velocidade na resolução foi impressionante.

Está todo mundo de parabéns, desde ao report do problema, identificação e solução.

5

Justíssimo! E após esse evento estou muito mais confiante que a gente consegue se comunicar e atacar um problema na raiz de uma forma muito organizada 🤝

5

Acompanhei tudo desde a hora que mandaram a issue do bug e sinceramente, isso só mostra que se continuarmos assim não vejo nada que impeça o TabNews de superar todas nossas expectativas em ser um dos melhores projetos opensource e sites de conteúdo concreto de toda a web! Parabéns a todos vocês que fizeram um problemão desses parecer aqueles vídeos de buracos em ruas sendo consertados no Japão!

4