2019年1月11日,ThinkPHP团队发布了ThinkPHP V5版本更新,本次更新包含了一个可以导致远程代码执行的严重安全漏洞。无独有偶,该框架在2018年12月10日发布的安全更新中同样包含一个可以导致远程代码执行的严重漏洞。
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。
经过北斗安全团队分析,漏洞形成原因为Requests类的method方法中,没有对属性进行严格检查,导致可以执行任意远程代码。攻击者利用该漏洞执行任意远程代码,甚至控制系统,从而执行更多其他恶意活动。本次安全更新中的远程代码执行漏洞影响版本为ThinkPHP 5.0.X-5.0.23(包含5.0.23),ThinkPHP 5.0.24不受影响。
针对本次更新涉及漏洞,已部署启明星辰泰合TSOC安全管理平台、泰合日志审计或泰合网络安全态势感知系统的客户,北斗安全团队建议对该漏洞可疑利用行为进行监测,防止因为漏洞修补不及时或者业务原因不可修复而导致被成功利用。已经部署启明星辰安全产品、网御星云安全的尽快升级关联分析场景。对于关联分析场景内容需要进一步了解的,可以联系区域行业销售负责人,或回复本微信公众号获取。
北斗安全团队认为,ThinkPHP漏洞的监测方式可以在系统中添加规则,主要利用泰合管理平台下级各类采集探针,或者相关安全产品的检测结果。若条件允许,可以将ThinkPHP访问记录进行采集,结合该日志可以更有效的识别高风险入侵行为,降低误报。下图配置是将检测日志与PHP访问记录日志进行关联,其中PHP访问配置为可选。
规则说明:检测事件中控制日志源类型为泰合管理平台下级各类采集探针,也可以专项安全产品IPS、IDS、WAF等,其次分别将“ThinkPHP”和“代码执行”作为关键字通过逻辑与进行过滤。PHP记录中的事件为访问记录中的POST请求内容,其中包含public目录为可疑行为。通过关联条件“源IP”和“事件时间”将两种数据进行关联。
关于漏洞的修复方案:
l 官方已经发布安全更新,将5.0.x升级到5.0.24(http://www.thinkphp.cn/down.html)。
l 对于不可进行升级的,可以手动修改library/think/Request.php 文件(注意业务功能是否收到影响)。
参考链接:
lhttps://github.com/top-think/framework/commit/4a4b5e64fa4c46f851b4004005bff5f3196de003
l https://blog.thinkphp.cn/910675