Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml =================================================================== diff -u -r92525f17be9db4e57a8551ff92d004f319fb4b73 -r5540073d41b09023132de765ea353e297a50e524 --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision 92525f17be9db4e57a8551ff92d004f319fb4b73) +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision 5540073d41b09023132de765ea353e297a50e524) @@ -8,6 +8,10 @@ + + + + Index: lams_common/src/java/org/lamsfoundation/lams/web/filter/LamsAnnotationMethodHandlerAdapter.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/web/filter/LamsAnnotationMethodHandlerAdapter.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/web/filter/LamsAnnotationMethodHandlerAdapter.java (revision 5540073d41b09023132de765ea353e297a50e524) @@ -0,0 +1,29 @@ +package org.lamsfoundation.lams.web.filter; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.web.bind.ServletRequestDataBinder; +import org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter; + +/** + * Addresses Spring vulnerability CVE-2022-22965 + * https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement + */ +public class LamsAnnotationMethodHandlerAdapter extends AnnotationMethodHandlerAdapter { + + @Override + protected ServletRequestDataBinder createBinder(HttpServletRequest request, Object target, String objectName) + throws Exception { + ServletRequestDataBinder binder = super.createBinder(request, target, objectName); + String[] fields = binder.getDisallowedFields(); + List fieldList = new ArrayList<>(fields != null ? Arrays.asList(fields) : Collections.emptyList()); + fieldList.addAll(Arrays.asList("class.*", "Class.*", "*.class.*", "*.Class.*")); + binder.setDisallowedFields(fieldList.toArray(new String[] {})); + return binder; + } +} \ No newline at end of file