Como auditar acessos remotos e chaves API no site da sua empresa

Como auditar acessos remotos e chaves API no site da sua empresa

Última verificação: 24 de outubro de 2026
18 min de leitura
Guia
Auditor de segurança

Em outubro de 2026, dois fornecedores de plugins WordPress tiveram de avisar os clientes de que um canal de confiança tinha sido usado contra eles. Os atacantes entraram por ligações que os próprios donos dos sites tinham aprovado, por vezes sem saber. Este guia serve qualquer empresa com site ou loja online, seja em WordPress, WooCommerce, Shopify ou código próprio: mostra como listar os serviços que têm uma chave para o seu site, revogar as que já não fazem falta, renovar as restantes e o que exigir por escrito a fornecedores e agências.

#O que aconteceu no incidente do UpdraftCentral

No aviso de incidente da TeamUpdraft, a empresa explica que detetou acesso não autorizado a teamupdraft.com no fim de semana de 17 e 18 de outubro e acredita que a base de dados de clientes foi lida. Continha nomes, endereços de email, palavras-passe em hash, definições de autenticação de dois fatores e as chaves de ligação do UpdraftCentral, UpdraftVault e UpdraftClone. Dados de cartão não eram guardados. O atacante usou a ligação aos sites dos clientes para criar contas de administrador e instalar plugins maliciosos, e mais tarde a TeamUpdraft alertou para um padrão de contas inesperadas com a função de editor. O UpdraftPlus 1.26.13 (gratuito) e 2.26.13 (Premium), publicados a 19 de outubro, desligam todas as ligações ao UpdraftCentral criadas antes das 13:07 (hora britânica) de 18 de outubro.

A análise da Patchstack explica por que as proteções habituais não serviram. Os comandos vinham assinados com chaves verdadeiras do painel, por isso passavam em todas as verificações do plugin. Um site ligado executa qualquer comando assinado com as permissões do utilizador que criou a ligação, e ninguém confirma comandos um a um. Muitos donos nunca escolheram isto: ao ligar uma conta TeamUpdraft.com, a caixa que adicionava o site ao UpdraftCentral vinha assinalada por omissão. As chaves também não expiravam, e a Patchstack viu chaves de novembro de 2025 a funcionar em outubro de 2026. As contas da porta das traseiras apareciam como editores, mas tinham as capacidades manage_options e install_plugins, pelo que uma revisão da lista de administradores não as mostrava.

#O que aconteceu com o download do Rank Math PRO

Segundo o comunicado do Rank Math, a versão PRO 3.0.123 descarregada entre as 20:02 UTC de 15 de outubro e as 07:12 UTC de 16 de outubro continha malware. A 3.0.124 é a versão limpa, e a versão gratuita do WordPress.org não foi afetada. Quem ativou a versão infetada deve partir do princípio de que todos os segredos do site foram expostos e mudar: palavras-passe do WordPress, credenciais da base de dados, chaves e salts do wp-config.php, chaves dos gateways de pagamento, credenciais SMTP, outras chaves API, acessos ao alojamento, FTP e SSH, e rever a autenticação de dois fatores dos administradores.

Esta lista descreve bem o que um site guarda. O seu site guarda chaves para sistemas de terceiros, e sistemas de terceiros guardam chaves para o seu site. A auditoria cobre as duas direções. O contexto mais amplo está no nosso artigo sobre ataques à cadeia de fornecimento no WordPress em 2026.

#Como saber quem tem acesso ao meu site

Reúna a lista a partir de três sítios: o próprio site (utilizadores, plugins ou apps, definições), as contas da empresa (faturas, gestor de palavras-passe, a caixa de email onde chegam as confirmações de registo) e a infraestrutura (DNS, CDN, painel do alojamento, repositório de código). Para cada entrada anote o serviço, o que pode fazer, quem criou a chave, onde está a chave nas duas pontas, quando foi usada pela última vez e quem na empresa é responsável. Uma entrada sem responsável é a primeira candidata a ser apagada.

#Painéis de gestão de vários sites

UpdraftCentral, ManageWP, MainWP e Jetpack ligam-se ao site através de um componente instalado no WordPress: o UpdraftPlus traz o cliente do UpdraftCentral, o ManageWP usa o plugin ManageWP Worker e o MainWP o plugin MainWP Child. A outra metade das credenciais fica nos servidores do fornecedor ou num servidor da agência. Reveja a lista de plugins, incluindo o separador de plugins obrigatórios (must-use), e pergunte à sua agência que painéis utiliza. A lição da Patchstack vale para qualquer produto deste tipo: remover o site do painel não chega, porque a chave que conta está guardada no site.

#Apps da loja e integrações com acesso à API

Na Shopify, abra as definições, a secção de apps, e clique em cada uma. Segundo a documentação da Shopify, a página da app mostra as áreas da loja que pode ver ou editar e a data da última atividade em cada área. As permissões não usadas nos últimos 30 dias aparecem numa subsecção própria de acesso não utilizado. O âmbito read_all_orders alarga o acesso para além da janela habitual de encomendas dos últimos 60 dias (âmbitos de acesso), por isso pergunte por que motivo a app precisa dele. Antes de desinstalar, exporte os dados de que precisa, porque algumas apps guardam dados que não podem ser recuperados depois.

No WooCommerce, as chaves estão nas definições do WooCommerce, em avançado, REST API. Cada chave está associada a um utilizador do WordPress e tem acesso de leitura, escrita ou ambos, e o segredo só é mostrado uma vez (documentação do WooCommerce). Verifique a quem pertence cada chave e se essa pessoa ainda trabalha consigo. O mesmo vale para as chaves de MB WAY ou Multibanco guardadas nas definições do plugin de pagamentos.

#Palavras-passe de aplicação e contas técnicas

As palavras-passe de aplicação permitem que uma ferramenta entre na REST API com Basic Auth. Criam-se e revogam-se no ecrã de edição do utilizador. O núcleo do WordPress não limita o seu âmbito: o guia de integração refere essa limitação como desenvolvimento futuro, por isso uma palavra-passe de aplicação pode fazer tudo o que o seu utilizador pode. O WordPress regista a última utilização (com precisão de um dia) e o último endereço IP. Com WP-CLI:

wp user list --role=administrator
wp user list --role=editor
wp user application-password list 1 --fields=name,created,last_used,last_ip

A lista de editores faz parte da revisão depois do caso UpdraftCentral, porque as contas da porta das traseiras tinham precisamente essa função.

#Tokens de CDN e DNS

Um token com permissão de edição de DNS basta para desviar o domínio ou os registos de email. Na Cloudflare, um token API fica limitado às permissões e zonas escolhidas e pode ainda ser restringido por endereço IP e por prazo de validade (criar um token). A antiga Global API key tem acesso a todos os recursos do utilizador com as permissões completas dele, e a Cloudflare desaconselha-a em novas configurações (Global API key). Se um plugin, um processo de CI ou um script de limpeza de cache ainda a usa, substitua-a por um token limitado a uma zona.

#Chaves de implementação no GitHub

Uma chave de implementação (deploy key) do GitHub é uma chave SSH com acesso a um único repositório. Por omissão só lê, e com permissão de escrita pode fazer o mesmo que um membro da organização com acesso de administrador. Segundo a documentação do GitHub, estas chaves não têm data de expiração, normalmente não têm frase-passe e continuam ativas quando a pessoa que as adicionou é removida do repositório. Reveja-as nas definições do repositório, na secção de chaves de implementação: apague as que não reconhece e aprove as válidas.

#Chaves de pagamento, email e cópias de segurança

A Stripe permite criar chaves restritas com as permissões que escolher, e ao rodar uma chave no painel decide quando expira a antiga: de imediato ou após um prazo que dá tempo à integração para mudar (chaves API da Stripe). A palavra-passe SMTP ou a chave API do serviço de email está num plugin ou no wp-config.php; onde exatamente, mostramos no guia de SMTP.

Uma cópia de segurança contém a base de dados completa, com dados de clientes e todas as chaves guardadas nas definições. A TeamUpdraft desligou todos os sites do UpdraftVault e emitiu novas credenciais, e recomendou aos sites acedidos através do UpdraftCentral que voltassem a autorizar o armazenamento remoto (Google Drive, Dropbox, Amazon S3) e mudassem as chaves de acesso. Verifique quem pode ler o armazenamento das cópias e se a ferramenta de cópias pode apagar versões antigas.

#Chaves de sistemas de faturação e ERP

Atualização, . Um plugin WooCommerce ou uma app Shopify que emite faturas num sistema externo guarda a chave API desse sistema. No seu comunicado sobre o incidente, o serviço polaco de faturação Fakturownia informou que entre 27 de setembro de 2026 (cerca das 3h20) e 28 de setembro de 2026 (cerca das 17h45) uma pessoa não autorizada teve acesso aos seus sistemas e copiou grande parte da base de dados, incluindo tokens API e chaves de integração guardados nas definições das contas. O incidente afeta todas as contas. Na noite de 28 para 29 de setembro, a empresa substituiu os tokens API dos clientes e, desde então, as chaves antigas só funcionam a partir dos endereços IP que os utilizadores da conta tinham usado antes. As integrações configuradas no separador “Integracje i dodatki” (integrações e extras) não foram afetadas. Para as restantes, a Fakturownia recomenda gerar chaves novas e introduzi-las nas integrações e, nas de fornecedores externos, combinar primeiro com o fornecedor quando o fazer.

Quanto aos dados de clientes introduzidos na conta, a empresa que usa a Fakturownia é responsável pelo tratamento e a Fakturownia é subcontratante. O RGPD reparte as obrigações assim:

  • o subcontratante notifica o responsável pelo tratamento sem demora injustificada após ter conhecimento da violação (artigo 33.º, n.º 2); segundo a Fakturownia, o email enviado aos titulares das contas a partir de 1 de outubro de 2026 é essa notificação,
  • o responsável pelo tratamento notifica a autoridade de controlo (em Portugal, a Comissão Nacional de Proteção de Dados, CNPD) sem demora injustificada e, sempre que possível, até 72 horas após ter tido conhecimento da violação, a menos que esta não seja suscetível de resultar num risco para os direitos e liberdades das pessoas singulares; se a notificação não for feita no prazo de 72 horas, é acompanhada dos motivos do atraso (artigo 33.º, n.º 1),
  • quando a violação for suscetível de implicar um elevado risco para os direitos e liberdades das pessoas singulares, o responsável comunica-a aos titulares dos dados sem demora injustificada (artigo 34.º, n.º 1),
  • o responsável documenta todas as violações, incluindo as que não notifica (artigo 33.º, n.º 5).

Em Portugal, a CNPD indica que a notificação deve ser feita no prazo de 72 horas após o conhecimento da violação, através do formulário específico que disponibiliza no seu site. A mesma página lembra que o responsável está obrigado a documentar quaisquer violações de dados, nos termos do n.º 5 do artigo 33.º do RGPD, mesmo quando conclui que a notificação não é necessária.

Na auditoria, substitua a chave do sistema de faturação após qualquer comunicado de incidente do fornecedor e verifique se a pode limitar ao endereço IP do servidor da sua loja. A Fakturownia aplicou esse tipo de limitação às chaves antigas depois do incidente.

#Lista de verificação de acessos ao site e à loja

Tipo de serviçoOnde está a chaveComo revogarQuando renovar
Painel de gestão (UpdraftCentral, ManageWP, MainWP, Jetpack)Definições do plugin de ligação no site e painel do fornecedor ou da agênciaApagar primeiro a chave no site, depois o site do painelIncidente no fornecedor, mudança de agência, painel sem uso
App ShopifyPermissões da app nas definições da lojaExportar dados, desinstalar a appAcesso não utilizado, incidente no fornecedor, app dispensável
Chave REST API do WooCommerceDefinições do WooCommerce, associada a um utilizador WordPressLigação de revogação junto à chaveSaída do utilizador associado, troca de integração
Palavra-passe de aplicação do WordPressPerfil do utilizador, guardada em hashRevogar no perfil ou com WP-CLISem uso desde a última auditoria, saída da pessoa, intrusão
Token de CDN ou DNS (Cloudflare)Conta Cloudflare e a ferramenta que chama a APIApagar o token no perfil CloudflareToken visto em logs ou repositório, saída de pessoa ou ferramenta
Chave de implementação (GitHub)Chave privada no servidor, pública nas definições do repositórioApagar na secção de chaves de implementaçãoServidor reconstruído ou comprometido, mudança de agência
Chave de pagamento (Stripe, MB WAY, Multibanco)Definições do plugin da loja ou variáveis de ambienteRodar com prazo de expiração para a chave antigaIntrusão, fim da colaboração com o programador
Chave de um sistema de faturação ou ERPDefinições do plugin da loja e conta no sistema de faturaçãoGerar uma chave nova no sistema de faturação e substituí-la na lojaIncidente no fornecedor (ex.: Fakturownia, setembro de 2026), mudança de sistema
Chave de email ou SMTPPlugin SMTP, wp-config.php, variáveis de ambienteApagar a chave no fornecedor de emailIntrusão, troca de plugin ou fornecedor
Credenciais do armazenamento de cópiasDefinições do plugin de cópias e permissões no fornecedor de armazenamentoRevogar no fornecedor e voltar a autorizarIncidente no fornecedor, intrusão

#Como revogar uma chave API sem parar o site

Num site saudável, siga esta ordem: descubra o que usa a chave (descrição, última utilização, registos da ferramenta), crie uma substituta com permissões mais estreitas, coloque-a na ferramenta e confirme que funciona, e só então revogue a antiga. Durante alguns dias, vigie encomendas falhadas, emails em falta e implementações interrompidas. O prazo de expiração da Stripe existe precisamente para esta troca.

Num site comprometido, a ordem inverte-se: revogue primeiro e volte a ligar depois as integrações que pararem. As instruções da TeamUpdraft para utilizadores do UpdraftCentral seguem essa lógica: entrar diretamente em cada site, atualizar, apagar a chave de ligação, remover contas e plugins desconhecidos, mudar as palavras-passe de administrador e só depois voltar a ligar. Se a chave tem duas pontas, revogue nas duas. Uma chave apagada apenas no painel do fornecedor pode continuar a ser aceite pelo site, e uma chave apagada apenas no site pode continuar na base de dados do fornecedor.

#Quando renovar chaves API

Renove quando algo acontece, porque um calendário sozinho não teria ajudado ninguém em outubro de 2026. Vale a pena escrever nos procedimentos:

  • um incidente de segurança num fornecedor que tem uma chave para o seu site ou recebe uma dele,
  • código malicioso que correu no site, ou seja, tudo o que está na lista do Rank Math acima,
  • a saída de um colaborador, freelancer ou agência com acesso,
  • uma chave encontrada onde não devia estar: num repositório, num pedido de suporte, numa troca de emails, numa captura de ecrã,
  • a substituição de uma integração por outra ferramenta.

Junte uma revisão fixa por ano e apague todas as chaves que ninguém sabe explicar. Chaves sem data de expiração, como as chaves de implementação do GitHub ou as chaves do UpdraftCentral que a Patchstack analisou, continuam válidas até alguém as remover.

#Como renovar chaves API em cada plataforma

A ordem descrita acima aplica-se a todas, mas cada plataforma tem os seus próprios comandos. Os passos seguintes vêm da documentação dos fornecedores em outubro de 2026.

PlataformaComo renovarO que verificar antes de revogar
StripeRodar a chave no painel e escolher a data de expiração da antiga; antiga e nova funcionam em paralelo até 7 diasRegistos de pedidos da chave antiga no Workbench a zero durante horas ou dias
Shopify (Dev Dashboard)Settings, Credentials, Rotate; o segredo antigo continua ativo até ser revogadoTodos os tokens guardados substituídos; webhooks a aceitar as duas assinaturas
Shopify (app antiga criada no admin)Não permite rodar o segredo: desinstalar e voltar a instalar a appDados exportados antes de desinstalar
CloudflareCriar ou rolar o token com filtro de IP e TTLFerramenta que chama a API já com o novo segredo
GitHubToken fine-grained com repositórios selecionados e prazo de 1 a 366 diasChaves de implementação criadas com o token antigo
WooCommerceNova chave com descrição, utilizador próprio e permissão mínima; depois revogar a antigaIntegração a funcionar com a nova chave

Alguns pormenores fazem diferença. No Stripe, segundo a documentação, cada chave de produção deve ter uma política de acesso: limita a chave a endereços IPv4 ou intervalos CIDR, ou a um ASN e a um país, e pode bloquear VPN anónimas, proxies públicos e nós de saída Tor. Quando um pedido viola a política, o Stripe bloqueia-o e envia-lhe uma notificação, o único alerta automático desta lista. Na Shopify, desde 1 de janeiro de 2026 as apps personalizadas criam-se no Dev Dashboard e as criadas no admin antes dessa data continuam a ser geridas no admin (apps personalizadas); o guia de rotação explica que a Shopify assina webhooks com o segredo mais antigo não revogado e que, se um segredo estiver a ser usado de forma abusiva, deve revogá-lo primeiro. Na Cloudflare, sem regra de IP qualquer endereço pode usar o token, a regra Is in limita-o a endereços ou intervalos CIDR e um token sem data de fim nunca expira (restringir tokens). No GitHub, o prazo predefinido de um token é de 30 dias, os tokens sem uso durante um ano são removidos e apagar um token com o qual se criou uma chave de implementação apaga também essa chave (gerir tokens).

#O que revogar quando sai um colaborador ou a agência

No dia em que o acesso termina:

  1. No WordPress, apague as palavras-passe de aplicação da pessoa, termine as sessões dela e elimine a conta, atribuindo os artigos a outro utilizador (WP-CLI):
wp user application-password delete 123 --all
wp user session destroy 123 --all
wp user delete 123 --reassign=2
  1. No WooCommerce, revogue as chaves REST API ligadas a esse utilizador.
  2. Na Shopify, remova a conta de funcionário ou colaborador e reveja as apps que instalou.
  3. Na Cloudflare, apague ou role os tokens que a pessoa criou e consulte os Audit Logs do período em que teve acesso, que ficam guardados 18 meses (registos de auditoria).
  4. No GitHub, retire a pessoa do repositório ou da organização e revogue os tokens fine-grained dela nas definições da organização (rever tokens). As chaves SSH criadas por um token revogado continuam a funcionar e têm de ser apagadas à parte.
  5. No Stripe, rode todas as chaves secretas ou restritas a que a pessoa teve acesso; o Stripe indica a saída de um membro da equipa como motivo para rodar.

#O que exigir à agência e aos fornecedores de software

Uma agência que mantém o seu site cria chaves em seu nome. O Decreto-Lei n.º 125/2025, que transpõe a NIS2 e reforça o CNCS como autoridade nacional de cibersegurança, dedica o artigo 28.º à cadeia de abastecimento, incluindo as relações de cada entidade com os seus fornecedores e prestadores de serviços diretos. Mesmo que a sua empresa não esteja abrangida, estes pontos devem constar do contrato:

  • um registo de todas as chaves, tokens e contas que a agência cria, com finalidade e responsável, entregue a pedido e no fim do contrato,
  • chaves criadas nas suas próprias contas sempre que a plataforma o permita, por exemplo um token Cloudflare na sua conta limitado à sua zona, para que a revogação não dependa da agência,
  • uma chave por site e por ferramenta, e contas nominais em vez de um login partilhado da agência,
  • revogação de todos os acessos num número de dias acordado após o fim do contrato, confirmada por escrito,
  • um prazo de notificação de incidentes. Uma agência com acesso a dados de clientes é em regra subcontratante, por isso precisa de um contrato nos termos do artigo 28.º do RGPD. Pelo artigo 33.º do RGPD, o subcontratante notifica o responsável sem demora injustificada, e o responsável tem 72 horas, sempre que possível, para notificar a CNPD. Escreva um número concreto de horas no contrato.

Antes de instalar software com funções remotas, pergunte ao fornecedor se a ligação remota vem ativa por omissão e se as chaves expiram. No UpdraftCentral, a Patchstack encontrou uma caixa já assinalada e chaves sem prazo de validade.

Faço esta revisão no âmbito da auditoria de segurança WordPress e mantemos o registo de chaves atualizado na manutenção de sites WordPress. Em lojas WooCommerce faz parte do plano de fiabilidade da loja, e em lojas Shopify revemos as permissões das apps no trabalho de desenvolvedor Shopify. Para perceber como as atualizações de plugins chegam ao site e onde uma versão adulterada pode passar, leia sobre o atraso de atualizações no WordPress.org e sobre quatro backdoors em plugins num mês.

Próximo passo

Transforme o artigo numa implementação real

Este bloco reforça a ligação interna e conduz o leitor para o passo seguinte mais útil dentro da arquitetura do site.

Explorar outros serviços WordPress e base de conhecimento

Perguntas frequentes

Respostas práticas para aplicar o tema na execução real.

Basta remover o site do painel do UpdraftCentral#
Não. A Patchstack sublinha que a chave que conta está guardada no próprio site. Apague-a nas definições do UpdraftPlus de cada site e atualize para a 1.26.13 (gratuita) ou 2.26.13 (Premium), que desligam as ligações anteriores às 13:07 (hora britânica) de 18 de outubro de 2026. Depois reveja os utilizadores, incluindo os editores, e a lista de plugins.
Com que frequência uma empresa deve renovar as chaves API#
Sempre que algo acontece: um incidente num fornecedor ligado, código malicioso no site, uma pessoa ou agência que perde o acesso, ou uma chave que aparece num repositório, pedido de suporte ou email. Além disso, uma revisão fixa por ano para apagar as chaves que ninguém sabe explicar.
Esta auditoria aplica-se a lojas Shopify#
Sim. Na Shopify, as chaves estão nas apps instaladas. A página de cada app nas definições mostra que áreas da loja pode ver ou editar, quando as usou pela última vez e que permissões estão sem uso há 30 dias.
Qual é a diferença entre rodar e apagar um token Cloudflare#
Ao rodar, a Cloudflare gera um novo segredo para o mesmo token e invalida o anterior, mantendo as permissões. Ao apagar, o token desaparece por completo. Rode quando o segredo foi exposto mas a integração continua necessária.

Artigos Relacionados

Ataques à cadeia de fornecimento no WordPress em 2026

Numa única semana de junho de 2026 surgiram a violação do CDN da Awesome Motive, o comprometimento da pipeline de compilação da ShapedPlugin e a exposição de uma campanha de backdoor com 13 anos. O fio comum: o canal oficial de atualização foi o vetor de ataque. O que os donos de lojas devem realmente mudar.