下面介紹 Groovy 的安全補(bǔ)丁或更新信息。注意,除非有特別說明,否則不會有二進(jìn)制或源補(bǔ)丁。要想獲得補(bǔ)丁文件,需要升級到最新版本的 Groovy。
2.4.4 之前的版本并不是 Apache 發(fā)布的,所以沒有關(guān)于老版本的安全更新官方補(bǔ)丁。
當(dāng) Groovy 在應(yīng)用程序的類路徑中時,應(yīng)用可以采用 Java 的序列化機(jī)制來與服務(wù)器進(jìn)行通信,或者存儲本地數(shù)據(jù)。攻擊者就可能會采用一個特殊的序列化對象,直接在反序列化時執(zhí)行某種代碼。所有依賴序列化,并且無法隔離反序列化對象代碼的應(yīng)用都會受此缺陷影響。
Apache Groovy 2.4.4 是 Apache Software Foundation 最先發(fā)布也是只支持的官方版本。強(qiáng)力建議所有使用序列化機(jī)制的用戶都升級到該版本。如果無法升級或者依賴?yán)习姹?,可以?MethodClosure
類(src/main/org/codehaus/groovy/runtime/MethodClosure.java
)上使用下列補(bǔ)丁:
public class MethodClosure extends Closure {
+ private Object readResolve() {
+ throw new UnsupportedOperationException();
+ }
另外,你還應(yīng)該確認(rèn)是否使用了自定義的安全策略文件(使用標(biāo)準(zhǔn)的 Java 安全管理器),或者確認(rèn)你沒有依賴序列化機(jī)制來進(jìn)行遠(yuǎn)程通信。
該缺陷是由惠普的 “零日計劃”(Zero Day Initiative)研究員 cpnrodzc7 所發(fā)現(xiàn)的。