Skip to main content

5 maneiras de proteger o Drupal 10

Escrito por
Headshot of Sushnigdha Tripathy

Sushnigdha Tripathy

feature drupal

23 de agosto de 2022

0 minutos de leitura

O Drupal é um sistema de gerenciamento de conteúdo (CMS) popular, usado por grandes empresas e órgãos governamentais em aplicações essenciais para suas operações. Com uma comunidade de desenvolvedores ativa, segurança robusta, suporte a vários idiomas, conformidade com as diretrizes WCAG e facilidade de integração, o Drupal é uma escolha consagrada de CMS.

O Drupal 10, com lançamento previsto para dezembro de 2022, chega repleto de novidades. Entre as mudanças mais importantes estão a implementação de um sistema automatizado de atualizações, a substituição de alguns usos do jQuery por JavaScript puro no núcleo, a atualização de dependências de terceiros (CKEditor 5, Symphony versão 6 e PHP 8.1) e a remoção de módulos do núcleo, como HAL, QuickEdit, Aggregator, RDF e Activity Tracker. Essas atualizações vão melhorar o desempenho dos sites e proporcionar uma ótima experiência ao usuário.

Embora a transição do Drupal 9 para o Drupal 10 deva ser tão tranquila quanto a migração das versões 8 para 9, não podemos baixar a guarda quando o assunto é segurança. Afinal, nosso CMS Drupal 10 ainda pode ser alvo de ataques de agentes mal-intencionados. Por isso, neste artigo, vamos explorar cinco práticas recomendadas de segurança para o Drupal 10.

1. Acompanhe as vulnerabilidades

Uma das medidas mais importantes para proteger nosso site Drupal é acompanhar as vulnerabilidades conhecidas do Drupal pelo Snyk Vulnerability Database e ficar por dentro dos alertas de segurança do Drupal mais recentes para se antecipar a possíveis vulnerabilidades. Podemos fazer isso de várias maneiras:

  • A equipe de segurança do Drupal publica alertas de segurança toda semana. Para acompanhar as novidades de segurança, entre na sua conta e assine o boletim informativo por e-mail, participe do grupo do Drupal no Slack ou acompanhe os feeds RSS.

  • O Drupal tem um visualizador integrado do Events Logger, que podemos usar para monitorar nossos sites e identificar atividades suspeitas regularmente.

  • O gerenciador de atualizações, parte da API do Drupal, verifica regularmente se há novas atualizações e nos avisa quando elas estão disponíveis. Para configurá-lo, adicione seu endereço de e-mail ao menu de administração e receba as atualizações de segurança mais recentes.

  • Você pode usar o Drush para automatizar tarefas demoradas e aplicar atualizações de segurança rapidamente. Por exemplo, para aplicar uma atualização de segurança pela interface do Drupal, precisamos entrar no sistema, localizar o módulo, importar as alterações de configuração e muito mais. Com o Drush, podemos fazer tudo isso com um único comando, facilitando a aplicação regular de atualizações de segurança.

2. Entenda os ataques de cross-site scripting (XSS)

De acordo com o Snyk Vulnerability Database, há poucas vulnerabilidades no Drupal. No entanto, uma grande porcentagem das vulnerabilidades relatadas ao longo de 20 anos corresponde a ataques de cross-site scripting (XSS). XSS é uma vulnerabilidade de JavaScript em que agentes mal-intencionados injetam código malicioso por meio de JavaScript ou HTML em scripts executados no lado do cliente.

Sem saber do perigo, os usuários de aplicações web são enganados e acabam executando código malicioso. Quando o código é executado no navegador do usuário, os invasores podem roubar nossos tokens de sessão e se passar por nós para realizar ações que só nós deveríamos poder fazer — inclusive acessar sistemas privados.

Há três tipos de ataque XSS: refletido, armazenado e baseado em DOM.

XSS refletido (não persistente)

O XSS refletido é o tipo mais simples de ataque XSS: nele, a carga maliciosa é refletida por uma aplicação web para o navegador do usuário. Como esse ataque não é persistente, a carga não fica armazenada no site. Em vez disso, o script é inserido no final de uma URL. Quando o usuário clica nela, a carga maliciosa é executada.

XSS armazenado (persistente)

O ataque armazenado é o mais perigoso para servidores voltados ao cliente. Ele ocorre quando o invasor injeta a carga maliciosa no banco de dados do alvo. Se não houver validação de dados, ela fica armazenada permanentemente no site. Quando os usuários acessam a página afetada, acabam executando a carga no navegador sem perceber.

XSS baseado em DOM

Um ataque ao Document Object Model (DOM) é um ataque do lado do cliente em que a carga maliciosa não é enviada ao servidor. Esses ataques são difíceis de detectar porque não aparecem nos logs do servidor.

Vamos ver como acontece um ataque XSS.

Considere um site de comércio eletrônico de artigos esportivos. Ele tem uma função de busca que recebe os dados informados pelo usuário em um parâmetro da URL, como neste exemplo:

https://notsecured-website.com/search?term=tennisracquet

A aplicação acima mostra detalhes da raquete de tênis pesquisada:

<p>You searched for: tennisracquet</p>

Como podemos ver, não há validação de entrada. Por isso, hackers podem alterar a URL e inserir scripts maliciosos com facilidade, como neste exemplo:

https://notsecured-website.com/search?term=<script>/*+malicious script+*/</script>

Quando um usuário acessa a URL do hacker, o script malicioso é executado no navegador e gera a seguinte resposta:

<p>You searched for: <script>/*+malicious script+*/</script></p>

Para prevenir ataques XSS com eficácia, precisamos:

  • Implementar uma política de segurança de conteúdo (CSP) para detectar e neutralizar ataques XSS.

  • Usar frameworks que escapem as tags HTML.

  • Investir em um sistema de gerenciamento de logs que registre tudo.

  • Seguir as práticas recomendadas de segurança da OWASP.

  • Converter caracteres de controle HTML em codificação adequada ao contexto.

  • Nunca permitir que HTML bruto enviado por usuários seja renderizado.

  • Verificar regularmente nossos bancos de dados com scanners de vulnerabilidades web.

3. Use sempre HTTPS

Agentes mal-intencionados podem explorar vulnerabilidades no seu site Drupal HTTP para executar ataques de pharming, phishing e man-in-the-middle (MITM), pois o protocolo HTTP transmite dados em texto simples. Para proteger a conexão entre as duas partes, devemos sempre usar HTTPS. Para isso, precisamos de um certificado SSL, que usa um protocolo seguro para criptografar o tráfego do site.

Os certificados SSL usam criptografia assimétrica e simétrica para proteger as comunicações. Assim, mesmo que nossos dados sejam interceptados, eles não serão úteis para um hacker, pois estarão embaralhados.

4. Aplique o princípio do menor privilégio

É comum que as organizações usem contas privilegiadas. No entanto, essas contas dão mais oportunidades para que agentes mal-intencionados exfiltrem dados dos sistemas e causem danos significativos. Por isso, você deve sempre aplicar o princípio do menor privilégio (POLP), restringindo os direitos de acesso apenas aos recursos necessários para que os usuários concluam suas tarefas.

Aplicar o POLP significa conceder aos usuários somente as permissões mínimas necessárias para concluir suas tarefas — nada além disso. Ao limitar o acesso dos usuários a diferentes partes do nosso site Drupal — além da infraestrutura, dos bancos de dados e dos recursos —, reduzimos a probabilidade de agentes mal-intencionados, de dentro ou de fora da organização, acessarem o que não deveriam. A principal forma de implementar o POLP é atribuir funções definidas por permissões específicas.

No Drupal, os usuários recebem funções com permissões para visualizar e editar conteúdo. Podemos definir as permissões em detalhes na página Permissões. Configurar permissões no Drupal é fácil. Primeiro, acesse o painel Admin, clique no menu Pessoas e, em seguida, em Permissões para conceder acesso aos usuários com base nas funções que eles têm.

As permissões do Drupal se dividem nas seguintes categorias.

Usuário anônimo

A função de usuário anônimo se aplica a quem não está conectado. Em geral, esses usuários recebem permissões somente de leitura e têm o menor nível de acesso.

Usuário autenticado

Usuários autenticados são aqueles que estão conectados. Em geral, têm mais permissões do que os usuários anônimos e sua identidade é verificada por um sistema de login com nome de usuário ou e-mail e senha.

Administrador

O administrador — ou usuário root — tem privilégios de root, que permitem fazer alterações abrangentes no sistema. Tenha sempre cuidado ao acessar nosso site Drupal como administrador root, pois até um pequeno erro pode ter consequências desastrosas para o site.

Controle de acesso baseado em função (RBAC)

Além das permissões descritas acima, o Drupal usa o controle de acesso baseado em função (RBAC). Com o RBAC, o Drupal aplica o POLP e nos permite controlar o que os usuários podem ver e fazer no site. Ao conceder acesso baseado em função e no princípio da necessidade de saber, garantimos que somente pessoas de confiança acessem nossos dados essenciais para os negócios.

5. Reforce a segurança com módulos do Drupal

Um módulo é um conjunto de arquivos JavaScript e PHP que adiciona novos recursos ao site Drupal e amplia suas funcionalidades. O Drupal oferece vários módulos para melhorar a segurança dos sites, incluindo:

Módulo Login Security

O módulo Login Security é essencial para o Drupal e limita o número de tentativas de login inválidas. Ele também pode bloquear determinados endereços IP de forma temporária ou permanente. Além disso, os administradores do Drupal podem configurar o módulo para receber notificações sempre que houver um ataque de força bruta ou outra atividade indesejada.

Security Review

O módulo Security Review verifica se há pequenos erros de desenvolvimento no site que possam deixá-lo vulnerável a ataques. Embora não faça alterações, ele executa um teste de segurança que destaca vulnerabilidades que agentes mal-intencionados podem explorar. Com o relatório em mãos, podemos analisar os pontos destacados e reforçar a segurança do site.

Security Kit

O módulo Security Kit (SecKit) oferece várias opções para identificar vulnerabilidades web comuns, como clickjacking, cross-site scripting e falsificação de requisição entre sites. Ele também ajuda a implementar cabeçalhos de resposta HTTP para evitar ataques MITM.

Módulo Password Policy

O módulo Password Policy, desenvolvido pela comunidade, ajuda a configurar políticas de senha para funções específicas. Ele permite que os administradores do site definam diferentes políticas de senha, cada uma com requisitos (submódulos) que devem ser atendidos antes de uma senha ser alterada. Os requisitos incluem:

  • Letras maiúsculas

  • Letras minúsculas

  • Intervalo

  • Letras e números (alfanumérico)

  • Comprimento

  • Pontuação

  • Nome de usuário

  • Posição dos números

Módulo de autenticação de dois fatores

A autenticação de dois fatores (2FA) adiciona uma camada extra de segurança ao nosso site Drupal, garantindo que somente usuários com autenticação válida tenham acesso. O módulo TFA oferece interfaces para selecionar várias soluções de 2FA, como códigos enviados por SMS, senhas de uso único baseadas em tempo ou códigos gerados previamente.

Mantenha seu CMS Drupal seguro

Com 1 em cada 30 sites usando o Drupal, ele é uma solução popular e confiável para nossos sites. Mas o que torna o Drupal tão seguro?

O Drupal segue os padrões de segurança da OWASP, conta com controles de acesso robustos e granulares e oferece uma base de código segura, monitorada de perto pela equipe de segurança do Drupal. Juntos, esses fatores fazem do Drupal um CMS altamente seguro. Mas isso não significa que ele esteja imune a vulnerabilidades.

Ao usar o Drupal como CMS, precisamos entender a fundo como ocorrem as explorações de vulnerabilidades web e aplicar as práticas recomendadas para proteger nosso site. Além das cinco medidas de segurança apresentadas aqui, podemos implementar análises de segurança de sites e varreduras de vulnerabilidades para manter nossos sites Drupal funcionando com segurança.

Comece a jogar Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo à gravação sob demanda do nosso workshop virtual introdutório.