• 重大漏洞!PHP multipart/form-data头部解析远程拒绝服务漏洞


     "有些人看不懂,简单比喻来说吧:目前刚出的任何安全防护都不会拦,网站类专属漏洞

    畸形数据包,2KB随机数据包,2M网速打死各种网站,cdn通挂!"

    PHP multipart/form-data
    头部解析远程拒绝服务漏洞

    发布日期:2015-05-18


    受影响的软件及系统:
    ====================
    PHP 5.0.0 - 5.0.5
    PHP 5.1.0 - 5.1.6
    PHP 5.2.0 - 5.2.17
    PHP 5.3.0 - 5.3.29
    PHP 5.4.0 - 5.4.40
    PHP 5.5.0 - 5.5.24
    PHP 5.6.0 - 5.6.8

    未受影响的软件及系统:
    ======================
    PHP 5.4.41
    PHP 5.5.25 
    PHP 5.6.9

    综述:
    ======
    PHP
    存在一个远程拒绝服务漏洞,攻击者通过发送恶意的HTTP请求,可以导致CPU资源大量占用,造成远程拒绝服务。

    此漏洞影响所有PHP 5版本,更低版本可能也受影响,建议尽快升级。

    分析:
    ======
    PHP
    在处理HTTP请求中的multipart/form-data头部数据时存在一个安全漏洞,导致PHP大量重复分配和拷贝内存的操作,可能造成CPU资源占用100%并持续较长时间,这可能造成远程拒绝服务攻击。

    PHP
    调用multipart_buffer_headers()函数来解析HTTP请求中的multipart头部数据,每次解析由get_line得到的一行。当被解析的行是以空白字符开始或者不包含":"字符时,该行将被当作是前一头字段的延续来处理。此时,将会分配一个新的缓冲区,将前一头字段的值与当前行拼接起来作为该字段新的值。这个过程包含1emalloc调用、2memcpy调用。

    若一个头字段是由多行组成,将导致多次调用emallocmemcpy,并且分配的空间与拷贝的长度将越来越大。

    因此,当行的数目足够多时,拷贝的操作将显著的消耗服务器的CPU。实际测试中,包含近一百万行的头字段可以使服务器的CPU保持100%几秒或者数十秒。如果并发多个攻击请求,可能造成更长时间的资源占用。

    攻击者可通过发送一个2M左右的包含多行multipart头部数据的HTTP请求来发起攻击,无需认证,也不依赖PHP程序本身的内容。


    解决方法:
    ==========
    没有好的临时解决方法,建议进行升级。

    厂商状态:
    ==========
    PHP
    已经在下列版本中修复此漏洞:

    PHP 5.4.41

    http://php.net/downloads.php#v5.4.41

    PHP 5.5.25

    http://php.net/downloads.php#v5.5.25

    PHP 5.6.9

    http://php.net/downloads.php#v5.6.9

    附加信息:
    ==========
    1. https://bugs.php.net/bug.php?id=69364
    2. http://php.net/ChangeLog-5.php#5.6.9
    3. http://www.nsfocus.net/index.php ... do=view&aid=157

  • 相关阅读:
    前端主页
    配置站点
    前台
    数据库配置
    后台:Django项目创建
    虚拟环境的搭建
    pip安装源
    AngularJS Scope(作用域)
    scala中的匿名函数 ==> 简单示例
    scala中的内部类 ==> 简单示例
  • 原文地址:https://www.cnblogs.com/h4ck0ne/p/5154654.html
Copyright © 2020-2023  润新知