diff --git a/pom.xml b/pom.xml index 210daa8d642..2f5ce9e18af 100644 --- a/pom.xml +++ b/pom.xml @@ -77,7 +77,7 @@ 25 2.3.1 0.9.1 - 0.9.3 + 0.9.6 3.7.1 1.19.1 3.14.0 @@ -105,7 +105,7 @@ 9090 3.13.1 1.2 - 1.4.5 + 1.4.21 1.9.0 diff --git a/src/main/java/org/owasp/webgoat/lessons/vulnerablecomponents/VulnerableComponentsLesson.java b/src/main/java/org/owasp/webgoat/lessons/vulnerablecomponents/VulnerableComponentsLesson.java index e328be123da..fb98c68491e 100644 --- a/src/main/java/org/owasp/webgoat/lessons/vulnerablecomponents/VulnerableComponentsLesson.java +++ b/src/main/java/org/owasp/webgoat/lessons/vulnerablecomponents/VulnerableComponentsLesson.java @@ -8,6 +8,7 @@ import static org.owasp.webgoat.container.assignments.AttackResultBuilder.success; import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.security.AnyTypePermission; import org.apache.commons.lang3.StringUtils; import org.owasp.webgoat.container.assignments.AssignmentEndpoint; import org.owasp.webgoat.container.assignments.AssignmentHints; @@ -24,6 +25,8 @@ public class VulnerableComponentsLesson implements AssignmentEndpoint { @PostMapping("/VulnerableComponents/attack1") public @ResponseBody AttackResult completed(@RequestParam String payload) { XStream xstream = new XStream(); + // Intentionally insecure for this lesson to demonstrate vulnerable deserialization behavior. + xstream.addPermission(AnyTypePermission.ANY); xstream.setClassLoader(Contact.class.getClassLoader()); xstream.alias("contact", ContactImpl.class); xstream.ignoreUnknownElements(); diff --git a/src/test/java/org/owasp/webgoat/lessons/vulnerablecomponents/VulnerableComponentsLessonTest.java b/src/test/java/org/owasp/webgoat/lessons/vulnerablecomponents/VulnerableComponentsLessonTest.java index e9daf90d11f..1acf6b9c6ff 100644 --- a/src/test/java/org/owasp/webgoat/lessons/vulnerablecomponents/VulnerableComponentsLessonTest.java +++ b/src/test/java/org/owasp/webgoat/lessons/vulnerablecomponents/VulnerableComponentsLessonTest.java @@ -9,6 +9,7 @@ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.StreamException; +import com.thoughtworks.xstream.security.AnyTypePermission; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -31,6 +32,8 @@ public class VulnerableComponentsLessonTest { @Test public void testTransformation() throws Exception { XStream xstream = new XStream(); + // Intentionally insecure for this lesson to validate vulnerable deserialization behavior. + xstream.addPermission(AnyTypePermission.ANY); xstream.setClassLoader(Contact.class.getClassLoader()); xstream.alias("contact", ContactImpl.class); xstream.ignoreUnknownElements(); @@ -41,6 +44,8 @@ public void testTransformation() throws Exception { @Disabled public void testIllegalTransformation() throws Exception { XStream xstream = new XStream(); + // Intentionally insecure for this lesson to validate vulnerable deserialization behavior. + xstream.addPermission(AnyTypePermission.ANY); xstream.setClassLoader(Contact.class.getClassLoader()); xstream.alias("contact", ContactImpl.class); xstream.ignoreUnknownElements(); @@ -54,6 +59,8 @@ public void testIllegalTransformation() throws Exception { @Test public void testIllegalPayload() throws Exception { XStream xstream = new XStream(); + // Intentionally insecure for this lesson to validate vulnerable deserialization behavior. + xstream.addPermission(AnyTypePermission.ANY); xstream.setClassLoader(Contact.class.getClassLoader()); xstream.alias("contact", ContactImpl.class); xstream.ignoreUnknownElements();