O Diário do Analista
Vol. 2  |  N. 5  |  Pp. 155–157  |  2026  |  ISSN xxxx-xxxx

Alerta: Vulnerabilidade de 2017 do PHPunit continua sendo explorada e apresenta EPSS de mais de 98%

A CVE-2017-9841 representa uma vulnerabilidade no framework PHPUnit, um framework
PHP amplamente utilizado. Mesmo existindo uma CVE associada à vulnerabilidade,
essa, ainda se vê sendo explorada. A CVE, publicada no Banco de dados Nacional de
Vulnerabilidades – NVD – no dia 27/06/2017, parece estar associada ao arquivo eval-stdin.php, encontrado em: vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php.

A vulnerabilidade é preocupante por permitir execução de código remoto sem autenticação
anterior através de um POST, sem headers especiais necessários. Surpreendentemente, a
raiz da falha, o –  eval-stdin.php – não abre espaço para exploração de terceiros
por conter um bug de corrupção de memória ou uma falha lógica sublime; mas sim, por
se tratar de uma utilidade de teste que jamais deveria ser exposta em ambientes de
produção.

 


Como a Vulnerabilidade funciona

O funcionamento da vulnerabilidade é simples, mas pode causar grande impacto.
O eval-stdin possui a seguinte linha de código: eval('?>'.file_get_contents('php://input')); a qual permite execução arbitrária de código, bastando mandar um POST para o servidor.

 


Por que a vulnerabilidade continua sendo explorada?

A vulnerabilidade foi corrigida em versões lançadas a partir no meio de 2016, porém, ainda
hoje, a CVE é dotada de um EPSS de 94.2%, sendo tal número exorbitante relacionado a quatro
principais causas.

      1.PHPUnit é uma dependência de desenvolvimento, estando listada em composer.json
como require-dev. O padrão suposto de deploy em produção seria do lançamento do
comando composer install --no-dev, o qual excluiria dependências de teste como
PHPUnit. Na prática, porém, muitos deploys ignoram esse passo.

      2.Aplicações PHP rodando em servidores Apache ou NGINX geralmente servem o diretório
completo do projeto, incluindo o diretório /vendor (Onde se localiza o PHPUnit). Assim, a não ser que sejam implementadas diretrizes de restrição específicas para o PHPUnit, o arquivo continua no escopo do atacante sob uma URL previsível.

     3.Muitas bases de código legado são mantidas por pequenos times, os quais muitas vezes
instalaram dependências anos atrás e não as revisitaram. Como a aplicação continua a funcionar
normalmente, os times não atualizam a versão vulnerável do PHP para a versão com correções.

     4.O ecossistema de ataque conta com mais de 18 exploits públicos conhecidos de acordo com um artigo no VulnCheck, incluindo scanners em massa, templates no nuclei e módulos no metasploit. A barreira para o scan da vulnerabilidade é basicamente zero.


Como verificar se estou vulnerável?

Se você estiver utilizando o composer, dê uma olhada em /vendor/composer/installed.json para verificar a versão de seu PHPUnit. A vulnerabilidade existe nas versões 4.8.19 até a 4.8.27 e das versões 5.0.10 a 5.6.2.

Se você não estiver usando um composer, dê uma olhada no arquivo do PHPUnit diretamente em
/phpunit/src/Util/PHP/eval-stdin.php .Se o arquivo não existir ou se estiver escrito como:

eval('?>' . \file_get_contents('php://stdin'));

 ou

eval('?>' . file_get_contents('php://stdin'));

você não está vulnerável.

Caso contrário, se o código se parecer com:

eval('?>'.file_get_contents('php://input'));

você está vulnerável.


Correção Permanente

Há diversas maneiras de consertar ou mitigar a vulnerabilidade, sendo algumas
delas:
     1.Remover o PHPUnit assim como outros pacotes de desenvolvedor que, na maioria dos
casos, não são necessários para o ambiente de produção.
$ composer install --no-dev

     2.Dar update no PHPUnit – versões mais novas não são vulneráveis.
$ composer update

    3. Substituir manualmente o conteúdo de eval-stdin.php para o seguinte:
eval('?>' . \file_get_contents('php://stdin')); 

   4. Desabilitar acesso aos pacotes do composer ao colocara pasta /vendor
no arquivo .htaccess:

Deny from all


Referências

https://web.archive.org/web/20170701212357/http://phpunit.vulnbusters.com/

https://nvd.nist.gov/vuln/detail/CVE-2017-9841

https://www.vulncheck.com/blog/cve-2017-9841

Tags: , , , , , .

Categorias: CISA, CVE, NIST, Vulnerabilidade.