PHP反序列化误差清静通告
宣布时间 2018-08-23误差编号和级别
CVE编号:无,危险级别:高危,CVSS分值:官方未评定
影响版本
PHP > 5.3
误差概述
Secarma 公司的清静研究员 Sam Thomas 发明一种新型使用手艺,可导致黑客通过使用此前被以为危害较低的函数触发 PHP 语言中严重的反序列化误差。这种新手艺导致成千上万款 web 应用程序易遭远程代码执行攻击,包括一些受热门内容管理系统驱动的网站如 WordPress 和 Typo3。
PHP 反序列化或工具注入误差最早爆发在2009年,它可导致攻击者通过向 unserialized () PHP 函数提供恶意输入的要领执行多种攻击。序列化是将数据工具转换为纯字符串的历程,而反序列化函数资助程序从字符串重新建设工具。Thomas 发明攻击者能使用针对 Phar 文件的低危害函数触发反序列化攻击,而无需在种种场景中使用 unserialize () 函数。Phar 文件是 PHP 中的一种存档名堂,它以序列化名堂存储元数据,当文件操作函数 (fopen、file_exists、file_get_contents 等)试图会见存档文件时就会被反序列化。
误差验证
通过以下代码举行测试:
通过执行效果可以看到,若是现在通过phar://对我们现有的Phar文件举行文件操作,则其序列化元数据将被反序列化。这意味着我们在元数据中注入的工具将被加载到应用程序中。若是此应用程序具有已命名的类TestObject,并且具有魔术函数destruct()或wakeup(),则会自动挪用这些要领。这意味着我们可以在代码库中触发任何析构函数或叫醒要领,若是这些邪术函数对我们注入的数据举行操作,那么这可能会导致进一步的误差。
攻击者若是可以控制诸如include(),fopen(),file_get_contents(),file()等文件操作的函数,则可以造成严重的误差。因此,通常需要在这些函数使用前验证用户的输入。
修复建议
Thomas 将问题见告 WordPress,后者证实该问题保存。WordPress宣布的补丁并未完全解决这个问题。
Thomas 将误差见告 Typo3 公司,Typo3宣布版本 7.6.30、8.7.17 和 9.3 解决了该问题。
缓解计划:
1、对PHAR档案举行署名检测。
2、若是不需要,禁用PHAR扩展。
参考链接


京公网安备11010802024551号