diff options
author | Florian Weimer <fweimer@redhat.com> | 2017-06-19 18:34:53 +0200 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2017-07-13 11:35:56 -0300 |
commit | ed739093d19855c71b3f38bfed7d318340b22612 (patch) | |
tree | cd7ba6f9453f3ad85fb65419645d478517c97944 | |
parent | fec2dc4089f6688e0f4ffc962700a0858f08bef9 (diff) | |
download | glibc-ed739093d19855c71b3f38bfed7d318340b22612.tar.gz glibc-ed739093d19855c71b3f38bfed7d318340b22612.tar.xz glibc-ed739093d19855c71b3f38bfed7d318340b22612.zip |
CVE-2017-1000366: Ignore LD_LIBRARY_PATH for AT_SECURE=1 programs [BZ #21624]
LD_LIBRARY_PATH can only be used to reorder system search paths, which is not useful functionality. This makes an exploitable unbounded alloca in _dl_init_paths unreachable for AT_SECURE=1 programs. (cherry picked from commit f6110a8fee2ca36f8e2d2abecf3cba9fa7b8ea7d)
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | elf/rtld.c | 3 |
3 files changed, 10 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index aac7add885..07ca17d151 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2017-06-19 Florian Weimer <fweimer@redhat.com> + + [BZ #21624] + CVE-2017-1000366 + * elf/rtld.c (process_envvars): Ignore LD_LIBRARY_PATH for + __libc_enable_secure. + 2017-04-11 Adhemerval Zanella <adhemerval.zanella@linaro.org> * posix/globtest.sh: Add cleanup routine on trap 0. diff --git a/NEWS b/NEWS index c7ff11610e..76a7f6a193 100644 --- a/NEWS +++ b/NEWS @@ -43,6 +43,7 @@ The following bugs are resolved with this release: [20177] $dp is not initialized correctly in sysdeps/hppa/start.S [20357] Incorrect cos result for 1.5174239687223976 [21289] Fix symbol redirect for fts_set + [21624] Unsafe alloca allows local attackers to alias stack and heap (CVE-2017-1000366) Version 2.23 diff --git a/elf/rtld.c b/elf/rtld.c index 647661ca45..215a9aec8f 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -2437,7 +2437,8 @@ process_envvars (enum mode *modep) case 12: /* The library search path. */ - if (memcmp (envline, "LIBRARY_PATH", 12) == 0) + if (!__libc_enable_secure + && memcmp (envline, "LIBRARY_PATH", 12) == 0) { library_path = &envline[13]; break; |