当前位置:安全行业动态 → 正文

PHPMailer库打补丁后漏洞仍然存在,怎么解?

责任编辑:editor005 作者:Michael Cobb |来源:企业网D1Net  2017-05-06 18:27:14 本文摘自:TechTarget中国

开源PHPMailer库被披露存有一个严重的远程代码执行漏洞。这个漏洞在被修补后,又进行了二次修复,因为第一次没有充分解决问题。那么,这个漏洞是如何工作的?为什么原始补丁没有解决问题?

Michael Cobb:代码库和框架大大减少了构建新应用程序所需的时间,保存了一些通用组件,因而开发团队不需要再为每个新项目从头开始构建。

绝大多数Web服务都是使用流行的第三方框架和库构建的。这种重复使用代码的最大问题是,如果在受欢迎的库中发现了一个漏洞,那么它会影响成千上万的应用程序、站点和服务。

这种情况非常频繁,最近又再次出现,前不久Dawid Golunski发现开源运输类PHPMailer中的远程代码执行漏洞。利用该漏洞,攻击者能够在Web服务器帐户的上下文中访问目标服务器,可能导致Web应用程序受损。

PHPMailer被许多开源项目所使用,如WordPress、Drupal和Joomla,全球约有900万用户。网上有数千个代码段和示例,显示了如何使用PHPMailer从各种形式(如联系人或注册表单)发送电子邮件,但其中大多数包含不安全的代码行,这让该漏洞得以被利用,因为它允许任何人伪造From和发件人地址。

PHPMailer使用PHP邮件功能作为发送邮件的默认方法。虽然PHPMailer使用的所有电子邮件地址在使用前都已先行进行验证,但Golunski发现了“生成一个包含可执行命令的有效‘发件人’电子邮件地址的方式”。虽然“发件人”电子邮件地址应由开发人员设置,但通常都是由用户自行设置,这非常不好,用户能够提交他们选择的任何电子邮件地址。另外,如果开发人员未对发件人的属性进行明确的设置,则使用发件人地址。此发件人值将添加到传递给PHP邮件功能的第五个参数,该函数无法过滤掉一些可能包含的字符串字面值转义字符。这样一来,攻击者能够注入包含发送邮件时执行命令的其他参数。

这个漏洞被标记为CVE-2016-10033,PHPMailer开发人员认为在发布的PHPMailer 5.2.18版本时已修复了该漏洞。他们在传递给PHP邮件功能之前,添加了escapeshellarg转义函数来清理发件人地址值。

但Golunski注意到,当escapeshellarg函数与现有的转义函数escapeshellcmd组合使用时,发件人值仍然没有得到正确的转义。通过向原始攻击代码添加额外的引用,仍然可以逃避补丁所提供的保护。这个新的漏洞是CVE-2016-10045,补丁在PHPMailer 5.2.20中被发布。

PHPMailer团队已经在GitHub上发布了如何正确处理网站表单中使用的电子邮件地址的示例。它需要向网站域内的有效地址发送表单数据,并由开发人员设置。

这被认为是一个非常关键的漏洞,它显示出开发人员和Web管理员保持对最新安全威胁以及使用任何共享组件、包或库订阅保持警惕的重要性。

开发人员应该审查使用PHPMailer邮件功能的所有脚本,还要研究PHP的各种转义功能的工作机制,以及它们对不同类型字符串的影响,因为错误的转义字符串也可能导致SQL注入。

关键字:phpmailer转义字符

本文摘自:TechTarget中国

x PHPMailer库打补丁后漏洞仍然存在,怎么解? 扫一扫
分享本文到朋友圈
当前位置:安全行业动态 → 正文

PHPMailer库打补丁后漏洞仍然存在,怎么解?

责任编辑:editor005 作者:Michael Cobb |来源:企业网D1Net  2017-05-06 18:27:14 本文摘自:TechTarget中国

开源PHPMailer库被披露存有一个严重的远程代码执行漏洞。这个漏洞在被修补后,又进行了二次修复,因为第一次没有充分解决问题。那么,这个漏洞是如何工作的?为什么原始补丁没有解决问题?

Michael Cobb:代码库和框架大大减少了构建新应用程序所需的时间,保存了一些通用组件,因而开发团队不需要再为每个新项目从头开始构建。

绝大多数Web服务都是使用流行的第三方框架和库构建的。这种重复使用代码的最大问题是,如果在受欢迎的库中发现了一个漏洞,那么它会影响成千上万的应用程序、站点和服务。

这种情况非常频繁,最近又再次出现,前不久Dawid Golunski发现开源运输类PHPMailer中的远程代码执行漏洞。利用该漏洞,攻击者能够在Web服务器帐户的上下文中访问目标服务器,可能导致Web应用程序受损。

PHPMailer被许多开源项目所使用,如WordPress、Drupal和Joomla,全球约有900万用户。网上有数千个代码段和示例,显示了如何使用PHPMailer从各种形式(如联系人或注册表单)发送电子邮件,但其中大多数包含不安全的代码行,这让该漏洞得以被利用,因为它允许任何人伪造From和发件人地址。

PHPMailer使用PHP邮件功能作为发送邮件的默认方法。虽然PHPMailer使用的所有电子邮件地址在使用前都已先行进行验证,但Golunski发现了“生成一个包含可执行命令的有效‘发件人’电子邮件地址的方式”。虽然“发件人”电子邮件地址应由开发人员设置,但通常都是由用户自行设置,这非常不好,用户能够提交他们选择的任何电子邮件地址。另外,如果开发人员未对发件人的属性进行明确的设置,则使用发件人地址。此发件人值将添加到传递给PHP邮件功能的第五个参数,该函数无法过滤掉一些可能包含的字符串字面值转义字符。这样一来,攻击者能够注入包含发送邮件时执行命令的其他参数。

这个漏洞被标记为CVE-2016-10033,PHPMailer开发人员认为在发布的PHPMailer 5.2.18版本时已修复了该漏洞。他们在传递给PHP邮件功能之前,添加了escapeshellarg转义函数来清理发件人地址值。

但Golunski注意到,当escapeshellarg函数与现有的转义函数escapeshellcmd组合使用时,发件人值仍然没有得到正确的转义。通过向原始攻击代码添加额外的引用,仍然可以逃避补丁所提供的保护。这个新的漏洞是CVE-2016-10045,补丁在PHPMailer 5.2.20中被发布。

PHPMailer团队已经在GitHub上发布了如何正确处理网站表单中使用的电子邮件地址的示例。它需要向网站域内的有效地址发送表单数据,并由开发人员设置。

这被认为是一个非常关键的漏洞,它显示出开发人员和Web管理员保持对最新安全威胁以及使用任何共享组件、包或库订阅保持警惕的重要性。

开发人员应该审查使用PHPMailer邮件功能的所有脚本,还要研究PHP的各种转义功能的工作机制,以及它们对不同类型字符串的影响,因为错误的转义字符串也可能导致SQL注入。

关键字:phpmailer转义字符

本文摘自:TechTarget中国

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^