This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch 4.0.x
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/4.0.x by this push:
     new 0e5b4a2  [OPENMEETINGS-1954] xstream is made more secure
0e5b4a2 is described below

commit 0e5b4a20a5d898a48714bf6b5efcb9ad37c4808c
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Sun Oct 28 14:01:20 2018 +0700

    [OPENMEETINGS-1954] xstream is made more secure
---
 .../apache/openmeetings/backup/converter/WbConverter.java   | 13 ++++++++++---
 .../openmeetings/web/util/UserDashboardPersister.java       |  9 +++++++++
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git 
a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
 
b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
index 96e9617..e289c54 100644
--- 
a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
+++ 
b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
@@ -52,6 +52,9 @@ import com.github.openjson.JSONArray;
 import com.github.openjson.JSONObject;
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.XppDriver;
+import com.thoughtworks.xstream.security.NoTypePermission;
+import com.thoughtworks.xstream.security.NullPermission;
+import com.thoughtworks.xstream.security.PrimitiveTypePermission;
 
 public class WbConverter {
        private static final Logger log = 
Red5LoggerFactory.getLogger(WbConverter.class, getWebAppRootKey());
@@ -306,10 +309,14 @@ public class WbConverter {
                File file = new File(OmFileHelper.getUploadWmlDir(), name);
                log.debug("filepathComplete: {}", file);
 
-               XStream xStream = new XStream(new XppDriver());
-               xStream.setMode(XStream.NO_REFERENCES);
+               XStream xstream = new XStream(new XppDriver());
+               xstream.setMode(XStream.NO_REFERENCES);
+               xstream.addPermission(NoTypePermission.NONE);
+               xstream.addPermission(NullPermission.NULL);
+               xstream.addPermission(PrimitiveTypePermission.PRIMITIVES);
+               xstream.allowTypeHierarchy(List.class);
                try (InputStream is = new FileInputStream(file); BufferedReader 
reader = new BufferedReader(new InputStreamReader(is, UTF_8))) {
-                       return (List<?>) xStream.fromXML(reader);
+                       return (List<?>) xstream.fromXML(reader);
                } catch (Exception err) {
                        log.error("loadWmlFile", err);
                }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
index 10ee875..fd2449f 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
@@ -29,12 +29,16 @@ import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.ArrayList;
 import java.util.Collections;
 
 import org.slf4j.Logger;
 import org.wicketstuff.dashboard.Dashboard;
 import org.wicketstuff.dashboard.DashboardPersister;
 import org.wicketstuff.dashboard.WidgetComparator;
+import com.thoughtworks.xstream.security.NoTypePermission;
+import com.thoughtworks.xstream.security.NullPermission;
+import com.thoughtworks.xstream.security.PrimitiveTypePermission;
 
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.DomDriver;
@@ -61,6 +65,11 @@ public class UserDashboardPersister implements 
DashboardPersister {
 
                        xstream = new XStream(new DomDriver(UTF_8.name()));
                        xstream.setMode(XStream.NO_REFERENCES);
+                       xstream.addPermission(NoTypePermission.NONE);
+                       xstream.addPermission(NullPermission.NULL);
+                       
xstream.addPermission(PrimitiveTypePermission.PRIMITIVES);
+                       xstream.allowTypesByWildcard(new String[] 
{"org.apache.openmeetings.web.**"});
+                       xstream.allowTypeHierarchy(ArrayList.class);
                        xstream.alias("dashboard", UserDashboard.class);
                }
 

Reply via email to