A Auditoria da versão PHP é uma ferramenta de conveniência para verificar facilmente uma determinada versão PHP em uma lista atualizada regularmente de explorações CVE, novos lançamentos e datas de fim de vida.
A Auditoria da Versão PHP não é: Explorar Detecção/Mitigação, Rastreamento de Versão Específico do Fornecedor, um substituto para se manter informado sobre versões PHP e explorações de segurança.
- Características
- Exemplo
- Uso
- Docker
- CLI
- Invocação direta
- Regras JSON
- Opções
- Saída
- Objetivos do projeto
- Agradecimentos e licença
--fail-security para definir um código de saída de falha se a versão fornecida do PHP tiver um CVE conhecido ou não estiver mais recebendo atualizações de segurança. docker run --rm -t lightswitch05/php-version-audit:latest --version=8.0.12
{
"auditVersion": "8.0.12",
"hasVulnerabilities": true,
"hasSecuritySupport": true,
"hasActiveSupport": true,
"isLatestPatchVersion": false,
"isLatestMinorVersion": false,
"isLatestVersion": false,
"latestPatchVersion": "8.0.14",
"latestMinorVersion": "8.1.1",
"latestVersion": "8.1.1",
"activeSupportEndDate": "2022-11-26T00:00:00+0000",
"securitySupportEndDate": "2023-11-26T00:00:00+0000",
"rulesLastUpdatedDate": "2022-01-18T02:13:52+0000",
"vulnerabilities": {
"CVE-2021-21707": {
"id": "CVE-2021-21707",
"baseScore": 5.3,
"publishedDate": "2021-11-29T07:15:00+0000",
"lastModifiedDate": "2022-01-04T16:12:00+0000",
"description": "In PHP versions 7.3.x below 7.3.33, 7.4.x below 7.4.26 and 8.0.x below 8.0.13, certain XML parsing functions, like simplexml_load_file(), URL-decode the filename passed to them. If that filename contains URL-encoded NUL character, this may cause the function to interpret this as the end of the filename, thus interpreting the filename differently from what the user intended, which may lead it to reading a different file than intended."
}
}
}
Executar com o Docker é a maneira preferida e mais fácil de usar a auditoria da versão PHP.
Verifique uma versão específica do PHP usando o Docker:
docker run --rm -t lightswitch05/php-version-audit:latest --version=8.1.1
Verifique a versão PHP do host usando o Docker:
docker run --rm -t lightswitch05/php-version-audit:latest --version=$(php -r 'echo phpversion();')
Corra atrás de um proxy HTTPS (para uso em redes restritas). Requer uma montagem de volume de um diretório com seu certificado confiável (com extensão .CRT)-consulte Certificados Update-CA para obter mais detalhes.
docker run --rm -t -e https_proxy='https://your.proxy.server:port/' --volume /full/path/to/trusted/certs/directory:/usr/local/share/ca-certificates lightswitch05/php-version-audit:latest --version=8.1.1
Não está usando o Docker? Não é um problema. São mais algumas etapas, mas é tão fácil de executar diretamente.
Instale o pacote via compositor:
composer require lightswitch05/php-version-audit:~1.0
Execute o script PHP, verificando a versão em tempo de execução do PHP:
./vendor/bin/php-version-audit
Produza um código de saída se forem encontrados CVEs:
./vendor/bin/php-version-audit --fail-security
Quer se integrar à Auditoria da versão PHP? Isso é certamente possível. Uma palavra cautela, esta é uma liberação muito precoce. Não tenho planos de quebrar mudanças, mas também não estou comprometido em manter a interface como é se houver novos recursos a serem implementados. Docker/CLI é certamente o método preferido sobre a invocação direta.
$phpVersionAudit = new lightswitch05PhpVersionAuditApplication(phpversion(), false);
$phpVersionAudit->hasVulnerabilities(); #=> true
$phpVersionAudit->getLatestPatchVersion(); #=> '8.1.1'
Os dados usados para direcionar a auditoria da versão PHP são atualizados automaticamente regularmente e estão hospedados nas páginas do GitHub. Esta é a verdadeira auditoria de carne e poto da versão do PHP e você pode consumi-la diretamente para uso em outras ferramentas. Se você optar por fazer isso, respeite a licença do projeto, fornecendo avisos de atribuição adequados. Além disso, peço a quaisquer implementações que leiam o lastUpdatedDate e falhem se ele estiver desatualizado (mais de 2 semanas). Isso não deve acontecer, pois é atualizado automaticamente ... mas todos sabemos como o software é frágil.
Obtenha a versão mais recente de liberação do PHP 8.1 diretamente das regras usando CURL e JQ:
curl -s https://www.github.developerdan.com/php-version-audit/rules-v1.json | jq '.latestVersions["8.1"]'
usage: php-version-audit [--help] [--version=PHP_VERSION]
[--fail-security] [--fail-support]
[--fail-patch] [--fail-latest]
[--no-update] [--silent]
[--v]
optional arguments:
--help show this help message and exit.
--version set the PHP Version to run against. Defaults to the runtime version. This is required when running with docker.
--fail-security generate a 10 exit code if any CVEs are found, or security support has ended.
--fail-support generate a 20 exit code if the version of PHP no longer gets active (bug) support.
--fail-patch generate a 30 exit code if there is a newer patch-level release.
--fail-latest generate a 40 exit code if there is a newer release.
--no-update do not download the latest rules. NOT RECOMMENDED!
--silent do not write any error messages to STDERR.
--v Set verbosity. v=warnings, vv=info, vvv=debug. Default is error. All logging writes to STDERR.