Versionscan 是一个用于评估当前已安装 PHP 版本、并根据已知 CVE 及其修复版本进行比对,以报告潜在问题的工具。
请注意: 目前仍在适配那些将安全修复向后移植的 Linux 发行版。当前工具仅针对直接报告的版本进行反馈。
{
"require": {
"psecio/versionscan": "dev-master"
}
}
目前唯一的依赖是 Symfony console。
若要针对当前 PHP 版本运行扫描,请使用:
bin/versionscan
该脚本将检查当前实例的 PHP_VERSION 并生成通过/失败结果。输出类似于:
Executing against version: 5.4.24
+--------+---------------+------+------------------------------------------------------------------------------------------------------+
| 状态 | CVE ID | 风险 | 摘要 |
+--------+---------------+------+------------------------------------------------------------------------------------------------------+
| 失败 | CVE-2014-3597 | 6.8 | Multiple buffer overflows in the php_parserr function in ext/standard/dns.c in PHP before 5.4.32 ... |
| 失败 | CVE-2014-3587 | 4.3 | Integer overflow in the cdf_read_property_info function in cdf.c in file through 5.19, as used in... |
结果还会以彩色显示,便于查看检查的通过/失败状态。
可以为工具指定多个参数来配置扫描及其结果:
如果你想要检查除脚本自身发现的版本以外的其他 PHP 版本,可以使用 php-version 参数:
bin/versionscan scan --php-version=4.3.2
你也可以让 versionscan 仅报告失败的测试,而不显示通过的测试:
bin/versionscan scan --fail-only
你可以通过 sort 参数并指定 "cve" 或 "risk" 值,按 CVE ID 或严重程度(风险评级)对结果排序:
bin/versionscan scan --sort=risk
默认情况下,versionscan 会将信息直接输出到控制台,呈现为人类可读的结果。你也可以指定其他输出格式,以便于程序化解析(例如 JSON)。使用 --format 选项来更改输出:
vendor/bin/versionscan scan --php-version=5.5 --format=json
支持的输出格式有 console、json、xml 和 html。
HTML 输出格式需要一个 --output 选项来指定写入文件的目录:
vendor/bin/versionscan scan --php-version=5.5 --format=html --output=/var/www/output
结果将被写入一个类似 versionscan-output-20150808.html 的文件中。