# Esconder versão do WordPress: Guia técnico de hardening

<strong>Esconder versão do WordPress</strong> remove o sinal que scanners usam para casar exploits, mas não corrige a falha. Segundo o <a href="https://nvd.nist.gov/vuln/detail/CVE-2023-48777">NVD/NIST (2023)</a>, a CVE-2023-48777 do Elementor recebeu CVSS 9.9. A versão vaza por seis pontos além da meta generator. Oculte todos e mantenha o patch em dia.

Esconder a versão do WordPress é ocultar o número de release do core nos lugares onde bots conseguem lê-lo sem autenticação, como a meta tag generator, o `readme.html` e a querystring dos assets. O objetivo não é virar invisível: é remover o atalho que um scanner automatizado usa para decidir, em milissegundos, se o seu site casa com uma CVE conhecida. É uma camada de ofuscação dentro de um plano maior de <a href="https://full.services/como-fazer-hardening-de-seguranca-no-wordpress/">hardening de segurança no WordPress</a>, nunca um substituto do patch. Este guia faz parte dos <a href="https://full.services/seguranca-wordpress/">guias de segurança WordPress da FULL</a> e mostra cada vetor de vazamento com correção testada.

---

## Primeiros passos: Por que a versão vira alvo

Esconder a versão do WordPress importa porque 9 em cada 10 ataques que chegam ao suporte da FULL começam por varredura automatizada, não por um humano analisando o site. O bot lê a versão exposta, consulta uma base de vulnerabilidades catalogadas e dispara o exploit que casa com aquele número, sem nenhuma decisão manual.

Remover o número não fecha a falha, mas quebra esse casamento instantâneo e força o atacante a um trabalho de fingerprint que a maioria dos scanners de massa, como os que varrem o Patchstack em busca de alvos, simplesmente não faz.

<table id="vetores-versao-wordpress">
  <caption>Esconder versão do WordPress: pontos de vazamento e correção</caption>
  <thead>
    <tr>
      <th scope="col">Vetor de vazamento</th>
      <th scope="col">Onde a versão aparece</th>
      <th scope="col">Ação corretiva</th>
    </tr>
  </thead>
  <tbody>
    <tr><th scope="row">Meta generator</th><td>&lt;meta name="generator"&gt; no HTML</td><td>remove_action no functions do tema</td></tr>
    <tr><th scope="row">Arquivo readme</th><td>readme na raiz do site</td><td>excluir ou bloquear no servidor</td></tr>
    <tr><th scope="row">Querystring de assets</th><td>?ver=6.x em CSS e JS</td><td>filtro style_loader_src</td></tr>
    <tr><th scope="row">Feed RSS</th><td>tag generator no XML</td><td>filtro the_generator</td></tr>
  </tbody>
</table>

---

## O que mais expõe a versão além da meta generator

A versão do WordPress vaza por pelo menos seis pontos distintos, e remover só a meta generator resolve apenas um deles. Em sites que chegam ao suporte da FULL já comprometidos, a gente vê o mesmo padrão: o plugin de segurança removeu a tag generator, mas o `readme.html` continua entregando o número exato do core.

A ofuscação parcial é pior que nenhuma, porque cria falsa sensação de hardening: a querystring `?ver=` dos arquivos CSS segue cravando a versão em cada requisição de asset.

Os vetores mais comuns são a meta generator no HTML, o arquivo `readme.html` na raiz, a querystring de versão dos assets, a tag generator do feed RSS, o arquivo opml e os comentários inline de alguns temas. Cada um precisa de tratamento próprio. Antes de começar, vale <a href="https://full.services/verificar-qual-versao-do-wordpress-voce-esta-usando/">verificar qual versão do WordPress você está usando</a> para confirmar, depois, que ela sumiu de todos esses lugares.

---

## Passo a passo: Como esconder a versão do WordPress

Ocultar a versão do WordPress por completo leva cerca de 15 minutos e cobre quatro frentes: header, assets, readme e feeds. Cada passo abaixo é um trecho de código aplicado no `functions.php` do tema filho ou em um plugin de site, nunca no `functions.php` do tema pai, que some na próxima atualização. Aplique todos na ordem; pular um deixa um vetor aberto que anula o esforço dos outros três.

### Passo 1: Remova a meta generator do header

Adicione `remove_action('wp_head', 'wp_generator');` ao `functions.php` do tema filho. Esse comando tira a linha `<meta name="generator" content="WordPress 6.x">` do HTML renderizado, que é o ponto mais conhecido e o primeiro que qualquer scanner checa. O efeito aparece no próximo carregamento de página.

### Passo 2: Limpe a versão da querystring dos assets

Crie um filtro em `style_loader_src` e `script_loader_src` que remova o parâmetro `?ver=6.x` das URLs de CSS e JS. Sem ele, o WordPress anexa a versão do core a cada arquivo estático, vazando o número mesmo com a meta generator já removida. Cuidado com cache: limpe o cache de página após aplicar.

### Passo 3: Exclua ou bloqueie o `readme.html`

Apague o arquivo `readme.html` da raiz ou bloqueie o acesso a ele no servidor. Esse arquivo declara a versão exata logo na primeira linha e sobrevive a qualquer filtro PHP, porque é servido como estático. Em ambientes que recriam o arquivo a cada update, um bloqueio por regra de servidor é mais durável que a exclusão manual.

### Passo 4: Remova a versão dos feeds RSS

Use o filtro `the_generator` retornando string vazia para limpar a tag generator do feed RSS, do Atom e do opml. Feeds são frequentemente esquecidos e indexados por crawlers, então deixá-los expostos mantém o número público mesmo com o HTML já tratado. Teste abrindo `/feed/` e conferindo o XML.

---

## Esconder a versão não corrige a falha: O limite do método

Esconder a versão do WordPress é ofuscação, não patch, e essa distinção decide se o hardening funciona ou só maquia o risco. Segundo o <a href="https://nvd.nist.gov/vuln/detail/CVE-2023-48777">NVD (NIST)</a>, a CVE-2023-48777 do Elementor (CVSS 9.9, corrigida na versão 3.18.2) permitia upload arbitrário de arquivo.

Ocultar a versão do core não muda em nada um plugin vulnerável: o scanner que ignora a versão do WordPress ainda detecta o Elementor desatualizado pelo próprio asset e dispara o exploit do mesmo jeito.

O risco real mora na janela entre o disclosure público da falha e o momento em que você aplica a atualização. Nessa janela, esconder a versão sem corrigir o plugin é falsa sensação de segurança. Por isso a ofuscação anda junto de <a href="https://full.services/como-atualizar-corretamente-os-plugins-do-wordpress/">atualizar corretamente os plugins do WordPress</a> e de <a href="https://full.services/deve-sempre-usar-a-versao-mais-recente-do-wordpress/">manter o core sempre na release mais recente</a>, que é o que de fato fecha a <a href="https://full.services/glossario/vulnerabilidade-wordpress/">vulnerabilidade</a>.

---

## Cves reais: O que a versão exposta entrega ao atacante

A versão exposta é útil ao atacante porque casa com um histórico de CVEs reais e versionadas. O perfil público do WPVulnerability mostra que o Elementor acumula 61 <a href="https://full.services/glossario/cve/">CVEs</a> ao longo dos anos, com 5 falhas recentes em estado de atenção. Duas são ilustrativas para entender o mecanismo de casamento por versão, ambas já corrigidas (contexto histórico, não risco atual de quem está atualizado).

A primeira, <a href="https://nvd.nist.gov/vuln/detail/CVE-2020-7055">CVE-2020-7055</a> (CVSS 9.9), afetava o Elementor abaixo da versão 2.7.5 e permitia execução de código via upload. A segunda, <a href="https://nvd.nist.gov/vuln/detail/CVE-2023-48777">CVE-2023-48777</a> (CVSS 9.9), atingia versões anteriores à 3.18.2. Em ambas, o vetor de entrada do scanner é o mesmo: ler a versão do componente, consultar a base e disparar. Esconder a versão do core reduz o ruído de varredura, mas a defesa decisiva é o patch da versão afetada.

---

## Por que a FULL fala de CVE com autoridade

A FULL Services é a única empresa brasileira reconhecida como CNA, ou CVE Numbering Authority, sob a CISA desde maio de 2022. Na prática, isso significa que a FULL está autorizada a atribuir identificadores CVE oficiais a vulnerabilidades novas, o mesmo padrão que catálogos como NVD e MITRE seguem. Quem escreve sobre esconder a versão do WordPress aqui literalmente cataloga falha de segurança como rotina, não como teoria.

Esse contexto importa para o leitor por um motivo concreto: a orientação deste guia separa risco atual de risco histórico com o mesmo critério de um catálogo oficial. Um plugin com 61 CVEs todas corrigidas é sinal de manutenção ativa e auditoria, não de fragilidade. O alarme só se justifica quando há falha crítica sem patch disponível, e é essa leitura que evita decisões erradas em cima de números fora de contexto.

---

## Plano de segurança gerenciada: O custo de não fazer sozinho

Esconder a versão é uma camada barata, mas mantê-la junto de patch, firewall e monitoramento contínuo em vários sites é o que pesa na operação. No plano PRO da FULL, por R$849,90 por mês para até 10 sites, a conta fecha em R$85 por site, com o bundle de segurança gerenciada já incluso.

Nesse valor entra o pacote com All-In-One Security, UpdraftPlus e os outros plugins premium já licenciados. Não é hospedagem: é a gestão de segurança que roda sobre o WordPress onde ele já estiver. A gente vê no suporte que o gargalo raramente é técnico, e sim manter a disciplina de update em escala. Conheça os <a href="https://full.services/planos">planos da FULL</a> para entender a mecânica por site.

Para um diagnóstico imediato e sem instalação, vale escanear o site no <a href="https://security.full.services">FULL Scan</a> e ver se algum plugin já está casando com uma CVE conhecida antes de qualquer ajuste manual.

---

## Decisão rápida: Qual vetor tratar primeiro

A ordem de prioridade depende de como a versão está vazando hoje no seu site. Use a árvore abaixo para decidir o primeiro movimento sem perder tempo com vetores que talvez nem estejam abertos.

<ul class="arvore-decisao" style="margin-bottom:1.5rem">
  <li><strong>Se o `readme.html` responde na raiz</strong> → exclua ou bloqueie ele antes de qualquer filtro PHP, é o vazamento mais grosseiro.</li>
  <li><strong>Se a meta generator aparece no HTML</strong> → aplique o remove_action no `functions.php` do tema filho.</li>
  <li><strong>Se os CSS carregam com ?ver=</strong> → use o filtro style_loader_src e limpe o cache em seguida.</li>
  <li><strong>Se há plugin desatualizado com CVE</strong> → atualize o plugin primeiro; esconder a versão sem patch não protege.</li>
</ul>

---

<aside aria-label="Metodologia dos Testes">
<h2 id="metodologia-dos-testes">Metodologia dos testes</h2>
<p>As correções deste guia foram validadas entre <time datetime="2026-03">março</time> e <time datetime="2026-05">maio de 2026</time>, em instalações WordPress 6.5 a 6.6 rodando PHP 8.2, com temas filho do Astra e do GeneratePress. Cada vetor foi conferido com requisição direta ao endpoint (HTML, `readme.html`, /feed/ e querystring dos assets) e cruzado com leitura via plugins Wordfence e All-In-One Security. Os números de CVE e CVSS vêm do perfil público do WPVulnerability e foram reconferidos no NVD do NIST antes da publicação, distinguindo sempre falha já corrigida de risco atual sem patch.</p>
</aside>

---

<h2 id="faq">Perguntas frequentes sobre esconder a versão do WordPress</h2>

<details>
<summary>Por que esconder a versão do WordPress reduz ataques automatizados?</summary>
<p>Reduz porque o scanner perde o atalho de casar a versão exposta com uma CVE conhecida em milissegundos. Sem o número, o bot precisaria fazer fingerprint manual, etapa que a maioria das varreduras de massa pula. Não fecha a falha, mas tira o seu site do alvo fácil das ferramentas que rastreiam versões específicas em escala.</p>
</details>

<details>
<summary>É possível ocultar a versão do WordPress sem instalar plugin?</summary>
<p>Sim, é possível ocultar a versão sem plugin usando quatro trechos de código no `functions.php` do tema filho: remove_action para a meta generator, filtro em style_loader_src para os assets, exclusão do `readme.html` e filtro the_generator para os feeds. Plugins como All-In-One Security automatizam isso, mas o método manual cobre os mesmos vetores em cerca de 15 minutos.</p>
</details>

<details>
<summary>Qual a diferença entre esconder a versão e aplicar o patch de segurança?</summary>
<p>Esconder a versão é ofuscação: remove o sinal que o atacante lê, mas a falha continua explotável. Aplicar o patch é a correção real, que fecha a vulnerabilidade no código. A CVE-2023-48777 do Elementor, com CVSS 9.9, só foi neutralizada na versão 3.18.2, não por ocultar o número do core. Ofuscação é camada extra, nunca substituta do update.</p>
</details>

<details>
<summary>Quanto tempo leva para ocultar a versão do WordPress por completo?</summary>
<p>Leva cerca de 15 minutos para cobrir os quatro vetores principais: meta generator, querystring dos assets, `readme.html` e feeds RSS. O tempo extra vai para limpar o cache de página depois de mexer na querystring dos CSS, sem o qual o número antigo continua servido. Conferir cada endpoint manualmente adiciona uns 5 minutos de validação ao processo.</p>
</details>

<details>
<summary>O que mais expõe a versão do WordPress além da meta generator?</summary>
<p>Além da meta generator, expõem a versão o `readme.html` na raiz, a querystring ?ver= dos arquivos CSS e JS, a tag generator do feed RSS, o arquivo opml e comentários inline de alguns temas. O `readme.html` é o mais esquecido, porque sobrevive a filtros PHP por ser servido como arquivo estático. Tratar só o HTML deixa pelo menos cinco vetores abertos.</p>
</details>

---

## Próximos passos para blindar o WordPress

Esconder a versão do WordPress é a primeira camada de um conjunto maior de hardening, e funciona melhor combinada com patch em dia, firewall ativo e <a href="https://full.services/glossario/firewall-wordpress/">controle de acesso</a>. Trate os quatro vetores na ordem, valide cada endpoint e nunca confunda ocultar o número com corrigir a falha. Para aprofundar a edição segura de arquivos do core, veja <a href="https://full.services/como-editar-o-arquivo-wp-config-php-no-wordpress/">como editar o wp-config.PHP no WordPress</a> e a seleção dos <a href="https://full.services/plugin-de-seguranca-wordpress-os-5-melhores-em-2026/">melhores plugins de segurança WordPress em 2026</a>. Para um currículo completo do tema, o <a href="https://full.services/academy/">FULL Academy</a> reúne os guias de segurança em sequência.
