Atualização de 28 de julho de 2026: a retenção é agora de seis horas
A retenção obrigatória nas atualizações automáticas de plugins e temas do WordPress.org passou de 24 horas para seis. Konstantin Obenland, colaborador patrocinado pela Automattic, anunciou a mudança no canal #meta do Slack do WordPress, e The Repository noticiou-a na edição 312, a 24 de julho de 2026.
Seis horas não são o destino final. Segundo a mesma publicação, está em curso trabalho para dispensar o atraso por completo quando o revisor de IA chamado Gandalf não encontra problemas. Nessa altura, a espera deve cair para minutos na maioria das atualizações.
Tudo o que se segue foi escrito quando o atraso era de 24 horas e fica como registo do que essa política custou. Leia os números como o “antes”: a janela de exposição descrita é hoje um quarto do que era e continua a encolher. A forma do problema não mudou. Um diff público à espera atrás de qualquer retenção continua a dar a primeira jogada a quem o ler primeiro, e uma agência capaz de puxar uma versão etiquetada do Git não espera seis horas nem 24.
Introdução
A decisão da equipa de plugins do WordPress.org, em junho de 2026, de introduzir um atraso de 24 horas nas atualizações gerou uma forte discussão entre programadores e administradores de sites. Embora este mecanismo tenha sido anunciado para prevenir atualizações automáticas após os recentes comprometimentos da cadeia de abastecimento (como a intrusão no CDN de plugins da Awesome Motive), o seu alcance real revelou-se muito maior. O bloqueio aplicava-se a todas as atualizações - incluindo as efetuadas manualmente a partir do painel de controlo. Desde 24 de julho de 2026, a retenção é de seis horas, e a equipa de plugins trabalha para a eliminar nas versões que passem limpas pela revisão do Gandalf.
Para agências e equipas que mantêm grandes sites B2B, esta alteração trouxe um risco de segurança considerável. Assim que um programador lança uma correção de segurança, o registo de alterações torna-se público. Hackers e robôs podem analisar o código imediatamente e iniciar ataques, enquanto os administradores ficavam impedidos de atualizar durante um dia inteiro. Esse bloqueio é agora de seis horas. Vamos analisar o mecanismo e ver como proteger os nossos projetos fora do diretório oficial do WordPress.org, seja qual for o relógio em vigor.
A janela de vulnerabilidade: Robôs com vantagem sobre os administradores
O principal problema apontado pela comunidade é a assimetria da informação. Miriam Schwab da Elementor destacou no Slack do WordPress que este atraso cria uma janela ideal para ataques automatizados. Em condições normais, o tempo de resposta a uma vulnerabilidade crítica (por exemplo, Injeção de SQL ou Execução Remota de Código) é medido em minutos. Quando a correção fica disponível, as agências utilizam scripts WP-CLI ou sistemas de gestão (como MainWP, ManageWP) para a sua implementação imediata.
Na versão original da regra, a instalação era bloqueada pelo WordPress.org durante 24 horas após o envio do código pelo autor. Hoje a retenção é de seis horas, mas a assimetria sobreviveu ao corte: o código está visível no repositório público SVN ou GitHub desde o momento do envio. Os robôs podem detetar versões vulneráveis e atacar sites antes que os proprietários tenham a oportunidade de clicar em “Atualizar”.
Outro problema é o reinício do temporizador. Se um programador detetar um erro logo após o lançamento e publicar uma nova correção (por exemplo, a versão 1.0.1 poucas horas após a 1.0.0), o período recomeça. Com as 24 horas, isso podia empurrar a espera por código estável para 48 horas. A publicação de Obenland sobre o corte para seis horas nada diz quanto ao reinício, por isso conte com ele até a equipa de plugins indicar o contrário.
Impacto do atraso nos processos de segurança
Compare o modelo clássico de atualização, o atraso tal como foi introduzido e a regra em vigor hoje:
| Característica | Modelo clássico (até maio de 2026) | Atraso tal como introduzido (junho de 2026) | Atual (desde 24 de julho de 2026) |
|---|---|---|---|
| Disponibilidade de correções de segurança | Imediata após a publicação | Após o período de retenção de 24 horas | Após o período de retenção de seis horas |
| Visibilidade do código (diff) | Pública no SVN/Git | Pública no SVN/Git a partir do envio | Pública no SVN/Git a partir do envio |
| Janela de vulnerabilidade para exploits | Mínima (dependente do administrador) | Fixa (mínimo de 24 horas para todos) | Fixa (seis horas), com dispensa prevista após revisão limpa do Gandalf |
| Comportamento em correções de erros | Nova versão disponível de imediato | Reinicia o temporizador de 24 horas | Reinicia o temporizador de retenção |
| Trabalho das equipas DevOps / SecOps | Planeado de imediato | Adiado ou gerido através do Composer | No mesmo dia útil ou gerido através do Composer |
Como configurar repositórios Composer privados para atualizações de segurança do WordPress
Para evitar o período de espera do WordPress.org nas correções de segurança críticas, seis horas hoje e 24 antes de julho, as agências devem gerir as dependências de plugins via Composer. Aqui está uma configuração pronta para produção usando o wpackagist e repositórios GitHub privados.
Para manter o controlo total do processo de atualização e contornar o atraso do WordPress.org, recomendamos a gestão de dependências via Composer. Isto permite obter o código diretamente de fontes confiáveis (como o GitHub do programador) antes da sua aprovação no diretório oficial.
Abaixo apresenta-se uma estrutura de composer.json para um site B2B seguro:
{
"name": "wppoland/b2b-secure-site",
"description": "Production-ready Composer configuration bypassing WordPress.org update cooldown",
"repositories": [
{
"type": "composer",
"url": "https://wpackagist.org"
},
{
"type": "vcs",
"url": "https://github.com/elementor/elementor"
}
],
"require": {
"composer/installers": "^2.0",
"johnpbloch/wordpress-core": "^6.9",
"wpackagist-plugin/contact-form-7": "^5.9",
"elementor/elementor": "dev-master"
},
"config": {
"allow-plugins": {
"composer/installers": true,
"johnpbloch/wordpress-core-installer": true
},
"preferred-install": "dist"
}
}
Com esta configuração, no caso de falhas críticas no Elementor ou em outros plugins com repositório VCS, podemos descarregar o código diretamente do branch indicado no GitHub, antes de terminar o período de retenção no WordPress.org.
Aspetos técnicos da implementação do Composer em grandes ambientes
A integração do Composer para evitar o tempo de espera do diretório oficial requer alterações ao fluxo DevOps. Configurar um servidor Satis local permite aplicar as atualizações sem atrasos temporais.
Eis um modelo de ficheiro satis.json para gestão interna na agência:
{
"name": "wppoland/agency-repository",
"homepage": "https://satis.wppoland.dev",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/elementor/elementor"
},
{
"type": "vcs",
"url": "https://github.com/wp-premium/contact-form-7"
}
],
"require": {
"elementor/elementor": "*",
"wpackagist-plugin/contact-form-7": "*"
},
"require-dependencies": true,
"archive": {
"directory": "dist",
"format": "zip",
"skip-dev": true
}
}
Isto reduz o risco de segurança e permite agir assim que uma correção de segurança é publicada no GitHub. A dependência do repositório oficial do WordPress.org deixa de existir para sites B2B de missão crítica.
A comparação entre a distribuição tradicional por SVN e a gestão via Git demonstra a superioridade desta última. O Git permite criar workflows de aprovação complexos (Pull Requests) e auditoria de código antes de qualquer deploy em produção.
Análise detalhada: A evolução das ameaças à cadeia de abastecimento do WordPress em 2026
Em 2026, os ataques à cadeia de abastecimento tornaram-se mais frequentes no WordPress. A inserção de código malicioso levou o WordPress.org a adotar medidas severas de segurança.
O período de retenção visa analisar o código contra malware. O corte de 24 horas para seis é a resposta da equipa de plugins à objeção de que um dia inteiro era um preço demasiado alto por esse tempo, e a dispensa prevista após uma revisão limpa do Gandalf vai ainda mais longe. Para agências que necessitam de aplicar correções críticas (CVSS 9.0+), seis horas continuam a ser seis horas.
Para sites B2B, a velocidade de resposta é vital. Sugerimos obter o patch diretamente do repositório Git do autor, contornando o atraso associado ao diretório oficial. Isto evita a injeção de malware ofuscado, que muitas vezes passa despercebido em análises automáticas. Adicionalmente, proteger a pasta de plugins com permissões de leitura (chmod 555) ajuda a impedir modificações não autorizadas no servidor.
O protocolo de resposta a incidentes (SecOps) deve ser estruturado em 3 fases: Mitigação imediata via WAF, empacotamento local no Git e deployment automatizado com Composer.
Script de implantação prático para correções de segurança imediatas em B2B
Em emergências, os programadores podem recorrer a um script Bash com WP-CLI para instalar o patch diretamente do GitHub:
#!/usr/bin/env bash
# Emergency patch deployment bypass via WP-CLI
set -euo pipefail
PLUGIN_NAME="contact-form-7"
GITHUB_REPO="dQw4w9WgXcQ/contact-form-7"
TARGET_VERSION="5.9.6"
WP_PATH="/var/www/html"
curl -sSL -o "/tmp/patch.zip" "https://github.com/${GITHUB_REPO}/archive/refs/tags/v${TARGET_VERSION}.zip"
wp plugin install "/tmp/patch.zip" --path="${WP_PATH}" --force --activate
wp cache flush --path="${WP_PATH}"
Para integrar este processo numa pipeline do GitHub Actions, crie o ficheiro .github/workflows/deploy-patch.yml:
name: Emergency Patch Deployment
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_PRIVATE_KEY }}
known_hosts: ${{ secrets.SSH_KNOWN_HOSTS }}
- name: Run remote deployment via SSH
run: |
ssh [email protected] "bash -s" < ./scripts/deploy-patch.sh
Este script garante uma atualização imediata, mitigando o risco de exposição durante a espera do diretório oficial e reduzindo erros humanos decorrentes da pressa em cenários de emergência.
Guia técnico: configuração de regras WAF para mitigação de vulnerabilidades zero-day antes do patch
Quando uma vulnerabilidade crítica de dia zero é descoberta e é necessário aguardar a retenção do WordPress.org, seis horas desde 24 de julho de 2026, aplicar regras no WAF é fundamental. Apresentamos a configuração para Nginx e Cloudflare.
1. Regras no Nginx
Adicione o bloco abaixo à configuração do host virtual para bloquear pedidos suspeitos ao admin-ajax:
location = /wp-admin/admin-ajax.php {
if ($arg_action = "update_settings") {
return 403;
}
if ($request_body ~* "action=update_settings") {
return 403;
}
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
2. Configuração de regras personalizadas no Cloudflare
Crie uma regra no Cloudflare usando a seguinte estrutura JSON:
{
"action": "block",
"expression": "(http.request.uri.path eq \"/wp-admin/admin-ajax.php\" and (http.request.uri.query contains \"action=update_settings\" or http.request.body.raw contains \"action=update_settings\"))",
"description": "Emergency block for vulnerable AJAX action update_settings before patch cooldown expires"
}
3. Análise forense de logs
Pode procurar indícios de exploração nos logs de acesso com o comando:
grep "POST /wp-admin/admin-ajax.php" /var/log/nginx/access.log | grep -E "action=update_settings|update_settings"
Estas ações garantem que o site permanece protegido contra ameaças imediatas até que o patch de segurança possa ser aplicado oficialmente.
Caso de Estudo: Resposta a incidentes zero-day numa loja WooCommerce de elevado volume
Para ilustrar o que custava o atraso de 24 horas enquanto vigorou, analisamos um incidente de segurança gerido pela nossa equipa em junho de 2026, semanas antes do corte para seis horas. O cliente, uma grande plataforma de comércio eletrónico de moda, utiliza o WooCommerce e um plugin de expedição. Às 14:00, foi detetada uma vulnerabilidade crítica de SQL Injection no plugin, que permitia o acesso não autorizado a dados confidenciais dos clientes.
Para uma loja de elevado volume, manter o site vulnerável ou offline traduz-se em perdas elevadas, tanto em vendas diretas como em reputação de marca. Devido ao cooldown então em vigor no WordPress.org, a versão segura 4.2.1 não estava acessível no painel, a atualização só estaria disponível 24 horas depois, um período inaceitável para um portal de grande escala.
O nosso procedimento de mitigação passo a passo:
- Análise do código do patch: A nossa equipa SecOps acedeu ao GitHub do programador e validou a diferença de código entre as versões 4.2.0 e 4.2.1, confirmando a correção da consulta SQL.
- Regras WAF temporárias: Em poucos minutos, ativámos uma regra no Cloudflare para bloquear todos os pedidos POST dirigidos ao endpoint vulnerável do plugin, anulando os ataques de bots.
- Instalação via Composer VCS: Alterámos o ficheiro
composer.jsonpara apontar diretamente para a tag da versão 4.2.1 no GitHub do programador, contornando a restrição de entrega. - Testes automáticos em staging: O sistema de CI/CD aplicou o patch no ambiente de testes e validou o fluxo de checkout para garantir que não havia conflitos com os métodos de pagamento.
- Lançamento em produção: Ainda dentro da primeira hora após o início do processo, a versão corrigida estava ativa no servidor de produção.
Ao utilizar fluxos baseados em Composer VCS e WAF, reduzimos a janela de risco de um dia inteiro para uma fração de hora. O processo padrão do WordPress teria deixado a loja exposta a ataques automatizados durante 24 horas. O mesmo incidente hoje custaria seis horas no canal predefinido, o que é melhor aritmética e a mesma decisão: um pipeline independente bate os dois números. Fica demonstrada a importância de processos de CI/CD independentes.
Opinião dos especialistas e estratégia B2B: Atualizações automáticas vs. manuais de plugins
O atraso, de 24 horas quando surgiu e de seis desde julho de 2026, levanta questões sobre a estratégia global de atualizações em sites corporativos. Embora as atualizações automáticas beneficiem milhões de blogs padrão, em B2B e comércio eletrónico de grande escala representam um risco operacional considerável, pois podem quebrar integrações críticas de ERP ou CRMs. A estabilidade do sistema de faturação e expedição deve ser prioritária perante atualizações cegas.
Steve Burge da PublishPress destaca o aspeto positivo do cooldown: os scanners detetaram falhas nos seus plugins antes da distribuição geral. No entanto, em ambientes de produção, isso não elimina a necessidade de testes de regressão antes da aplicação do código nos servidores de produção.
Estratégia de segurança B2B para agências:
- Desativação de auto-updates: Desative todas as atualizações automáticas em produção no ficheiro
wp-config.php:define('WP_AUTO_UPDATE_CORE', false); define('AUTOMATIC_UPDATER_DISABLED', true); - Auditorias de integridade de ficheiros: Valide a integridade dos ficheiros do núcleo e dos plugins via WP-CLI regularmente:
wp core verify-checksums wp plugin verify-checksums --all - Implementação de CSP: Configure cabeçalhos de Content Security Policy (CSP) restritos no servidor para bloquear scripts maliciosos injetados e tentativas de roubo de dados.
Seguir estas diretrizes garante que a agência mantém controlo absoluto e mitiga as vulnerabilidades no tempo de espera do WordPress.org.
Lista de verificação: Como as agências B2B devem reagir às alterações
A adoção das seguintes medidas minimizará o risco associado ao novo mecanismo:
- Auditoria da cadeia de abastecimento: Identifique os plugins críticos para o negócio e aqueles que tiveram vulnerabilidades no passado.
- Migração para o Composer: Gira os plugins importantes através do Composer e repositórios VCS (como o GitHub, GitLab).
- Utilização do WP-CLI para correções imediatas: Se uma vulnerabilidade for exposta, instale o ZIP diretamente via WP-CLI:
wp plugin install https://github.com/vendor/plugin/archive/refs/tags/v1.0.1.zip --force - Monitorização de registos de alterações: Acompanhe serviços como o WPScan ou Patchstack para a deteção precoce de vulnerabilidades.
- Utilização de ambiente de staging: Teste sempre as instalações manuais em staging antes de as aplicar no site de produção para evitar quebras de serviço.
Resumo
O atraso nas atualizações foi sempre um compromisso entre segurança e funcionalidade, e a equipa de plugins acabou de o reavaliar: a 24 de julho de 2026, as 24 horas passaram a seis, com um caminho anunciado para dispensar a espera nas versões que a revisão do Gandalf aprove sem reparos. A crítica feita neste texto cumpriu o seu papel, e a maior parte do custo que descrevia desapareceu.
O que sobrevive ao corte é o fluxo de trabalho. Seis horas de retenção sobre um diff público continuam a entregar a primeira jogada a quem lê o diff mais depressa, e um site B2B com uma falha CVSS 9.0+ num plugin de expedição não deve ficar em fila nenhuma. Composer com fontes VCS, verificação de somas de controlo e regras de WAF como remendo temporário continuam a ser o padrão das agências WordPress profissionais, seja qual for o número que venha a ocupar este lugar da próxima vez.






