Skip to main content
Blog
Blog

Tempo de inatividade não reportado e preocupações de segurança do ButterCMS

ButterCMS é uma ferramenta popular utilizada para gerir conteúdo de blogs. No início desta semana, detetámos um incidente de segurança potencialmente grave que lev

Sep 23, 2024 9 min read
buttercms-image-cover
Índice

Resumo: apagamento de DNS do CMS não reportado com sinal de alerta de transferência de registador WHOIS

  • "Pequeno problema de DNS" ou sequestro: Os fornecedores externos adoram a expressão "pequeno problema de DNS", mas um apagamento total de DNS coincidente com uma atualização de registador WHOIS parece, do ponto de vista do cliente, idêntico a um sequestro de domínio ao estilo Polyfill, e só um destes dois cenários termina em notificação ao cliente.
  • Retirámo-lo e monitorizámo-lo: A cside retirou o ButterCMS do nosso próprio blog a 9 de setembro, às 08:00 PT, quando o DNS deixou de resolver em simultâneo com uma atualização WHOIS, e o nosso motor já acompanha o histórico de registos DNS, os metadados WHOIS e a deriva comportamental de cada domínio de terceiros em cerca de 1.660 sites potencialmente afetados e 5.800 domínios adicionais.
  • Sem post-mortem, sem confiança: Se o teu fornecedor de CMS não consegue publicar uma entrada na página de estado, um número de caso ou um post-mortem depois de uma queda que podia passar por um sequestro de domínio, a questão não é confiar na correção, é decidir se a verificação contínua de cada terceiro dinâmico é indispensável ou apenas um extra.

Sem tempo? Veja o bloqueio in-browser de Magecart e skimmers da cside. Cobre tudo o que se segue numa única implementação.

O ButterCMS é uma ferramenta popular utilizada para gerir conteúdo de blogs. No início desta semana, detetámos um incidente de segurança potencialmente grave que levou a equipa a remover o ButterCMS do nosso site e a iniciar uma investigação aprofundada sobre o que aconteceu. Potencialmente 1.660 sites e mais de 5.800 domínios foram impactados.

O nosso objetivo é partilhar as conclusões da nossa investigação para mostrar o que pode acontecer quando se confia em terceiros dinâmicos sem verificação contínua.

O incidente do ButterCMS

Observámos o incidente a começar às 08:00 (PT) de 9 de setembro, quando detetámos um aumento significativo de erros porque o DNS estava a falhar na resolução do hostname. Isto resultou numa interrupção do blog no nosso site.

Pouco depois, reparámos que o site do ButterCMS estava em baixo porque não estava a ser servido nenhum registo DNS.

Consulta DNS ao ButterCMS sem devolver registos durante a interrupção

Ao investigar mais a fundo, verificámos que o domínio do ButterCMS tinha tido uma atualização de WhoIs precisamente quando os nossos problemas começaram. Uma razão lógica para isto poderia ter sido uma renovação ou uma mudança de propriedade do domínio. Esta última seria altamente preocupante.

Consulta WHOIS a mostrar uma atualização recente de registador no domínio do ButterCMS

Se o domínio tivesse sido "capturado" e tivesse caído em mãos maliciosas, poderia ter representado um sério risco de segurança, semelhante ao incidente do Polyfill, em que uma mudança de propriedade de domínio provocou um grande ataque à cadeia de fornecimento de navegadores em quase 500.000 sites. Isto resultou na injeção de código malicioso nos navegadores de milhões de visitantes, provocando redirecionamentos maliciosos e potencialmente outros ataques furtivos que passaram despercebidos devido à subutilização da monitorização de segurança do lado do cliente.

Nesta altura, desativámos por completo a integração do ButterCMS para evitar que qualquer dado fosse servido a partir do domínio potencialmente comprometido. Desativar o CMS elimina o risco de código malicioso ser injetado no nosso site.

Contactámos via X (Twitter) para notificar a equipa do ButterCMS:

@ButterCMS

Estamos a ter problemas de DNS com

https://t.co/tnhJP0PZWG

, parece que o vosso DNS foi completamente apagado em várias redes diferentes.

Como não consigo aceder ao site, não tenho outra forma de contactar a vossa equipa de suporte.- cody (@devlooskie)

September 9, 2024

Não responderam à nossa mensagem.

Às 08:30, observámos que os registos DNS do ButterCMS estavam a ser restaurados e, importante, apontavam para os mesmos IPs de antes da interrupção. Isto sugere que o problema se deveu provavelmente a uma configuração incorreta ou a uma indisponibilidade no fornecedor de DNS usado para o seu domínio. Durante a interrupção, não vimos nenhum registo presente. Nem para o site, nem para a API.

Assim que confirmámos que o serviço tinha voltado ao normal, revertemos as nossas alterações.

Por fim, contactámos a equipa do ButterCMS através do seu serviço de chat:

Troca de mensagens no chat do Intercom com o suporte do ButterCMS a reportar a interrupção

Na mensagem completa, a operadora de suporte afirmou que a sua equipa desconhecia o problema, mas que tinha começado a investigar. Não podemos partilhar o histórico completo da mensagem, pois, ao pedirmos um número de caso, responderam que não tinham nenhum. O Intercom deveria atribuir estes números por defeito.

Verificámos a página de estado do ButterCMS, que, até hoje, não mostra qualquer interrupção. Isto levou-nos inicialmente a acreditar que o problema estava do nosso lado, ou que era maior do que na realidade se veio a revelar.

Página de estado do ButterCMS a 9 de setembro sem quedas reportadas

A correspondência falhada com o ButterCMS

Depois de tudo isto, contactámo-los por e-mail. Eis a resposta deles:

Primeira resposta por e-mail, desfocada, do suporte do ButterCMS sobre a interrupção

Mencionam uma aquisição recente do ButterCMS pela Tiugo Technologies. No entanto, isso foi noticiado no final de 2022, há mais de 1,5 anos. Embora isto explique agora o motivo da transferência de domínio, não fomos informados nem notificados antes das alterações.

Fizemos um seguimento e recebemos a seguinte mensagem:

Segunda resposta por e-mail, desfocada, do suporte do ButterCMS sobre a interrupção

Um problema de verificação poderia ter sido a causa. Saberemos mais na sua declaração post-mortem, a ser publicada em breve.

Num último e-mail de seguimento, a 12 de setembro, esta foi a resposta deles:

Terceira resposta por e-mail, desfocada, do suporte do ButterCMS sobre a interrupção

Acreditamos que a comunicação sobre este tipo de alterações é vital. Quando alterações planeadas correm mal, mesmo que ligeiramente, isso coloca os clientes num risco significativo. Um e-mail rápido a notificar os utilizadores faz toda a diferença neste tipo de cenários.

Estas alterações podem até interferir com os requisitos do RGPD, agora que se sabe que a propriedade do domínio mudou após uma aquisição. O RGPD não menciona especificamente transferências de domínio, mas foca-se na transferência do controlo sobre dados pessoais. Se a mudança de propriedade resultar num novo responsável pelo tratamento a gerir dados pessoais, os clientes (titulares dos dados) teriam de ser informados. Isto enquadra-se nos princípios de transparência e equidade do RGPD (Artigos 13 e 14).

Os clientes devem ser notificados sobre a identidade do novo responsável pelo tratamento e sobre quaisquer alterações na forma como os seus dados serão processados. A notificação deve ocorrer num prazo razoável.

Esperámos algum tempo antes de publicar isto, para ver se ainda chegaria alguma comunicação antes do webinar planeado. Até agora, não vimos nenhuma.

ATUALIZAÇÃO: Mesmo depois do webinar, não houve gravação nem qualquer publicação de blog ou declaração.

Mais tarde, tentámos procurar outras empresas a comentar este problema, mas não encontrámos nenhuma. Embora não possamos saber o número exato de clientes afetados, potencialmente 1.660 sites e mais de 5.800 domínios adicionais foram impactados:

Alcance estimado do ButterCMS, cerca de 1.660 sites e 5.800 domínios adicionais

O risco de terceiros dinâmicos

Isto é mais grave do que uma simples alteração de registos. Este padrão é exatamente o que acontece quando um domínio muda de propriedade, ou quando detalhes importantes do WhoIs são atualizados.

Embora o problema esteja agora resolvido, esta situação revelou uma potencial vulnerabilidade de segurança.

A lição mais ampla deste incidente é o risco que se assume ao depender de serviços de terceiros que injetam conteúdo dinamicamente nos sites. Um problema que conhecemos bem, e contra o qual protegemos do lado do cliente.

Diagrama dos riscos de segurança do lado do cliente provocados por conteúdo de terceiros injetado dinamicamente

Os domínios usados em integrações podem ser comprados por agentes maliciosos e explorados para ataques. O conteúdo que injetam é dinâmico. Isto significa que o conteúdo pode variar consoante vários fatores, como a hora, a região e outros dados específicos do utilizador, o que facilita aos agentes maliciosos contornar a deteção.

Neste caso, a renovação do domínio do ButterCMS e a falta de clareza em torno da atualização do WhoIs levantaram um sinal de alerta que nos lembrou da necessidade de monitorizar dependências de terceiros.

A forma como um site é construído afeta significativamente a sua vulnerabilidade a este tipo de problema. Idealmente, qualquer input deveria ser devidamente sanitizado. O input do utilizador deve ser limpo para evitar que código malicioso seja injetado no site.

Muitos programadores não implementam uma sanitização adequada, sobretudo quando este aspeto não é explicitamente abordado na documentação.

Se procurares por "dangerouslySetInnerHTML", não há indicações claras sobre como usar esta prop em segurança. Sem uma sanitização adequada, qualquer HTML válido pode ser injetado, o que cria uma vulnerabilidade séria de XSS (Cross-Site Scripting).

Exemplo de código a mostrar a prop de injeção de HTML do React em uso

Quando o HTML é injetado no cliente, toda a página pode ficar comprometida através de injeções de script. Sem salvaguardas, o HTML injetado pode executar scripts nocivos ou redirecionar utilizadores para sites maliciosos, transformando efetivamente a funcionalidade num portal aberto a riscos de segurança.

Como isto é tratado do lado do cliente

O risco de mudança de domínio não é, obviamente, novidade para nós. É um vetor de ataque comum no mundo da segurança do lado do cliente. A cside já verifica o histórico de registos DNS, informação WhoIs e metadados.

Enquanto o site se mantiver ativo (e, como resultado, a cside também) e ocorrerem alterações ou anomalias, o nosso motor deteta-as. E, depois de verificar outras possíveis atividades maliciosas, alertará e/ou bloqueará o domínio, o script e, assim, um possível ataque.

Podes proteger o teu site de forma rápida e gratuita usando a cside.

Simon Wijckmans
Founder & CEO

Founder and CEO of cside. Previously a product manager on Cloudflare Page Shield (now Cloudflare Client-Side Security). Co-chair of the W3C Anti-Fraud Community Group and a Forbes 30 Under 30 honoree. Building accessible security against client-side attacks, web security is not an enterprise-only problem.

FAQ

Frequently Asked Questions

Os registos DNS do domínio do ButterCMS deixaram de resolver durante horas, o que derrubou o nosso blog e provavelmente milhares de outros sites. A página pública de estado nunca reportou o incidente; só o descobrimos ao investigar os registos WHOIS.

Quedas não reportadas impedem as equipas de relacionar sintomas com uma causa raiz e podem levá-las a pensar que o seu site foi atacado. Pior ainda: uma mudança de registador que parece uma queda também pode ser sinal de um sequestro de domínio, um cenário muito semelhante ao incidente do Polyfill.

Monitore e proteja seus scripts de terceiros

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Comece grátis ou experimente o Business com um teste de 14 dias.

Interface do painel cside mostrando monitoramento de scripts e análises de segurança
Related Articles
Agende uma demonstração

Quer ver isso em detalhe com um engenheiro?

Trinta minutos, no seu próprio site. Sem slides.

Vamos mostrar:

Quais scripts de terceiros estão rodando no seu site agora
Como você está em relação aos requisitos 6.4.3 e 11.6.1 do PCI DSS
Qual parte do seu tráfego é de bots e agentes de IA

Prefere só mandar uma pergunta?

Procurando horários livres…

Apenas humanos de verdade. A gente saberia.

Problemas para agendar? Abrir o agendador em uma nova aba

O que você está tentando resolver?

Conte em uma linha e voltamos com algo útil, não com um discurso genérico.

Costumamos ajudar com:

Ver quais scripts de terceiros rodam no seu site
Evidências para PCI DSS 6.4.3 e 11.6.1
Bots, agentes de IA e roubo de contas

Prefere agendar um horário? Escolher um horário