來源:先知安全技術社區
作者:廖新喜
1 綜述
近日,Pivotal 官方發布通告表示 Spring-data-rest 服務器在處理 PATCH 請求時存在一個遠程代碼執行漏洞(CVE-2017-8046)。攻擊者可以構造惡意的 PATCH 請求併發送給 spring-date-rest 服務器,通過構造好的 JSON 數據來執行任意 Java 代碼。官方已經發布了新版本修復了該漏洞。
相關地址:
https://pivotal.io/security/cve-2017-8046
受影響的版本
- Spring Data REST versions < 2.5.12, 2.6.7, 3.0 RC3
- Spring Boot version < 2.0.0M4
- Spring Data release trains < Kay-RC3
不受影響的版本
- Spring Data REST 2.5.12, 2.6.7, 3.0RC3
- Spring Boot 2.0.0.M4
- Spring Data release train Kay-RC3
解決方案:
官方已經發布了新版本修復了該漏洞,受影響的用戶請儘快升級至最新版本來防護該漏洞。
參考鏈接:
https://projects.spring.io/spring-data-rest/
https://projects.spring.io/spring-boot/
2 補丁分析
從官方的描述來看就是就是 Spring-data-rest 服務處理 PATCH 請求不當,導致任意表達式執行從而導致的 RCE。
首先來看下補丁,主要是 evaluateValueFromTarget 添加了一個校驗方法 verifyPath,對於不合規格的 path 直接報異常退出,主要是 property.from(pathSource,type)實現,基本邏輯就是通過反射去驗證該 Field 是否存在於 bean 中。
转载请注明:IAMCOOL » Spring Data Rest服務器PATCH請求遠程代碼執行漏洞CVE-2017-8046補充分析