3 pontos por GN⁺ 2024-04-15 | 1 comentários | Compartilhar no WhatsApp
  • Em uma época em que não havia uma rotação formal de plantão, às 3 da manhã um gato acordou uma pessoa que estava dormindo, permitindo que ela visse imediatamente um alerta do AWS CloudWatch e a indisponibilidade do site
  • Após um alerta de unhealthy targets no load balancer, o site parou de abrir, e um grande volume de requisições estava chegando de muitos IPs ligados a vários países
  • Como o produto era oferecido apenas a usuários dos Estados Unidos, o tráfego internacional era anormal e, pelas circunstâncias, tratava-se de um ataque DDoS
  • Bloquear IPs um a um no servidor poderia ser ineficiente, mas com uma regra de bloqueio por país já configurada no AWS WAF, a empresa bloqueou centenas de milhares de requisições ao longo de cerca de 1 hora
  • Perto do início do ataque, a caixa de entrada do suporte ao cliente recebeu um e-mail de ameaça dizendo que havia derrubado o site por uma vulnerabilidade no Apache e exigindo US$ 5.000 em Bitcoin; a empresa não respondeu

A falha revelada às 3 da manhã

  • Na época, a startup não tinha uma rotação formal de plantão, e a equipe operava acompanhando em conjunto os alertas de emergência
  • Por volta das 3 da manhã, o gato mexeu no cabelo da pessoa enquanto se limpava e a acordou; ao olhar o celular, havia chegado minutos antes um alerta do AWS CloudWatch
  • A causa do alerta era unhealthy targets no load balancer, e o site realmente não carregava
  • No dashboard de monitoramento, era possível ver um grande volume de requisições vindo de muitos endereços IP ligados a vários países
  • Como o produto era oferecido apenas a usuários dos Estados Unidos, o tráfego internacional era diferente do normal e, pelas circunstâncias, concluiu-se que era um ataque DDoS

A enxurrada de requisições bloqueada com AWS WAF

  • A primeira resposta considerada foi bloquear endereços IP no nível do servidor, mas isso poderia ser trabalhoso e ter efeito limitado se o atacante usasse ainda mais IPs de origem
  • Aproveitando o AWS Web Application Firewall já configurado, foi adicionada uma regra para bloquear requisições de outros países como resposta imediata à indisponibilidade
  • Depois que a regra foi aplicada, centenas de milhares de requisições foram bloqueadas ao longo de cerca de 1 hora, e o site voltou a funcionar
  • Com o fim da enxurrada de requisições, a indisponibilidade imediata foi resolvida

O e-mail de ameaça que chegou logo após o ataque

  • Naquela manhã, foi verificado um e-mail que havia chegado à caixa de entrada do suporte ao cliente por volta do início do ataque
    • O remetente alegava ter encontrado uma vulnerabilidade no site e derrubado o Apache, mas a empresa não usava Apache
    • Dizia ter parado todo o tráfego do site e que poderia manter isso por meses, exigindo o envio de US$ 5.000 em Bitcoin em troca de um “solution file”
    • A empresa não respondeu
  • Como o celular estava no modo não perturbe durante a noite, não faz sentido dizer que a vibração ou o som do alerta da AWS acordaram o gato primeiro
  • A pessoa envolvida acha que o gato somehow percebeu que era algo que não podia esperar até de manhã, e considera que foi uma forma de acordar muito menos desagradável do que um alerta do PagerDuty

1 comentários

 
GN⁺ 2024-04-15
Comentários do Hacker News
  • Como sempre, é fácil deixar passar a ameaça interna. Um e-mail de extorsão com gramática suspeita? Pedido de resgate em Bitcoin? Você nunca considerou a possibilidade de que quem estava por trás do ataque fosse o gato?

    • A ligação estava vindo de dentro da casa!
    • Colocaram o “Bite” em Bitcoin
    • Exato, gatos são notórios por escreverem mal
  • Não há muitos terremotos no Kansas, mas ainda me lembro do primeiro e único que senti
    Eu estava dormindo profundamente quando meu gato siamês me acordou dando tapinhas no meu rosto com a pata, depois sentou na ponta da cama e rosnou de um jeito incomumente agressivo
    Em menos de 30 segundos, começou a tremer. Não sei como ele soube, mas foi bem impressionante; ele se foi em 2020 e ainda sinto falta dele

    • Gatos e cachorros são conhecidos por detectar terremotos antes que as pessoas os sintam
      No terremoto recente em NYC também havia vídeos de cachorros uivando antes de as pessoas sentirem a vibração, e vejo isso como algo bem comum
    • Que pena. Ainda assim, é uma ótima lembrança desse gato
      Quando passei por um terremoto de magnitude 7,4 em Taipei algumas semanas atrás, tudo em que eu conseguia pensar era que precisava voltar para o meu cachorro, como prometido. Antes de eu sair, ele estava ansioso; não sei se percebeu que eu estava indo embora ou se sentiu o terremoto para o qual eu estava indo
    • Dá para explicar como ele soube
      Nas rochas há dois tipos de ondas: ondas P e ondas S. As ondas P são ondas de pressão, então são mais rápidas; as ondas S se movem lateralmente e são um pouco mais lentas. É bem provável que o gato tenha acordado com o som sibilante das ondas P, que chegam um pouco antes do terremoto que as pessoas sentem
      Dá para confirmar que existem dois tipos de ondas e que as ondas P chegam primeiro em https://manoa.hawaii.edu/exploringourfluidearth/physical/oce...
  • Talvez o celular estivesse no silencioso, mas a tela continuasse piscando. O meu também se comporta assim nesse modo
    No meu primeiro emprego havia uma pessoa que percebia pelos dashboards de monitoramento antes de um incidente estourar. Ela não conseguia explicar nem entender o que estava vendo, e ninguém mais conseguia imitar, mas, quando dizia que algo parecia estranho, geralmente o alerta vinha logo depois

    • Se você fizer uma pessoa olhar dados fluindo por tempo suficiente, ela se ajusta aos padrões. Humanos são feitos para encontrar padrões, e isso nem precisa ser algo que dê para explicar conscientemente. Em algum momento, o sinal simplesmente parece “fora do lugar”
    • Chamamos essas pessoas de canários e as colocamos bem no fundo da mina
    • Alguns sinais parecem contornar as áreas do cérebro que lidam com fatos explícitos
      Li uma vez sobre um encarregado de obra que era respeitado pelos trabalhadores por conseguir encontrar canos enterrados ou dentro de paredes com uma habilidade fora do normal. No começo, ele começou a acreditar que fosse algum poder paranormal, mas depois concluiu que tinha aprendido inconscientemente padrões típicos e algumas pistas ocasionais nada intuitivas. Por exemplo, ver um duto de ventilação na parede de um prédio e perceber que provavelmente havia tubulação de esgoto no subsolo
    • Eu tive algo parecido quando jogava Cyberpunk 2077 na versão inicial de lançamento do PS4
      Cheguei ao ponto de perceber com bastante precisão: “este jogo vai crashar logo, melhor salvar”. Eu salvava e, ao reiniciar 10 segundos depois, ele de fato crashava; até hoje não sei como eu sabia
  • 5.000 dólares é um valor bem de príncipe mesmo. Em 2016, minha empresa também recebeu uma exigência dessas
    Sofremos um DDoS e decidimos ignorar, mas, por via das dúvidas, deixamos algum BTC separado. Depois gastamos muito mais do que 5.000 dólares aplicando um monte de proteção contra DDoS, mas não pagar criminosos vale a pena

    • Há cerca de 20 anos, eu meio que acabei virando a pessoa responsável por lidar com ataques DDoS na equipe de administradores de sistemas. Os e-mails de extorsão continuaram por umas duas semanas
      1. Ataque se não pagarem 50 mil dólares — nada aconteceu
      2. Preparem-se se não pagarem 25 mil dólares — houve uma pequena sobrecarga nos servidores, mas nada sério
      3. Preparem-se se não pagarem 10 mil dólares — veio um ataque sério que afetou bastante o serviço
      4. 5 mil dólares, agora ficamos realmente irritados — desta vez derrubaram por um dia inteiro um ISP Tier 2 de Londres e o datacenter inteiro. Outras operadoras que faziam peering no London Internet Exchange tiveram de jogar em blackhole o tráfego para o nosso provedor de serviço e, no fim, um dos nossos IPs também ficou em blackhole por um tempo. Tivemos de correr atrás de um serviço de mitigação de DDoS, de um novo datacenter e de servidores
        Não respondemos a nenhum e-mail. Os atacantes também eram bem burros e só atacaram o servidor web que ficava em um lugar com boa conectividade
        O serviço que realmente gerava dinheiro ficava no Caribe e tinha apenas um T1 de 1,5 Mbps e um backup via satélite de 0,5 Mbps. Teria sido muito mais fácil saturar aquele link por mais tempo, e isso teria causado cerca de 1 milhão de dólares por hora em perda de receita
    • O problema de pagar dinheiro de extorsão ou resgate é que isso incentiva o atacante a voltar e fazer de novo
      Pagar 5 mil dólares a um atacante pode parecer mais barato do que construir defesas, mas, quando você tem defesas, a chance de sofrer ataques no futuro diminui. E, como você disse, não dar dinheiro a criminosos já tem valor por si só
  • Sobre a parte “não respondi, mas, olhando para trás, teria sido divertido provocá-los”, não responder é a única resposta válida
    Provocar pode acabar chamando ainda mais atenção e torná-lo alvo de outros ataques. O que você ganha com isso?

  • Antigamente, uma pessoa da minha família percebeu que a lava-louças estava vazando graças a um alerta do gato
    A conclusão foi que o gato ou estava tentando nos salvar, ou tentando nos matar

    • Há uma história parecida no romance Anansi Boys, de Neil Gaiman
      Uma pessoa dormindo ao ar livre acorda com o grasnar de um corvo, e naquele exato momento um grande felino, talvez um tigre, estava se aproximando sorrateiramente
      Um personagem interpreta que o corvo estava tentando avisar a pessoa; outro interpreta que a ave estava indicando a pessoa adormecida ao tigre para comer os restos depois da refeição
    • “Tentando nos salvar ou tentando nos matar” é tipo um gato de Schrödinger invertido
  • “Gramática horrível”? Bem típico da era pré-ChatGPT
    Falando mais seriamente, será que algum dia vai surgir uma forma de bloquear ataques DDoS para sempre? Todas as ameaças são ruins, mas DDoS parece o tipo de ataque mais sem graça. Não exige nenhuma habilidade ou conhecimento especial: basta rodar um script ou pagar alguém para executá-lo como serviço

    • Não é tão simples quanto “rodar um script”
      Endereços IP — e, no caso de IPv6, sub-redes — são recursos limitados para usuários comuns, e largura de banda também. A maioria dos ataques de amplificação exige spoofing de IP, o que muitas vezes não é possível em conexões comuns
      Se for um ataque baseado em volume, vence quem tiver mais largura de banda. O atacante pode usar amplificação nesse caso. Se for um ataque baseado em carga ou na camada de aplicação, dá para resolver bloqueando os IPs dos atacantes no nível do firewall. Neste caso, como já havia WAF/CloudFront, parece mais próximo de um ataque na camada de aplicação do que de um ataque puramente volumétrico
      Encontrar os IPs dos atacantes a bloquear é um problema de atribuir corretamente o custo por IP de origem, atribuir também corretamente por IP de origem o benefício da atividade de usuários legítimos e então bloquear os IPs ou faixas em que o custo excede muito o benefício
      Não é tão fácil quanto parece. O custo aparece de várias formas: conexões abertas ocupando memória, handshakes TLS, requisições caras para o servidor web fazer parsing, requisições que disparam consultas caras ao banco de dados, largura de banda de entrada e saída etc. Por isso, a maioria coloca Cloudflare — ou, como aqui, CloudFront — na frente e contorna com regras manuais, como neste caso
    • A Cloudflare bloqueia isso muito bem, desde que você aceite algum custo de centralização
      Seria ótimo se houvesse uma forma de tornar o DDoS resistente na camada de protocolo, mas não sei bem se isso é possível
    • DDoS na camada de aplicação normalmente é mitigado não fazendo trabalho caro para clientes que não fizeram antes algum trabalho caro. É fácil falar, mas às vezes é difícil na prática
      E existe o DDoS baseado em volume. Esse dá para bloquear se você tiver mais largura de banda do que todo mundo, mas é bem difícil, e você também acaba virando um potencial atacante
      A inovação aqui é distribuir filtros de tráfego via BGP. Null routing é o produto mínimo viável disso: este IP está sob ataque, então descartem o tráfego para ele o mais rápido possível. Já vi sistemas mais refinados, com coisas como descartar UDP, descartar pacotes fragmentados, descartar pacotes de entrada e saída em portas específicas UDP/TCP
      A maioria desses sistemas é projetada para que rotas especiais não se propaguem diretamente para além dos peers, mas, em alguns casos, pode ser desejável que elas se propaguem
    • Por causa do tema, li ChatGPT como CatGPT, e agora isso não sai mais da minha cabeça
    • Talvez fosse possível se a rede fosse muito mais distribuída e de baixa largura de banda
      Se a maior parte dos clientes estiver no México e o Canadá fizer um DDoS que sature o enlace entre mim e o Canadá, isso talvez não seja um grande problema. Desde que os roteadores domésticos dos consumidores no México não resolvam ajudar com esse gargalo no Canadá, claro
  • Achei que tinham conectado o alimentador do gato aos alertas
    De todo modo, fofo. Qual era o nome do gato?

    • Enquanto escrevia este texto, pensei que, se alguém tivesse um cachorro bem treinado, poderia conectar um serviço de monitoramento a um dispositivo que emitisse um som específico, e o cachorro, ao ouvir esse som, avisaria uma pessoa
      O nome dele era Bamboo. Infelizmente, ele morreu de câncer. Dei esse nome porque uma das primeiras coisas que ele fez depois de ser adotado foi tentar comer meu vaso de bambu
    • Curiosamente, foi assim que o primeiro cliente percebeu que a operadora australiana Optus tinha caído
      Um alimentador automático de gato sem fio dependia da internet e, quando a comida não saiu, o gato foi reclamar com o administrador
    • Sugiro Danielle, da Purrvice
  • Isso me lembrou este livro: Dogs that Know When their Owners are Coming Home https://www.sheldrake.org/books-by-rupert-sheldrake/dogs-tha...

  • Bloquear DDoS com token bucket é tão fácil que, normalmente, a única hora em que o gato precisa me acordar é quando meu Discord está sendo invadido

    • Nunca tinha ouvido falar, então fui pesquisar: https://en.wikipedia.org/wiki/Token_bucket
      Parece mais com uma forma de descartar, no firewall ou na entrada da rede, pacotes que geram carga excessiva antes que cheguem ao servidor de aplicação
    • Só para alguns tipos de DDoS ;)
      Se o volume de solicitações de conexão ou o número de endereços IP únicos for grande o suficiente, o ataque ainda pode sobrecarregar o serviço
      Token bucket normalmente é parte de uma estratégia de resiliência mais ampla, não uma solução mágica que resolve todos os problemas de negação de serviço