Resumo Executivo
Nossa equipe de pesquisa em segurança descobriu que CVE-2023-0568, uma vulnerabilidade de alocação de buffer oficialmente relatada como afetando apenas as versões do PHP 8 e superiores, também afeta instalações da série PHP 7 (no Windows e no Linux). Essa descoberta tem implicações significativas para organizações que ainda utilizam o PHP 7 em ambientes de produção, especialmente porque essa versão atingiu o status de fim de vida útil (EOL) e não recebe mais atualizações oficiais de segurança.
8.1 CVSS 3.x da NVD
7,5 CVSS 3.x do Grupo PHP
A vulnerabilidade explicada
O CVE-2023-0568 é um erro de alocação de buffer “off-by-one” na função principal de resolução de caminhos do PHP. Ao resolver caminhos com comprimentos próximos à configuração MAXPATHLEN do sistema, a função aloca um buffer que é um byte menor do que o necessário. Isso faz com que o byte imediatamente seguinte ao buffer alocado seja sobrescrito com um valor NULL.
Embora isso possa parecer, à primeira vista, uma questão de pouca importância, representa um problema de segurança mais sério:
- A vulnerabilidade pode levar ao acesso ou à modificação não autorizados de dados
- Em determinadas condições, isso pode resultar em um ataque de negação de serviço (DoS)
- As substituições na pilha, mesmo que limitadas, podem criar oportunidades para cadeias de exploração mais complexas
PHP 7: ainda vulnerável, mas sem suporte oficial
O comunicado oficial sobre a vulnerabilidade CVE-2023-0568 especifica que ela afeta:
- PHP 8.0.x anterior à versão 8.0.28
- PHP 8.1.x anterior à versão 8.1.16
- PHP 8.2.x anterior à versão 8.2.3
No entanto, nossa equipe de pesquisa de segurança confirmou que as instalações da série PHP 7 também estão vulneráveis a esse mesmo problema. Isso cria uma falha de segurança significativa para as organizações que ainda utilizam o PHP 7, pois:
- O PHP 7 atingiu o status de fim de vida útil (EOL)
- Não há patches oficiais disponíveis por parte dos mantenedores do PHP
- Essa vulnerabilidade continua sem correção em todas as instalações do PHP 7
Detalhes técnicos
A vulnerabilidade está presente no código de resolução de caminhos do PHP, que segue esse padrão em vários locais:
| // Aloca um buffer com tamanho máximo de MAXPATHLEN char resolved_path[MAXPATHLEN]; // Se o caminho não terminar com uma barra, é necessário acrescentar uma // Um caractere NUL poderia ser gravado no índice MAXPATHLEN // Resultando em um estouro de buffer de um byte |
Quando o comprimento dos caminhos se aproxima de MAXPATHLEN, o código aloca um buffer que é um byte menor do que o necessário. Se o caminho não terminar com uma barra e for necessário acrescentá-la, o código gravará além do buffer alocado, sobrescrevendo um byte da pilha.
Embora uma sobrescrita isolada de um byte na pilha possa parecer algo insignificante, ela pode ter sérias implicações de segurança em determinadas circunstâncias:
- A sobrescrita de dados da pilha pode corromper variáveis adjacentes
- Isso pode, potencialmente, influenciar o fluxo de controle do programa
- Quando combinada com outras vulnerabilidades, ela poderia contribuir para ataques mais sofisticados
Nossa solução: suporte contínuo ao ciclo de vida do PHP 7
Entendemos que a migração do PHP 7 para versões mais recentes nem sempre é viável de imediato devido à compatibilidade das aplicações, restrições de recursos ou outros fatores comerciais. É por isso que estamos oferecendo:
- Patches de segurança personalizados: Desenvolvemos patches para o PHP 7 que corrigem a vulnerabilidade CVE-2023-0568 e outras vulnerabilidades conhecidas
- Pacotes atualizados do PHP 7: Disponíveis para ambientes Windows e Linux
- Suporte contínuo à segurança: Monitoramento contínuo e aplicação de correções para vulnerabilidades recém-descobertas no PHP 7
Ações recomendadas
Se sua organização ainda estiver utilizando o PHP 7, recomendamos:
- Avalie sua exposição: Avalie se suas aplicações podem estar vulneráveis à manipulação de caminho, o que poderia acionar essa vulnerabilidade
- Aplique nossos pacotes corrigidos: Instale nossos pacotes do PHP 7 com correções de segurança para mitigar essa vulnerabilidade
Conclusão
As vulnerabilidades de segurança não respeitam as datas de fim de vida útil (EOL). O CVE-2023-0568 é um excelente exemplo de como os problemas de segurança podem afetar um software mesmo após o término de seu ciclo de vida de suporte oficial. Nossos serviços de suporte estendido para o PHP 7, bem como para eventos futuros, como o fim de vida útil do PHP 8.3 no final de 2027, fornecem às organizações os patches de segurança de que precisam enquanto planejam sua estratégia de migração de acordo com seu próprio cronograma.
