gnu: httpd: Patch "options bleed" [fixes CVE-2017-9798].

* 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.
master
Ludovic Courtès 2017-09-18 15:41:03 +02:00
parent c08da2ee37
commit e14ab0ad07
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
3 changed files with 25 additions and 1 deletions

View 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 \

View File

@ -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));
}

View File

@ -107,7 +107,8 @@
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)