aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2017-06-19 18:34:53 +0200
committerFlorian Weimer <fweimer@redhat.com>2017-06-19 18:34:53 +0200
commitefa26d9c13a6fabd34a05139e1d8b2e441b2fae9 (patch)
treea049c779caac19dd8856fe5871c1d02d14587385
parent9f172a30acdd64e140bedd438458830fa8c27ad8 (diff)
downloadglibc-efa26d9c13a6fabd34a05139e1d8b2e441b2fae9.tar
glibc-efa26d9c13a6fabd34a05139e1d8b2e441b2fae9.tar.gz
glibc-efa26d9c13a6fabd34a05139e1d8b2e441b2fae9.tar.bz2
glibc-efa26d9c13a6fabd34a05139e1d8b2e441b2fae9.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--ChangeLog7
-rw-r--r--NEWS1
-rw-r--r--elf/rtld.c3
3 files changed, 10 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 989e0da9ae..5e5e8615b4 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-03-31 Slava Barinov <v.barinov@samsung.com>
[BZ #21289]
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;