
Script detector da CVE-2017-9841
Script de detecção do CVE-2017-9841 por Massimiliano Brasile
O QUE ACONTECEU
Em 6 de janeiro de 2020, fui informado de um problema de segurança aparentemente afetando a maioria das versões do PrestaShop (o aviso foi compartilhado pela equipe PS apenas internamente em 3 de janeiro de 2020). Após algumas investigações, descobri que o problema está relacionado a uma biblioteca de framework de testes chamada PHPUnit [1] que é acidentalmente incluída em alguns módulos de produção usados no Prestashop 1.7 (distribuídos pela API do PrestaShop ou com as instalações do PrestaShop). O problema do PHPUnit foi rotulado como CVE-2017-9841 [2] [3], mas o aviso para o Prestashop está ativo no momento porque há pelo menos um bot ( XsamXadoo ) varrendo sites PS exatamente por esse problema [4].
COMO FUNCIONA
Tecnicamente, o CVE-2017-9841 refere-se à possibilidade de executar código remoto em qualquer aplicação que use uma versão com bug do phpunit/phpunit, e em 8 de janeiro de 2020 outro problema foi descoberto ( antes de 4.8.28 e 5.x antes de 5.6.3 relacionado a versões anteriores a 7.5.19 para 7.x e 8.5.1 para 8.x [5] ). Como o phpunit é um framework famoso, parece que o problema tem impacto nos principais CMSs PHP (Prestashop, Wordpress, Drupal, ..) e seus plugins, mas apenas se eles o usarem. Para ajudar a encontrar esses backdoors, é obrigatório verificar qualquer inclusão desse framework de testes em cada subpasta da sua raiz web. Então, para acelerar todo o processo, escrevi este pequeno script rápido e sujo que me ajuda a controlar todas as instâncias de Prestashop ou Wordpress pelas quais sou responsável.
ONDE VERIFICAR
De acordo com o fórum PS [4], estes módulos precisam ser verificados:
Mas, nos meus testes, também o encontrei no módulo ps_facetedsearch v3.2.1. Ele não estava presente no autoupgrade v4.9+.
COMO USAR O SCRIPT
COMO CORRIGIR
Em caso de ocorrência de instâncias do phpunit com versão com bug, atualize, se possível, o módulo pai ou remova (exclua a pasta) se eles não tiverem suporte do desenvolvedor; de acordo com o fórum PS, você deve remover completamente todas as pastas vendor dentro desses módulos, mas isso precisa ser verificado!
REFERÊNCIAS
[5] Ainda não oficial!! veja https://github.com/PrestaShop/PrestaShop/issues/17059#issuecomment-572114133