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

admin 2022年2月23日04:15:27评论125 views字数 1702阅读5分40秒阅读模式

PHP修复输入验证代码中的漏洞 聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士


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


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

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

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


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


具有讽刺意味的是,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 内部内存指针析构函数的简称。

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


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

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

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

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


PHP修复输入验证代码中的漏洞
PHP修复输入验证代码中的漏洞
如何解决
PHP修复输入验证代码中的漏洞


  • 如果你是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”。




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

奇安信代码卫士 (codesafe)

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

   PHP修复输入验证代码中的漏洞 觉得不错,就点个 “在看” 或 "” 吧~

原文始发于微信公众号(代码卫士):PHP修复输入验证代码中的漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月23日04:15:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PHP修复输入验证代码中的漏洞https://cn-sec.com/archives/798523.html

发表评论

匿名网友 填写信息