[lucene-solr] 06/11: Fix CVE-2017-3163

Markus Koschany apo at moszumanska.debian.org
Sun Jan 14 14:29:29 UTC 2018


This is an automated email from the git hooks/post-receive script.

apo pushed a commit to branch master
in repository lucene-solr.

commit 4e5f8a68c6a05d98dd90ee5d3d731e2445c9313a
Author: Markus Koschany <apo at debian.org>
Date:   Sun Jan 14 00:54:38 2018 +0100

    Fix CVE-2017-3163
---
 debian/patches/CVE-2017-3163.patch | 50 ++++++++++++++++++++++++++++++++++++++
 debian/patches/series              |  1 +
 2 files changed, 51 insertions(+)

diff --git a/debian/patches/CVE-2017-3163.patch b/debian/patches/CVE-2017-3163.patch
new file mode 100644
index 0000000..a5140ff
--- /dev/null
+++ b/debian/patches/CVE-2017-3163.patch
@@ -0,0 +1,50 @@
+Description: Validation of filename params in ReplicationHandler
+ This is a backport of upstream patch available in commit
+ ae789c252687dc8a18bfdb677f2e6cd14570e4db made by janhoy <janhoy at apache.org>
+Author: Lucas Kanashiro <kanashiro at debian.org>
+Last-Updated: 2017-07-21
+
+--- a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
++++ b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
+@@ -42,6 +42,8 @@
+ import java.io.*;
+ import java.nio.ByteBuffer;
+ import java.nio.channels.FileChannel;
++import java.nio.file.Path;
++import java.nio.file.Paths;
+ import java.text.NumberFormat;
+ import java.util.*;
+ import java.util.concurrent.locks.ReentrantLock;
+@@ -1010,8 +1012,8 @@
+     }
+ 
+     public void write(OutputStream out) throws IOException {
+-      String fileName = params.get(FILE);
+-      String cfileName = params.get(CONF_FILE_SHORT);
++      String fileName = validateFilenameOrError(params.get(FILE));
++      String cfileName = validateFilenameOrError(params.get(CONF_FILE_SHORT));
+       String sOffset = params.get(OFFSET);
+       String sLen = params.get(LEN);
+       String compress = params.get(COMPRESSION);
+@@ -1091,6 +1093,21 @@
+       }
+     }
+ 
++    // Throw exception on directory traversal attempts
++    protected String validateFilenameOrError(String filename) {
++      if (filename != null) {
++        Path filePath = Paths.get(filename);
++        for (Path subpath : filePath) {
++          if ("..".equals(subpath.toString())) {
++            throw new SolrException(ErrorCode.FORBIDDEN, "File name cannot contain ..");
++          }
++        }
++        if (filePath.isAbsolute()) {
++          throw new SolrException(ErrorCode.FORBIDDEN, "File name must be relative");
++        }
++        return filename;
++      } else return null;
++    }
+ 
+     /**
+      * Used to write a marker for EOF
diff --git a/debian/patches/series b/debian/patches/series
index 133e43c..efe950d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -13,3 +13,4 @@ commons-codec-compatibility.patch
 java8-compatibility.patch
 CVE-2017-12629.patch
 remove-RunExecutableListener.patch
+CVE-2017-3163.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/lucene-solr.git



More information about the pkg-java-commits mailing list