Evite a vulnerabilidade Full Path Disclosure no WordPress

A vulnerabilidade Full Path Disclosure (FPD) é comum no core do WordPress, plugins e temas. Conheça dicas de segurança para evitar FPD.

Seus amigos merecem saber desse conteúdo?

Full Path Disclosure (FPD) no WordPress é muito comum. É importante você tomar conhecimento sobre essa vulnerabilidade e assim evitá-la para manter seu WordPress Seguro. Além da falta de conhecimento a respeito por parte dos desenvolvedores, é comum uma discussão sobre se FPD é um erro de código ou configuração.

A vulnerabilidade Full Path Disclosure, quando ocorrida, expõe o caminho completo de um determinado arquivo e o usuário em seu servidor. Essas duas informações facilitam a vida de um atacante. Primeiro ele saberá onde os arquivos estão e suas tentativas serão direcionadas. Segundo ele, poderá realizar um ataque de força bruta e ganhar acesso ao servidor.

Como dica de segurança para WordPress considere evitar essa vulnerabilidade em seus sites. Acredito que é melhor realizar algumas tratativas de segurança do que continuar na discussão sobre quem causa a vulnerabilidade de FPD: o código ou a configuração do servidor.

A vulnerabilidade Full Path Disclosure no core do WordPress

  • http://localhost/wordpress/wp-includes/ms-settings.php
  • http://localhost/wordpress/wp-includes/rss-functions.php
  • http://localhost/wordpress/wp-includes/rss.php
  • http://localhost/wordpress/wp-includes/template-loader.php

A lista acima é um exemplo de arquivos do core do WordPress que, ao serem acessados diretamente, ocasionam a vulnerabilidade Full Path Disclosure. Há vários outros arquivos que contribuem para essa situação. Observe nas imagens abaixo as informações exibidas na tela ao acessarmos diretamente os arquivos /wp-includes/ms-settings.php e /wp-includes/rss-functions.php, por exemplo.

Exemplo da vulnerabilidade Full Path Disclosure através do arquivo ms-settings.php
Exemplo da vulnerabilidade Full Path Disclosure através do arquivo ms-settings.php
Exemplo da vulnerabilidade Full Path Disclosure através do arquivo rss-functions.php
Exemplo da vulnerabilidade Full Path Disclosure através do arquivo rss-functions.php

Como proteger o core do WordPress contra Full Path Disclosure

É importante compreender que todos os arquivos do WordPress que residem na pasta /wp-includes/ não devem ser acessados diretamente e quando isso acontece eles não tem a disposição algumas funções, variáveis e constantes que precisam para realizarem seus trabalhos. E na falta desses elementos erros fatais em PHP acontecem, paralisam a execução do script e printam a mensagem relacionada expondo informações do servidor.

Faça uso do código abaixo em seu arquivo .htaccess, para quem utiliza o Apache como servidor web, para que os arquivos PHP em /wp-includes/ não sejam acessados diretamente.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

A vulnerabilidade Full Path Disclosure em plugins e temas

Assim como os arquivos do core do WordPress podem ser acessados diretamente, os arquivos de plugins e temas também podem. É importante que os desenvolvedores desenvolvam suas soluções livres de Full Path Disclosure e que não fiquem na dependência de configurações do ambiente para não exibir erros.

Considere fazer uso do código abaixo em todos os arquivos do seu plugin ou tema. Ele verificará se o ambiente do WordPress está disponível e caso não esteja o script será paralisado.

<?php if ( !function_exists( 'add_action' ) ) exit; ?>

Código ou configuração. Qual o vilão se tratando de Full Path Disclosure?

Aprofundar a discussão considero um gasto de energia para a tentativa de encontrar um culpado, se livrar da responsabilidade e postergar, ou deixar pra lá, a vulnerabilidade Full Path Disclosure em sua instalação WordPress.

O time de segurança do WordPress considera o assunto como um problema de configuração do servidor, afirmando que erros não devem ser exibidos em ambiente de produção. Concordo, mas acredito que o software deve caminhar para uma direção com menos, ou melhor nenhuma, vulnerabilidade em seus códigos, independentemente do seu tipo e grau.

Portanto, considere fazer uso da diretiva demonstrada no arquivo .htaccess para proteger os arquivos do core do WordPress. Desenvolva seus plugins e temas com o assunto em mente e o evite com o código demonstrado. E configure o sistema de debug da plataforma para não exibir os erros na tela assim como definir as diretivas do PHP para esse cenário. Com essas práticas ficaremos livres das vulnerabilidades de Full Path Disclosure ou FPD.

Opa! Não conseguimos encontrar o seu formulário.