首页 >> 网络安全 >>神兵利器 >> 审核您的PHP版本以获取已知的CVE和补丁
详细内容

审核您的PHP版本以获取已知的CVE和补丁

时间:2020-12-19        阅读

PHP版本审核是一种便捷的工具,可以轻松地根据定期更新的CVE漏洞利用列表,新版本和寿命终止日期来检查给定的PHP版本。

PHP版本审核不是:漏洞检测/缓解,特定于供应商的版本跟踪,替代品,以随时了解PHP版本和安全漏洞。

特征:

  • 列出给定版本PHP的已知CVE

  • 检查PHP的运行时版本或提供的版本

  • 显示给定版本PHP的寿命终止日期

  • 以可配置的特性(最新/次要/补丁)显示给定版本的PHP的新版本

    • 补丁:7.2.24-> 7.2.25

    • 次要:7.2.24-> 7.3.12

    • 最新:5.6.40-> 7.3.12

  • 规则每天自动更新两次。信息直接来自php.net-在获得最新的补丁程序信息之前,您永远不会等待像我这样的人合并请求请求。

  • 多种接口:CLI(通过PHP Composer),Docker,直接代码导入

  • 易于编写脚本以用于CI / CD工作流程。所有Docker / CLI输出均为JSON格式,可通过您喜欢的工具(例如jq)使用

  • 可配置的退出条件。--fail-security如果给定版本的PHP具有已知的CVE或不再接收安全更新,请使用CLI标志来设置失败退出代码。

例:

docker run --rm -t lightswitch05/php-version-audit:latest --version=7.3.10
{
    "auditVersion": "7.3.10",
    "hasVulnerabilities": true,
    "hasSecuritySupport": true,
    "hasActiveSupport": true,
    "isLatestPatchVersion": false,
    "isLatestMinorVersion": false,
    "isLatestVersion": false,
    "latestPatchVersion": "7.3.12",
    "latestMinorVersion": "7.4.0",
    "latestVersion": "7.4.0",
    "activeSupportEndDate": "2020-12-06T00:00:00+0000",
    "securitySupportEndDate": "2021-12-06T00:00:00+0000",
    "rulesLastUpdatedDate": "2019-12-10T02:04:16+0000",
    "vulnerabilities": {
        "CVE-2019-11043": {
            "id": "CVE-2019-11043",
            "baseScore": 9.8,
            "publishedDate": "2019-10-28T15:15:00+0000",
            "lastModifiedDate": "2019-10-30T20:15:00+0000",
            "description": "In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it is possible to cause FPM module to write past allocated buffers into the space reserved for FCGI protocol data, thus opening the possibility of remote code execution."
        }
    }
}

用法

码头工人

使用docker运行是使用PHP版本审核的首选和最简单的方法。

使用Docker检查特定版本的PHP:

docker run --rm -t lightswitch05/php-version-audit:latest --version=7.3.12

使用Docker检查主机的PHP版本:

docker run --rm -t lightswitch05/php-version-audit:latest --version=$(php -r 'echo phpversion();')

在HTTPS代理(在受限网络上使用)后面运行。需要使用受信任的证书(带有.crt扩展名)对目录进行卷挂载-有关更多详细信息,请参见update-ca-certificates

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=7.4.1

命令行界面

不使用docker?没问题 这是几个步骤,但直接运行同样容易。

通过composer安装软件包:

composer require lightswitch05/php-version-audit:~1.0

执行PHP脚本,检查PHP的运行时版本:

./vendor/bin/php-version-audit

如果找到任何CVE,请生成退出代码:

./vendor/bin/php-version-audit --fail-security

直接调用

是否要与PHP版本审核集成?当然有可能。请注意,这是一个非常早期的版本。我没有打破变化的任何计划,但是如果有新功能要实现,我也不会承诺保持界面不变。相对于直接调用,Docker / CLI当然是首选方法。

$phpVersionAudit = new lightswitch05\PhpVersionAudit\Application(phpversion(), false);
$phpVersionAudit->hasVulnerabilities(); #=> true
$phpVersionAudit->getLatestPatchVersion(); #=> '7.3.12'

JSON规则

用于驱动PHP版本审核的数据会定期自动更新,并托管在GitHub页面上。这是PHP Version Audit的真正要素,您可以直接使用它以供其他工具使用。如果您选择这样做,请通过提供适当的归属通知来遵守项目许可证。另外,我要求任何实现都阅读lastUpdatedDate,如果它已经过时(超过2周),则会失败。这不会发生,因为它会自动更新...但是我们都知道软件的脆弱性。

使用curljq直接从规则中获取最新的PHP 7.3版本

curl -s https://www.github.developerdan.com/php-version-audit/rules-v1.json | jq '.latestVersions["7.3"]'

选件

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.

输出量

  • auditVersion:字符串-正在审核的PHP版本。

  • hasVulnerabilities:bool-如果auditVersion是否具有任何已知的CVE。

  • hasSecuritySupport:bool-如果auditVersion仍在接收安全更新。

  • hasActiveSupport:bool-如果auditVersion仍在接受活动支持(错误更新)。

  • isLatestPatchVersion:bool-如果auditVersion是最新的修补程序级别发行版(7.3.x)。

  • isLatestMinorVersion:bool-如果auditVersion是最新的次要版本(7.xx)。

  • isLatestVersion:bool-如果auditVersion是最新版本(xxx)。

  • LatestPatchVersion:字符串-auditVersion的最新补丁程序级别版本。

  • LatestMinorVersion:字符串-auditVersion的最新次要版本。

  • LatestVersion:字符串-最新的PHP版本。

  • activeSupportEndDate:字符串|空-审核活动的有效支持终止的ISO8601格式日期(错误修复)。

  • securitySupportEndDate:字符串-ISO8601格式的日期,用于auditVersion的安全支持终止。

  • rulesLastUpdatedDate:字符串-上一次自动更新规则的ISO8601格式日期(每天两次)。

  • 漏洞:对象-已知会影响带有有关CVE的详细信息的auditVersion的CVE。对于最近发现的CVE,CVE详细信息可能为空。

项目目标:

  • 始终使用最新信息,如果信息过时,则失败。由于此工具旨在帮助其用户保持了解情况,因此如果过时,它必须又会失败。

  • 如果请求的信息不可用,则失败。例如 获取PHP版本6.0或5.7.0的支持终止日期。同样,由于此工具旨在帮助用户保持了解情况,因此如果无法获得所请求的信息,则该工具必须失败。

  • 在开放式和封闭式网络中均可使用(只要该工具是最新的)。

  • 最小的占用空间和依赖性。

  • 对最受支持的PHP版本的运行时支持。如果您将此工具与不受支持的PHP版本一起使用,那么您已经拥有该工具可以为您提供的所有答案:是的,您存在漏洞并且已经过时。当然,这只是用于运行时,该项目的目标仍然是提供有关任何合理版本的PHP的信息。

致谢和许可

  • 该项目是根据Apache License 2.0发布的

  • 此项目提供的信息的准确性无法得到验证或保证。所有功能仅出于方便目的而提供,不应出于可靠性,准确性或守时性的目的而使用。

  • 该徽标是使用Colin Viebrock的PHP徽标作为基本图像创建的,并在Creative Commons Attribution-Share Alike 4.0 International下发布徽标已从其原始形式进行了修改,以包括叠加图形。

  • Colin Viebrock不认可该项目以及对修改的PHP徽标的使用。

  • 该项目和PHP名称的使用未得到PHP Group的认可。

  • CVE详细信息和描述可从美国国家标准技术研究院的国家漏洞数据库下载NIST或NVD不认可该项目和CVE信息的使用。CVE详细信息仅供参考。信息的准确性无法验证。

  • PHP释放细节和支持日期从更改日志(解析457),以及支持的版本EOL日期信息的准确性无法验证。

原文链接:https://github.com/lightswitch05/php-version-audit

.
更多

1589982338979126.png


ots网络社区

www.ots-sec.cn

联系方式
更多

投稿邮箱:1481840992@qq.com

交流群2群:622534175

ots网络社区3群:1078548359

关注我们
更多
技术支持: 建站ABC | 管理登录