PHP Version Audit est un outil de commodité pour vérifier facilement une version PHP donnée par rapport à une liste régulièrement mise à jour des exploits CVE, de nouvelles versions et des dates de fin de vie.
L'audit de la version PHP n'est pas: la détection / l'atténuation de l'exploit, le suivi de la version spécifique au fournisseur, un remplacement pour rester informé sur les versions PHP et les exploits de sécurité.
- Caractéristiques
- Exemple
- Usage
- Docker
- CLI
- Invocation directe
- Règles JSON
- Options
- Sortir
- Objectifs du projet
- Remerciements et licence
--fail-security pour définir un code de sortie de défaillance si la version donnée de PHP a un CVE connu ou ne reçoit plus de mises à jour de sécurité. 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."
}
}
}
L'exécution avec Docker est le moyen préféré et le plus simple d'utiliser l'audit de la version PHP.
Vérifiez une version spécifique de PHP à l'aide de Docker:
docker run --rm -t lightswitch05/php-version-audit:latest --version=8.1.1
Vérifiez la version PHP de l'hôte à l'aide de Docker:
docker run --rm -t lightswitch05/php-version-audit:latest --version=$(php -r 'echo phpversion();')
Exécutez derrière un proxy HTTPS (pour une utilisation sur les réseaux restreints). Nécessite un support de volume d'un répertoire avec votre certificat de confiance (avec extension .crt) - voir Update-ca-certificats pour plus de détails.
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
Vous n'utilisez pas Docker? Pas un problème. Il s'agit de quelques étapes de plus, mais il est tout aussi facile à exécuter directement.
Installez le package via le compositeur:
composer require lightswitch05/php-version-audit:~1.0
Exécutez le script PHP, en vérifiant la version d'exécution de PHP:
./vendor/bin/php-version-audit
Produisez un code de sortie si des CVE sont trouvés:
./vendor/bin/php-version-audit --fail-security
Vous voulez vous intégrer à l'audit de la version PHP? C'est certainement possible. Un mot prudence, il s'agit d'une version très précoce. Je n'ai aucun plan pour briser les changements, mais je ne suis pas non plus déterminé à maintenir l'interface tel quel en cas de nouvelles fonctionnalités à implémenter. Docker / CLI est certainement la méthode préférée à l'invocation directe.
$phpVersionAudit = new lightswitch05PhpVersionAuditApplication(phpversion(), false);
$phpVersionAudit->hasVulnerabilities(); #=> true
$phpVersionAudit->getLatestPatchVersion(); #=> '8.1.1'
Les données utilisées pour piloter l'audit de la version PHP sont automatiquement mises à jour sur une base régulière et hébergée sur les pages GitHub. Il s'agit du véritable audit de la viande et des potates de la version PHP, et vous pouvez le consommer directement pour une utilisation dans d'autres outils. Si vous choisissez de le faire, veuillez respecter la licence du projet en donnant des avis d'attribution appropriés. En outre, je demande à toute implémentation de lire le lastUpdatedDate et d'échouer si elle est devenue obsolète (2+ semaines). Cela ne devrait pas se produire car il est automatiquement mis à jour ... mais nous savons tous à quel point les logiciels sont fragiles.
Obtenez la dernière version de version PHP 8.1 directement à partir des règles à l'aide de Curl et 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.