gnu: httpd: Patch "options bleed" [fixes CVE-2017-9798].
authorLudovic Courtès <ludo@gnu.org>
Mon, 18 Sep 2017 13:41:03 +0000 (15:41 +0200)
committerLudovic Courtès <ludo@gnu.org>
Mon, 18 Sep 2017 13:44:52 +0000 (15:44 +0200)
* gnu/packages/patches/httpd-CVE-2017-9798.patch: New file.
* gnu/packages/web.scm (httpd)[source]: Use it.
* gnu/local.mk (dist_patch_DATA): Add it.

gnu/local.mk
gnu/packages/patches/httpd-CVE-2017-9798.patch [new file with mode: 0644]
gnu/packages/web.scm

index c6fc436..bdd49c6 100644 (file)
@@ -725,6 +725,7 @@ dist_patch_DATA =                                           \
   %D%/packages/patches/heimdal-CVE-2017-11103.patch            \
   %D%/packages/patches/hmmer-remove-cpu-specificity.patch      \
   %D%/packages/patches/higan-remove-march-native-flag.patch    \
+  %D%/packages/patches/httpd-CVE-2017-9798.patch               \
   %D%/packages/patches/hubbub-sort-entities.patch              \
   %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch        \
   %D%/packages/patches/hydra-disable-darcs-test.patch          \
diff --git a/gnu/packages/patches/httpd-CVE-2017-9798.patch b/gnu/packages/patches/httpd-CVE-2017-9798.patch
new file mode 100644 (file)
index 0000000..8391a3d
--- /dev/null
@@ -0,0 +1,22 @@
+Fixes "options bleed", aka. CVE-2017-9798:
+
+  https://nvd.nist.gov/vuln/detail/CVE-2017-9798
+  https://blog.fuzzing-project.org/60-Optionsbleed-HTTP-OPTIONS-method-can-leak-Apaches-server-memory.html
+
+From <https://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/server/core.c?r1=1805223&r2=1807754&pathrev=1807754&view=patch>.
+
+--- a/server/core.c    2017/08/16 16:50:29     1805223
++++ b/server/core.c    2017/09/08 13:13:11     1807754
+@@ -2266,6 +2266,12 @@
+             /* method has not been registered yet, but resource restriction
+              * is always checked before method handling, so register it.
+              */
++            if (cmd->pool == cmd->temp_pool) {
++                /* In .htaccess, we can't globally register new methods. */
++                return apr_psprintf(cmd->pool, "Could not register method '%s' "
++                                   "for %s from .htaccess configuration",
++                                    method, cmd->cmd->name);
++            }
+             methnum = ap_method_register(cmd->pool,
+                                          apr_pstrdup(cmd->pool, method));
+         }
index 72892ff..6c9316a 100644 (file)
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "0fn1778mxhf78np2d8qlycg1c2ak18rxax41plahasca4clc3z3i"))))
+               "0fn1778mxhf78np2d8qlycg1c2ak18rxax41plahasca4clc3z3i"))
+             (patches (search-patches "httpd-CVE-2017-9798.patch"))))
     (build-system gnu-build-system)
     (native-inputs `(("pcre" ,pcre "bin")))       ;for 'pcre-config'
     (inputs `(("apr" ,apr)