PHP Version Audit es una herramienta de conveniencia para verificar fácilmente una versión PHP dada en una lista actualizada regularmente de exploits CVE, nuevas versiones y fechas de fin de vida.
La auditoría de la versión PHP no es: detección/mitigación de exploits, seguimiento de versión específica del proveedor, un reemplazo para mantenerse informado sobre las versiones de PHP y las exploits de seguridad.
- Características
- Ejemplo
- Uso
- Estibador
- CLI
- Invocación directa
- Reglas JSON
- Opción
- Producción
- Proyecto de objetivos
- Agradecimientos y licencia
--fail-security para establecer un código de salida de falla si la versión dada de PHP tiene un CVE conocido o ya no recibe actualizaciones de seguridad. 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."
}
}
}
Ejecutar con Docker es la forma más preferida y más fácil de usar la auditoría de la versión PHP.
Verifique una versión específica de PHP usando Docker:
docker run --rm -t lightswitch05/php-version-audit:latest --version=8.1.1
Verifique la versión PHP del host usando Docker:
docker run --rm -t lightswitch05/php-version-audit:latest --version=$(php -r 'echo phpversion();')
Ejecute detrás de un proxy HTTPS (para su uso en redes restringidas). Requiere un soporte de volumen de un directorio con su certificado de confianza (con extensión .CRT): consulte Actualización-CA-Certificados para obtener más detalles.
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
¿No usa Docker? No es un problema. Es un par de pasos más, pero es igual de fácil ejecutar directamente.
Instale el paquete a través del compositor:
composer require lightswitch05/php-version-audit:~1.0
Ejecute el script PHP, verificando la versión en tiempo de ejecución de PHP:
./vendor/bin/php-version-audit
Producir un código de salida si se encuentra CVE:
./vendor/bin/php-version-audit --fail-security
¿Quiere integrarse con la auditoría de la versión PHP? Eso es ciertamente posible. Una palabra precaución, esta es una versión muy temprana. No tengo ningún plan para romper los cambios, pero tampoco estoy comprometido a mantener la interfaz como es si hay nuevas características para implementar. Docker/CLI es sin duda el método preferido sobre la invocación directa.
$phpVersionAudit = new lightswitch05PhpVersionAuditApplication(phpversion(), false);
$phpVersionAudit->hasVulnerabilities(); #=> true
$phpVersionAudit->getLatestPatchVersion(); #=> '8.1.1'
Los datos utilizados para impulsar la auditoría de la versión PHP se actualizan automáticamente de forma regular y se alojan en las páginas GitHub. Esta es la verdadera auditoría de la versión PHP de carne de PHP, y puede consumirlo directamente para su uso en otras herramientas. Si elige hacer esto, respete la licencia del proyecto dando los avisos de atribución adecuados. Además, le pido a cualquier implementación que lea el lastUpdatedDate y falle si se ha desactualizado (más de 2 semanas). Esto no debería suceder ya que se actualiza automáticamente ... pero todos sabemos cuán frágil es el software.
Obtenga la última versión de lanzamiento PHP 8.1 directamente de las reglas usando Curl y 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.