背景:
近日監測到Apache Dubbo存在反序列化漏洞(CVE-2019-17564),此漏洞可導致遠程代碼執行。Apache Dubbo是一款應用廣泛的高性能輕量級的Java RPC分布式服務框架。鑑於漏洞危害較大,建議儘快更新軟體。
情報通告:
威脅程度:
個人風險評級:低危
企業風險評級:中危
情報風險預警:對公司影響等級為中,對使用Apache Dubbo相應版本的企業均有被攻擊的風險。
情報描述:
Apache Dubbo是一個分布式框架,致力於提供高性能透明化的RPC遠程服務調用方案,以及SOA服務治理方案。Apache Dubbo在實際應用場景中主要負責解決分布式的相關需求。
Apache Dubbo支持多種協議,官方推薦使用 Dubbo 協議,CVE-2019-17564是屬於Apache Dubbo HTTP協議中的一個反序列化漏洞,該漏洞的主要原因在於當Apache Dubbo啟用HTTP協議之後,Apache Dubbo在接受來自消費者的遠程調用請求的時候存在一個不安全的反序列化行為,最終導致了遠程任意代碼執行。
漏洞分析
漏洞的產生原因如下:
com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet.service方法主要負責將來自消費者的遠程調用請求交給對應的handle完成處理。這裡是交給spring的httpinvoker完成後續的處理。
往下跟進會看到該請求會交給handleRequest方法處理。在handleRequest方法內部主要是完成對對象的調用以及調用結果的返回。
通過進一步的跟進可以發現在
org.springframework.remoting.rmi.RemoteInvocationSerializingExporter.doReadRemoteInvocation方法中進行了不安全的反序列化。
由於這個不安全的反序列化行為,最終導致了遠程任意代碼執行。
Apache Dubbo官方針對該漏洞修復的主要方式是禁止消費者在POST請求中攜帶Java對象。
影響版本:
2.7.0 <= Apache Dubbo <= 2.7.4
2.6.0 <= Apache Dubbo <= 2.6.7
Apache Dubbo = 2.5.x
解決方案:
目前Apache Dubbo官方已針對這些漏洞發布安全更新,請儘快安裝和應用更新:
https://github.com/apache/dubbo/releases/tag/dubbo-2.7.5