前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原创|从 PHP Git 源码的查找导致 PHP 安全漏洞的代码变更

原创|从 PHP Git 源码的查找导致 PHP 安全漏洞的代码变更

作者头像
猿哥
发布2020-01-14 17:36:27
6200
发布2020-01-14 17:36:27
举报
文章被收录于专栏:Web技术布道师Web技术布道师

前言

2020年好,各位 PHPer 们,很久没有写原创文章了,心里实在过意不去,决定写点文字,"从心"出发,以求共鸣。

背景 今天打开 php.net ,忽地发现 PHP 7.4.1 正式版本都已经发布了,感慨万千。想当年,自己从 PHP 5.1 版本作为学习起点,一直到 PHP 7.2 版本,已经学了十多年了。不得不说,这些年 PHP 的变化确实很多也很大,期间还炒了很长一段时间 PHP 6,但 6 在西方属于不吉利数字,所以跳过了。众所周知,PHP 是一门动态类型的语言,因此其编程时的灵活度和自由度会比强类型语言更高,然而正是这种特性使得它存在着与生俱来无法完整覆盖测试的漏洞场景。

操作步骤

第1步、打开 PHP 7.4.1 变更记录(https://www.php.net/ChangeLog-7.php#7.4.1)网址,如下图:

我们发现了好几个 CVE (CVE 的英文全称是“Common Vulnerabilities & Exposures”),即公共漏洞和暴露,而这种漏洞通常就是上一个版本存在的安全漏洞。

第2步、打开 bug.php.net 打开某个 bug

的详情(https://bugs.php.net/bug.php?id=78878),以及对应的 CVE 详情(https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-11046)。我们看一下 CVE 的描述:

In PHP versions 7.2.x below 7.2.26, 7.3.x below 7.3.13 and 7.4.0, PHP bcmath extension functions on some systems, including Windows, can be tricked into reading beyond the allocated space by supplying it with string containing characters that are identified as numeric by the OS but aren't ASCII numbers. This can read to disclosure of the content of some memory locations.

References

英文我就不翻译了,如果感兴趣,请自行想办法。

第3步、使用 php-src 官方源码,我在 gitee 上同步了一份来自 github 的源码,仓库地址:https://gitee.com/gopro/php-src.git,直接克隆一份到本地,git clone https://gitee.com/gopro/php-src.git。

第4步、使用 PHPStorm 打开 php-src 源码,如下图所示:

接着,切换分支到 PHP-7.4.1 ,在 php-src 目录右键

选择 Remote Branches -> origin/php-7.4.1 -> checkout。

第5步、比较 PHP-7.4.1 分支与 PHP-7.4.0 分支的目录改动区别。如下图操作:

结果如下:

第6步、我们鼠标双击图中的 str2num.c 文件,根据PHP 7.4.1 的 changelog 我们可以直接推断,这个变动应该就是修复了 CVE-2019-11046这个漏洞的,我们再来看看对应的文件变更比较:

这里已经比较明显了,如果有同学能够看懂 PHP 源码,可以继续深究一下了,本文纯属抛砖引玉。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PHP技术大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档