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();