Serviços de Auditoria de Segurança WordPress

Serviços de Auditoria de Segurança WordPress

5.00/5 - (17 votes)
11 min de leitura
Guia

Uma auditoria de segurança é uma revisão escrita do seu site WordPress. Olho para os plugins e temas, para as contas de utilizador, para a configuração do wp-config.php e do servidor, para os cabeçalhos HTTP, para as cópias de segurança e para os registos. No fim recebe um documento com o que encontrei, ordenado por prioridade, e com a forma de corrigir cada ponto.

Faço a revisão uma vez, com âmbito fechado. Não ofereço vigilância contínua nem testes de intrusão: leio código WordPress desde 2006 e é isso que a auditoria aproveita.

#Quem faz a auditoria?

A WPPoland é Mariusz Szatkowski, programador WordPress desde 2006, com sede em Gdynia, na Polónia. Trabalho sozinho: faço cada auditoria pessoalmente e não passo os seus acessos a ninguém. Mantenho 30 plugins gratuitos no WordPress.org, por isso conheço bem o lado de quem escreve os plugins que depois audito.

#O que inclui a auditoria?

  • Plugins e temas: versões, vulnerabilidades publicadas, plugins abandonados e leitura do código dos plugins personalizados.
  • Contas: administradores, Application Passwords, segundo fator e contas que ninguém reconhece.
  • Configuração: constantes do wp-config.php, permissões de ficheiros, execução de PHP em uploads, XML-RPC e REST.
  • Servidor: cabeçalhos de segurança HTTP, TLS e versão do PHP.
  • Cópias de segurança: onde estão, há quanto tempo e se alguém já testou uma restauração.
  • Registos: vestígios de tentativas de acesso, quando o alojamento os guarda.

#Como decorre o trabalho?

Remotamente, a partir de Gdynia, uma hora à frente de Lisboa. Tudo fica por escrito: e-mail, documento e, quando há código, repositório. Antes do primeiro acesso assinamos um acordo de subcontratação nos termos do artigo 28.º do RGPD.

#Quanto custa?

O preço é individual e depende do tamanho do site, do número de plugins, de haver uma loja WooCommerce e de existir ou não uma infeção ativa. Recebe uma proposta escrita depois de me descrever o site. A remoção de malware e as correções são orçamentadas à parte.

#Como são atacados os sites WordPress

O núcleo do WordPress raramente é a porta de entrada. As intrusões chegam pelos plugins e temas, e quase sempre com os mesmos padrões.

#Vulnerabilidades em plugins

  • Endpoints REST registados com permission_callback => '__return_true', acessíveis sem sessão.
  • XSS armazenado através de shortcodes que imprimem $_GET ou post meta sem wp_kses_post().
  • Upload de ficheiros por handlers AJAX que saltam wp_check_filetype_and_ext().
  • Escalada de privilégios num formulário de definições que grava opções sem verificar current_user_can().

Cruzo os plugins instalados com as bases públicas da WPScan e da Patchstack e depois leio o código dos que recebem dados dos visitantes. Uma base de CVE só lista o que já foi reportado. O código gerado por ferramentas de IA tende a ter exatamente estas falhas, nonces em falta e $_GET sem sanitização; se o seu site foi construído assim, veja também a recuperação de sites feitos por IA.

#Enumeração de utilizadores

?author=1 redireciona para /author/<slug>/ e revela o nome de login. O endpoint /wp-json/wp/v2/users faz o mesmo em instalações que nunca o restringiram. Num site revisto, ambos devolvem 404 ou uma lista vazia para quem não tem sessão.

#XML-RPC e system.multicall

/xmlrpc.php aceita system.multicall, que permite testar muitas palavras-passe num só pedido POST. Se o site não usa a app móvel do WordPress nem o Jetpack, desativo o XML-RPC; se usa, restrinjo-o no servidor ou na firewall do alojamento.

#O que verifico, passo a passo

PassoO que façoFerramentas
1. Verificação externaListas negras (Google Safe Browsing), cabeçalhos HTTP, TLS, versão exposta do WordPressSucuri SiteCheck, curl
2. Integridade dos ficheirosComparação do núcleo e dos plugins com os checksums oficiais, procura de backdoorsWP-CLI (wp core verify-checksums, wp plugin verify-checksums)
3. Plugins e temasPlugins abandonados, vulnerabilidades publicadas, leitura do código personalizadoWPScan, Patchstack, leitura manual
4. Base de dadosAdministradores a mais, opções alteradas, links de spam injetadosWP-CLI, SQL
5. Registos do servidoraccess.log e error.log à procura de tentativas e acessos com sucessoSSH, grep
6. Cópias de segurançaLocalização, retenção e um teste de restauração numa cópiaPainel do alojamento, WP-CLI

#Infeções que encontro com mais frequência

Spam SEO em japonês ou de farmácia. Milhares de páginas injetadas aparecem nos resultados do Google com caracteres estranhos. O Google pode marcar o site e a recuperação nos resultados demora semanas depois da limpeza.

Redirecionamentos maliciosos. O visitante é enviado para sites de apostas ou pornografia, muitas vezes só em telemóveis ou a partir de certos países, o que torna o problema difícil de ver para quem gere o site. A alteração costuma estar no header.php do tema ou no .htaccess.

Backdoors PHP. Ficheiros escondidos em wp-content/uploads ou com nomes parecidos com os do núcleo, que devolvem o acesso ao atacante mesmo depois de mudar as palavras-passe.

O administrador persistente. Um plugin vulnerável permite criar uma conta com a função administrator e um nome inocente como «Suporte». Restaurar a cópia da semana passada não resolve se a conta já lá estava. Por isso comparo wp_users e wp_usermeta com a última cópia limpa em vez de confiar na lista do painel.

Chaves num repositório público. Um .env com credenciais de SMTP ou de um gateway de pagamento publicado no GitHub. Verifico .env, .env.backup e qualquer ficheiro dentro da raiz web que contenha DB_PASSWORD ou padrões _KEY.

#Plugins de IA que executam código

Há uma classe de risco que um scanner de vulnerabilidades não vê: plugins que dão de propósito a um agente de IA a execução de PHP, consultas à base de dados ou operações em ficheiros, através de MCP, CLI ou webhook. Não há CVE para registar, porque a função está documentada. O risco passa para a autenticação e para quem guarda as chaves.

Em cada auditoria acrescento cinco verificações:

  1. Inventário dos plugins que declaram execução de código, acesso à base de dados ou operações em ficheiros por IA.
  2. Para cada um: se o endpoint exige autenticação e se está acessível a partir da Internet.
  3. Onde estão as credenciais (wp-config.php, tabela de opções, variáveis de ambiente) e quem as consegue ler.
  4. Se as operações ficam registadas de forma que permita reconstruir o que aconteceu.
  5. A minha recomendação por omissão: fora da produção; em staging só com allowlist de IP.

Classifico estes achados ao lado das backdoors em uploads, porque o efeito prático é o mesmo: alguém de fora pode alterar ficheiros e dados.

#Hardening que recomendo no relatório

Cada recomendação do documento traz o motivo e o comando ou a linha de configuração. As mais frequentes:

  • wp-config.php: DISALLOW_FILE_EDIT para desligar o editor de código no painel, FORCE_SSL_ADMIN, ficheiro com permissões restritas e, quando o alojamento o permite, fora da raiz web. As chaves de API de pagamentos (Stripe, ifthenpay, Easypay) ficam em variáveis de ambiente, não no código.
  • Segredos: renovação dos oito salts com o gerador do WordPress.org, que termina todas as sessões, e revogação das Application Passwords que não pertencem a uma integração conhecida.
  • Login: segundo fator com TOTP para todos os administradores e limite de tentativas em /wp-login.php ao nível do servidor ou da firewall do alojamento.
  • Ficheiros: execução de PHP bloqueada em wp-content/uploads (.htaccess ou bloco location no nginx), listagem de diretórios desligada, xmlrpc.php fechado quando não é usado.
  • Verificação de integridade: wp core verify-checksums e wp plugin verify-checksums --all como rotina, para que uma alteração num ficheiro do núcleo não passe despercebida.

Aplicar estas medidas é trabalho à parte. Pode fazê-lo o seu programador a partir do documento, ou posso fazê-lo eu dentro da manutenção WordPress, com as atualizações testadas primeiro em staging.

#O que recebe no fim

  • Documento com os achados, cada um com prioridade (crítica, alta, média, baixa), a prova (excerto de registo, linha de código, cabeçalho HTTP) e a referência CVE quando existe.
  • Instrução de correção para cada achado, escrita para que o seu programador a aplique sem rondas de perguntas.
  • Lista do que não consegui verificar, por exemplo registos que o alojamento não guarda, para que saiba onde ficou um ponto cego.

Se encomendar também as correções, volto a verificar cada ponto do documento depois de aplicadas. Não prometo um site que nunca mais seja atacado.

#Site atacado: o que fazer na primeira hora

  1. Não apague nada. Faça uma cópia dos ficheiros e da base de dados tal como estão. Os ficheiros infetados mostram por onde o atacante entrou.
  2. Mude as palavras-passe a partir de um dispositivo limpo: painel WordPress, alojamento, SFTP, base de dados, chaves de API de pagamentos e de e-mail. Termine todas as sessões.
  3. Ponha o site em manutenção se estiver a servir malware, a redirecionar visitantes ou a recolher dados de formulários e pagamentos.
  4. Peça ao alojamento o access.log e o error.log e pergunte durante quanto tempo os guarda.
  5. Abra o Google Search Console. Um proprietário desconhecido é sinal comum de intrusão; remova-o depois de ter a cópia.
  6. Anote a hora em que confirmou a intrusão. É daí que contam os prazos do RGPD.

#Como decorre a limpeza?

Trabalho numa cópia. Primeiro procuro o ponto de entrada (registos, checksums do núcleo e dos plugins), depois removo o malware e as backdoors dos ficheiros e da base de dados, verifico as contas de administrador e as tarefas cron, reinstalo o núcleo e os plugins a partir de fontes limpas e renovo todos os segredos. Se o Google tiver marcado o site, peço a revisão na Search Console. A duração depende do número de ficheiros infetados e de haver registos, por isso só a estimo depois de ver o site.

#É obrigatório comunicar uma violação de dados?

Quem decide é o responsável pelo tratamento, ou seja, a sua empresa, não quem faz a limpeza. O artigo 33.º do RGPD obriga a notificar a autoridade de controlo, em Portugal a CNPD, sem demora injustificada e, sempre que possível, até 72 horas depois de ter conhecimento da violação, a menos que esta não seja suscetível de resultar num risco para os direitos e liberdades das pessoas. Quando o risco é elevado, o artigo 34.º exige também comunicar aos titulares dos dados. Toda a violação, notificada ou não, tem de ficar documentada internamente (artigo 33.º, n.º 5). Da minha parte recebe os factos de que o seu jurista precisa: se havia dados pessoais na base de dados, se houve acesso a eles e desde quando.

Fontes: texto do RGPD no EUR-Lex, orientações 9/2022 do CEPD sobre notificação de violações, CNPD.

#Que acessos são necessários

  • Uma conta de administrador WordPress temporária, com segundo fator, criada para a auditoria e apagada no fim.
  • Acesso SSH ou SFTP ao servidor, de preferência só de leitura. Sem ele não consigo verificar checksums com WP-CLI, permissões nem registos, e parte do site fica por ver.
  • Uma lista curta das integrações: nome do plugin ou serviço e para que serve. Ajuda-me a decidir que código ler primeiro.

Ajudam ainda o acesso à Google Search Console e os alertas antigos do Wordfence, do Sucuri ou do Patchstack, se os tiver. Se faltar algum acesso, o documento diz o que ficou por verificar.

#Pedir uma auditoria

Escreva-me pelo formulário de contacto com o endereço do site, o alojamento e o motivo: suspeita de intrusão, relançamento, mudança de quem gere o site. Recebe por escrito o âmbito e uma proposta. Um exemplo de como analiso plugins desatualizados com CVE publicadas está no caso de auditoria de segurança WordPress.

Antes disso pode ver o site por si: a verificação de site WordPress carrega a versão pública de um endereço e mostra números medidos, incluindo os cabeçalhos e os pedidos que bloqueiam a primeira pintura. O resultado é imediato e não pede e-mail.

Recomendações do LinkedIn

Recomendações e opiniões sobre o trabalho com a WPPoland

Recomendações selecionadas de líderes das comunidades WordPress, WordCamp e e-commerce - com ênfase no cumprimento de prazos, profundidade técnica e abordagem orientada ao negócio no desenvolvimento WordPress.

Karolina Czapla

Karolina Czapla

Estratega de Marketing, Performance & Digital Strategy

“Trabalhar com o Mariusz no WordCamp mostrou‑me como é raro combinar competências técnicas profundas com verdadeira liderança. Planeia, coordena e entrega com precisão, dando ao mesmo tempo espaço para a equipa crescer. Q...”

Co‑organizadora, WordCamp Gdynia 2024 & 2025

Anna Kamińska

Anna Kamińska

Talent Acquisition Specialist / HR People Partner

“O portefólio do Mariusz fala por si. Reflete precisão, versatilidade e um forte sentido de responsabilidade. Pode confiar nele para conduzir um projeto da ideia até à entrega, mantendo todas as partes informadas.”

Trabalhámos na mesma equipa

Sarah‑Luisa Kwolek

Sarah‑Luisa Kwolek

Gestora de Projetos TI & Product Owner, Web/App

“Durante mais de dois anos pude sempre contar com o Mariusz para tarefas WordPress, desde styling e templates até integrações. Traz estabilidade à equipa e mantém a parte de frontend sob controlo.”

Mariusz foi seu cliente em projetos WordPress

Argert Boja

Argert Boja

Senior Full‑Stack Developer

“Mariusz é o colega de equipa que todos gostariam de ter: fortes competências full‑stack em WordPress, explicações claras e uma atitude positiva mesmo sob pressão. Move‑se facilmente entre plugins, performance e layouts G...”

Trabalhámos juntos em projetos WordPress

Varun Patil

Varun Patil

Líder de Growth & CRM

“Para além do desenvolvimento, o Mariusz entende SEO, analytics e growth. Fala diretamente com stakeholders, faz as perguntas certas e entrega soluções que mexem nos indicadores de negócio, de AMP a tracking e performance...”

Foi gestor do Mariusz em iniciativas de growth

Rafał Osiński

Rafał Osiński

Founder @ EasyTrips.pl, Senior WordPress Dev

“Conheço o Mariusz da comunidade WordPress há muitos anos. É fiável, muito envolvido e está sempre presente, em meetups, WordCamps e projetos. Se procura colaboração a longo prazo e alguém que trate o seu site como se fos...”

Co‑organizador da comunidade WordUp Trójmiasto & WordCamp

Daniel Blossfeld

Daniel Blossfeld

Consultor de Otimização de Processos e Digitalização

“Tive o prazer de trabalhar com o Mariusz por quase três anos. Durante esse tempo, as suas habilidades de desenvolvimento WordPress provaram ser inestimáveis em uma variedade de projetos, desde a construção de websites at...”

Mariusz foi seu cliente em projetos WordPress

Natalie Wiszczor

Natalie Wiszczor

Gestora de CRM e E-mail Marketing

“Tive o grande prazer de trabalhar com o Mariusz por mais de 4 anos na área técnica. Durante esse tempo, ele provou ser um colega competente e confiável. O que se destacou em particular foi a sua natureza amigável e a sua...”

Trabalhou com Mariusz em equipas diferentes

Mark Chalklen

Mark Chalklen

Head of Design & Build na Itineris Limited

“Mariusz é um ótimo membro da equipa, sempre feliz em se dedicar a qualquer tarefa e aprender coisas novas. Um ótimo comunicador e um cara legal para trabalhar. Difícil de vencer na nossa tabela de classificação semanal d...”

Geriu Mariusz diretamente

Jessica Di Pasquale

Jessica Di Pasquale

Liderando iniciativas de SEO com estratégias de crescimento baseadas em dados.

“Mariusz é um cara muito habilidoso, paciente e experiente. Sempre pronto para ajudar e corrigir erros, eu realmente apreciei trabalhar com ele. Ele é um ótimo colega!”

Geriu Mariusz diretamente

Biki John

Biki John

Apaixonado por Marketing de Conteúdo e Entusiasta de SEO

“Foi ótimo trabalhar com o Mariusz. Eu realmente apreciei o seu vasto conhecimento de WordPress e como isso foi útil sempre que precisei de suporte para navegar no CMS. Elogio totalmente o Mariusz pela sua paciência, bom ...”

Trabalhou com Mariusz em equipas diferentes

Rafal Borowiec

Rafal Borowiec

Desenvolvedor de Software, Consultor, Gerente e Professor

“Tive a oportunidade de trabalhar com o Mariusz por 7 meses. Ele se destaca na otimização técnica para motores de busca (SEO). Mariusz também possui forte experiência em desenvolvimento AMP, GTM e GA. Mariusz se sente mui...”

Geriu Mariusz diretamente

Belinda Koch

Belinda Koch

Analista de Web-Tracking na TUI

“Mariusz é uma ótima pessoa para trabalhar. Ele é extremamente motivado para aprender coisas novas e compartilhar o seu conhecimento, e é muito experiente em uma ampla gama de tópicos. Trabalhamos juntos em tópicos de aná...”

Trabalhou com Mariusz em tópicos de análise digital e rastreamento

Ali Nezamolmaleki

Ali Nezamolmaleki

Crescimento, SEO, Pensamento Analítico, AMP

“Mariusz é uma pessoa extremamente talentosa na sua área de trabalho. Ele é sempre capaz de dar uma nova perspetiva para resolver problemas e pensar fora da caixa em situações onde tudo parece estar bloqueado. Trabalhar c...”

Trabalhou com Mariusz na mesma equipa

Karol Jakubcewicz

Karol Jakubcewicz

Desenvolvedor Front-end / JavaScript

“Mariusz é um desenvolvedor WordPress e especialista SEO/SEM incrivelmente experiente com quem tive o prazer de trabalhar por quase dois anos. Ele foi uma das figuras-chave responsáveis pela melhoria constante do tempo de...”

Trabalhou com Mariusz na mesma equipa

Paweł Lewczuk

Paweł Lewczuk

Desenvolvedor Front-end, Desenvolvedor WordPress

“Colaborei com o Mariusz em vários projetos e a nossa cooperação foi sempre exemplar. Acredito que há muitos mais projetos conjuntos à nossa frente. Altamente recomendado!”

Mariusz foi cliente do Paweł

Przemek Wroblewski

Przemek Wroblewski

Desenvolvedor de Software com mais de 20 anos de experiência

“Encontrei no Mariusz alguém com grande experiência e conhecimento profundo de soluções frontend. Um desenvolvedor WordPress poderoso, experiente e responsável. Tem facilidade em construir relações interpessoais. Tinha a ...”

Trabalhou com Mariusz em equipas diferentes

Perguntas frequentes

Perguntas sobre escopo, entrega, custos e qualidade.

Como sei se o meu site WordPress foi atacado?#
Os sinais mais comuns: aviso do Chrome 'Deceptive site ahead', contas de administrador que ninguém criou, páginas de spam (muitas vezes em japonês) nos resultados do Google, redirecionamentos só em telemóveis, ficheiros PHP em wp-content/uploads e avisos de malware enviados pelo alojamento. Qualquer um destes justifica olhar para os registos do servidor antes de apagar ficheiros.
Com que frequência deve ser feita uma auditoria de segurança WordPress?#
Depende do site. Recomendo uma revisão depois de um incidente, antes de uma migração ou relançamento, quando muda quem gere o site e quando entram plugins novos que recebem dados dos visitantes. Uma loja com dados de clientes justifica revisões mais frequentes do que um site institucional estático.
Quais são as vulnerabilidades mais comuns no WordPress?#
Quase sempre estão nos plugins e temas, não no núcleo: endpoints REST sem verificação de permissões, XSS através de shortcodes, uploads que aceitam ficheiros executáveis, SQL montado com concatenação. Somam-se palavras-passe fracas sem segundo fator e permissões de ficheiros que ninguém reviu depois do lançamento.
Posso fazer uma auditoria de segurança sozinho?#
Uma primeira verificação sim: o Wordfence ou o Sucuri SiteCheck encontram versões vulneráveis e malware conhecido. O que estes scanners não fazem é ler o código dos plugins personalizados, comparar as contas de administrador com uma cópia limpa ou rever a configuração do servidor. É essa parte que faço à mão.
O que devo fazer logo após uma intrusão?#
Faça uma cópia dos ficheiros e da base de dados tal como estão, mude todas as palavras-passe a partir de um dispositivo limpo, ponha o site em manutenção se estiver a servir malware, peça ao alojamento os registos de acesso e anote a hora em que confirmou a intrusão. Só depois se limpa.
O que recebo no fim da auditoria?#
Um documento escrito com cada achado, a prova (excerto de registo, linha de código ou cabeçalho), a prioridade (crítica, alta, média, baixa) e a instrução de correção, escrita para que o seu programador a aplique sem perguntas adicionais. Indico também o que não foi possível verificar por falta de acesso.
Também corrige os problemas encontrados?#
Se quiser, sim, como trabalho separado com âmbito próprio: remoção de malware, atualização ou substituição de plugins, configuração do servidor e do login. Depois das correções volto a verificar cada ponto do relatório. Não prometo que o site nunca mais seja atacado; prometo que os achados do documento ficam fechados ou explicados.

Precisa de FAQ adaptado ao setor e mercado? Crio uma versão alinhada com os seus objetivos de negócio.

Fale connosco

Veja o que o seu site mostra em público

Indique o endereço de um site que gere. Nós obtemo-lo como faria um navegador e mostramos o que daí decorre, junto com aquilo que lemos exactamente.

Obtemos páginas públicas no endereço que nos der, nunca fazemos login e não guardamos nada além de um contador anónimo de execuções.

Artigos Relacionados