作者:啟明星辰ADLab
公眾號:ADLab
漏洞描述
2019年2月12日,Adobe官方發布了針對Adobe ColdFusion的安全更新補丁,編號為APSB19-10。補丁中包含啟明星辰ADLab發現并第一時間提交給官方的Critical(危急)反序列化漏洞,利用該漏洞攻擊者可遠程執行任意代碼。漏洞編號為CVE-2019-7091,如下圖所示:
本次漏洞為Adobe ColdFusion中FlashGateway服務中的漏洞。Adobe ColdFusion的FlashGateway服務存在反序列化漏洞,未經身份驗證的攻擊者向目標Adobe ColdFusion的FlashGateway服務發送精心構造的惡意數據,經反序列化后可遠程執行任意代碼。
漏洞時間軸
2018年9月21日:將漏洞詳情提交給官方;
2018年12月05日:確認漏洞存在并開始著手修復;
2019年2月12日:官方發布正式補丁。
漏洞分析
Adobe ColdFusion的FlashGateway服務允許flash連接到CFML和CFC模板。當攻擊者通過HTTP協議向FlashGateway服務POST精心構造的ActionMessage信息后,FlashGateway服務依次通過各種類型的filter進行invoke()操作。在flashgateway.filter.SerializationFilter的invoke方法中,實例化MessageDeserializer類型的反序列工具deserializer并通過deserializer.readMessage(m)方法對精心構造的ActionMessage消息進行反序列化,同時將ActionMessage中的targetURI、data等值賦值給MessageBody。
完成序列化過程后,此時ActionContext context中的內容即為輸入流中精心構造的ActionMessage信息。在flashgateway.filter.AdapterFilter的invoke方法中,讀取ActionContext中的MessageBody信息賦值給serviceName、functionName、parameters等,通過adapter=locateAdapter(context, serviceName, functionName, parameters, serviceType)方法得到flashgateway.adapter.java.JavaBeanAdapter類型的adapter,然后執行JavaBeanAdapter的invokeFunction方法。關鍵代碼如下:
public ActionContext invoke(ActionContext context) throws Throwable {
...
//讀取MessageBody信息
MessageBody requestMessageBody = context.getRequestMessageBody();
String serviceName = requestMessageBody.serviceName;
String functionName = requestMessageBody.functionName;
List parameters = requestMessageBody.parameters;
...
if (context.isDescribeRequest()) {
result = adapter.describeService(context, serviceName);
} else {
//adapter為JavaBeanAdapter,執行flashgateway.adapter.java.JavaBeanAdapter的invokeFunction方法
result = adapter.invokeFunction(context, serviceName, functionName, parameters); }
在JavaBeanAdapter的invokeFunction方法中,看到關鍵代碼:method.invoke(service, parameters.toArray())。
其中,目標執行方法method通過Method method = this.getMethod(parameters, serviceName, functionName, aClass)得到;
方法執行對象service 通過service = aClass.newInstance()得到;
方法執行參數parameters.toArray()通過MessageBody得到。
由此可見,method.invoke(service, parameters.toArray())的所用參數都可控,意味著可執行任意方法。
整個流程如下圖所示:
漏洞利用效果
影響版本
ColdFusion 11 Update 15及之前版本、ColdFusion 2016 Update 7及之前版本、ColdFusion 2018 Update 1及之前版本。
規避方案
-
修改gateway-config.xml文件的配置,禁止JavaBeanAdapter的使用。
-
升級最新補丁APSB19-10:https://helpx.adobe.com/security/products/coldfusion/apsb19-10.html。
啟明星辰積極防御實驗室(ADLab)
ADLab成立于1999年,是中國安全行業最早成立的攻防技術研究實驗室之一,微軟MAPP計劃核心成員。截止目前,ADLab通過CVE發布Windows、Linux、Unix等操作系統安全或軟件漏洞近400個,持續保持國際網絡安全領域一流水準。實驗室研究方向涵蓋操作系統與應用系統安全研究、移動智能終端安全研究、物聯網智能設備安全研究、Web安全研究、工控系統安全研究、云安全研究。研究成果應用于產品核心技術研究、國家重點科技項目攻關、專業安全服務等。

本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/811/
暫無評論