热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP修复输入验证代码中的漏洞

聚焦源代码安全,网罗国内外最新资讯!编译:代码卫士如果你在使用PHP,检查下是否是最新版本8.1.3。上周,P

c2da0ee4aacd8b75a2b27023a2d7ab94.gif 聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士

如果你在使用PHP,检查下是否是最新版本 8.1.3。上周,PHP 发布该版本,修复了多个内存管理不当漏洞,其中一个漏洞是 CVE-2021-21708,是函数 php_filter_float() 中的一个释放后使用漏洞。

b00a2214a2fbb685d9d4ab8cfb938be2.png

目前,PHP 8.0和7.4 仍然受支持且易受攻击。如用户使用的并非最新的8.1 版本,则需要分别升级至 8.0.16和7.4.28 版本。

基于使用PHP查询数据库的 PoC exploit ,该漏洞可用于使 PHP 进程崩溃,很可能导致DoS 攻击。当然,和往常一样,Mozilla 在安全更新中指出,修复具有内存损坏证据的漏洞后,应该“假设某些漏洞本可被用于执行任意代码”。

远程代码执行 (RCE) 即从外部提交的数据不仅可以导致计算机上的程序崩溃,还可能在该进程中获得控制权,通常会导致网络入侵、数据提取、恶意软件植入等等。

a7ada670f43e13e70add6564be5a13de.png

a52b0bd58840b19cf08d3599adec5112.png

无效的验证代码

ed3c598c9a13ca2b76b336b2702038cb.png

具有讽刺意味的是,PHP 过滤函数旨在验证导入的数据,如确保有人发送的整数(如5、7、11)并非无法被可靠地转为整数(如3.14159或3/16 inch)的文本字符串。

CVE-2021-21708 是负责检查有效浮点数的代码的一部分。PHP 的数字过滤函数使用户不仅可检查导入的数据是合法的,而且还检查它位于某个特定范围如确保其不大于2.71828或介于-1和1之间。如果导入数字已经是浮点数,则如下代码所示,PHP的旧版本代码(8.1.2)位于左侧,新版本代码 (8.1.3) 位于右侧(此处无bug,因此两个版本是相似的)。不了解C语言也没关系,需要注意的点是首先完成错误检查,之后是一行代码以释放PHP当前使用的内存以存储该数字,接着立即又是一行代码为PHP重新分配内存供使用。Zval_ptr_dtor() 是PHP 内部内存指针析构函数的简称。

804dc7fdb578197b04f961837378813e.png

如果导入的数字是一个整数,没有小数点后面的部分,则所用代码应该略有不同。

如下所示,旧版本中的顺序“执行检查,如失败则推出;但如成功,则为数字取消分配并重新分配存储空间”是混合的,其顺序是“取消该PHP值使用的内存分配,然后执行检查,如失败则退出,留下的指向内存的PHP对象不久将被分配到其它地方,之后将引发释放后使用问题;但如果检查成功,则为该数字重新分配新的存储空间。”这就像先走到路上,之后才检查路面是否安全再完成过路动作。新版本代码已将检查路面是否安全放在首位,之后再上路并直接走到对面。

由Visual Studio Code 的“diff”视图展现了8.1.2版本中标记的红色部分被转移到8.1.3版本的绿色部分。

45eba24690c0247b70c94e08d44ebb36.png

83691dfc073df75f832c23283eef305f.png

34fa8593417d9bc0f215a5b59278d152.png

如何解决

4c7c4e1eae7671f3fcff87d36e7b1f57.png

  • 如果你是PHP用户,则更新至8.1.3版本。如尚未更新至PHP 8.1版本,则更新至更早的两个分支版本:8.0版本需升级至8.0.16,7.4版本需升级至7.4.28版本。如使用Linux 发行版本管理PHP,则查看各发行版本获取详情。

  • 如为程序员,则需要注意用C编写的代码要求一直注意随处的内存,因此隐藏良好的像本文提到的漏洞不会潜入。

  • 如为程序员,则尝试编写代码时减少在你之后的编程人员带来的错误数量。


推荐阅读

PHP Everywhere 插件中存在严重RCE,影响数千个 WordPress 站点

漏洞10年深藏不露,PHP 项目依赖关系管理工具Composer安全吗?

PHP Composer 新漏洞可引发大规模供应链攻击

PHP源代码后门事件后续:用户数据库遭泄露或是元凶

详细分析PHP源代码后门事件及其供应链安全启示

原文链接

https://nakedsecurity.sophos.com/2022/02/18/irony-alert-php-fixes-security-flaw-in-input-validation-code/

题图:Pixabay License

本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

ca40cf4c208ea10905278d54e0d2a6d6.png

cf3f7a57783362a8ea47af2b47a90fce.png

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

   470596166c6565fa4431eea428f1b928.gif 觉得不错,就点个 “在看” 或 "赞” 吧~



推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
author-avatar
帅气小子勇哥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有