
Verificador somente leitura de pacotes PHP2Shell para Debian 12/13 (CVE-2026-109618, CVE-2026-109619).
Uma auditoria de pacotes PHP somente leitura para Debian 12 (bookworm) e Debian 13 (trixie). Verifica as versões dos pacotes em relação às correções publicadas para CVE-2026-109618 e CVE-2026-109619, comumente chamadas de PHP2Shell.
Ele inventaria os pacotes principais do PHP em todos os ramos instalados, incluindo PHP-FPM,
CLI, CGI e Apache mod_php, em vez de depender do comando padrão php -v.
Também reporta candidatos do APT, pacotes retidos (holds) e caminhos de runtime comuns fora
dos pacotes avaliados.
Este é um verificador de versão de pacotes, não um exploit de vulnerabilidade nem um certificado de que um servidor está seguro. Ele não instala pacotes, altera configuração, atualiza índices do APT, reinicia serviços, executa binários PHP ou faz requisições de rede.
Requisitos: Debian 12 ou 13, Python 3.9+ e as ferramentas padrão dpkg/APT.
Não há dependências Python de terceiros. Root não é necessário para o verificador;
caminhos de varredura inacessíveis são reportados como incompletos.
git clone https://github.com/toxy4ny/php2shell-checker.git
cd php2shell-checker
# Optional, separate operation: refresh available package versions.
sudo apt update
python3 check-php2shell.py
Espelho no GitHub: https://github.com/toxy4ny/php2shell-checker
Você também pode baixar apenas o check-php2shell.py, inspecioná-lo e executá-lo localmente.
Para incluir um diretório de instalação personalizado:
python3 check-php2shell.py --scan-root /www/server/php --scan-root /srv/php
A varredura padrão cobre /usr/bin, /usr/sbin, /usr/lib/cgi-bin,
/usr/lib/apache2/modules, /usr/local e /opt. Ela reconhece nomes de arquivos comuns de PHP,
PHP-FPM, CGI, LiteSpeed PHP, FrankenPHP e módulos Apache. Symlinks de diretório
não são percorridos; passe os diretórios de destino deles explicitamente.
| Status | Significado |
|---|---|
FIXED | Os metadados do pacote atendem a um limite de versão corrigida conhecido. |
UPDATE | Uma versão reconhecível de pacote Debian está abaixo do seu limite corrigido. |
UNKNOWN | A remediação não pode ser verificada automaticamente. Consulte o fornecedor do pacote. |
Pacotes de terceiros mais antigos não são automaticamente declarados vulneráveis: o
fornecedor deles pode ter feito backport da correção. Eles permanecem UNKNOWN até que uma versão
corrigida suportada seja instalada ou o backport seja verificado de forma independente. Um epoch ou uma grande
revisão de empacotamento, por si só, nunca conta como correção upstream. A nomenclatura de versão não é
prova de autenticidade do repositório ou integridade do pacote.
Exemplo de saída (ilustrativo, não é uma varredura do seu host):
[UPDATE] php8.2-fpm installed=8.2.34-1~deb12u1
Debian package version below 8.2.35-1~deb12u1; source=php8.2 (8.2.34-1~deb12u1)
Candidate: 8.2.35-1~deb12u1 [FIXED] — Debian package version >= 8.2.35-1~deb12u1
Se o APT oferecer um candidato corrigido mais recente, o relatório imprime um comando de simulação e um comando de atualização para os pacotes elegíveis. Nenhum deles é executado. Os pacotes retidos são identificados e excluídos do comando sugerido. As dependências e os pacotes retidos ainda podem afetar a transação completa: revise a simulação antes de prosseguir.
Códigos de saída:
| Código | Significado |
|---|---|
0 | Todos os pacotes principais do PHP descobertos atendem aos limites corrigidos conhecidos, sem achados desconhecidos adicionais no escopo verificado. |
1 | Pelo menos um pacote precisa de atualização, sem achados desconhecidos. |
2 | Achados desconhecidos, auditoria incompleta, nenhum pacote principal do PHP encontrado, sistema não suportado ou erro de execução. Tem precedência sobre 1. |
Regras verificadas em 2026-10-22. Elas estão incorporadas no script e não são atualizadas automaticamente. Um branch futuro/não mapeado é reportado como UNKNOWN.
| Pacote ou branch | Limite corrigido |
|---|---|
Pacote de origem php8.2 do Debian 12 | 8.2.35-1~deb12u1 |
Pacote de origem php8.4 do Debian 13 | 8.4.27-1~deb13u1 |
| PHP 8.2 upstream | 8.2.35 |
| PHP 8.3 upstream | 8.3.36 |
| PHP 8.4 upstream | 8.4.27 |
| PHP 8.5 upstream | 8.5.12 |
Referências principais:
apt update antes de confiar no plano de atualização sugerido.FIXED não estabelece que um host nunca foi comprometido.python3 -m unittest discover -s tests -v
Os testes de fixture são executados sem Debian. No Debian, testes adicionais usam o dpkg --compare-versions real para cobrir limites de release, pré-releases, epochs e revisões de empacotamento. A CI executa os testes e uma verificação de fumaça com PHP instalado em ambas as releases do Debian, no GitHub e no GitLab.
Para alterações nas regras de versão, inclua um advisory do fornecedor principal e um teste de regressão. Por favor, oculte nomes de host e caminhos sensíveis dos relatórios de bug. Não inclua credenciais ou dumps de configuração de produção.
MIT. Copyright (c) 2026 PHP2Shell Checker contributors.