]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
ldd: never run file directly
authorAndreas Schwab <schwab@suse.de>
Mon, 28 Aug 2017 17:49:18 +0000 (19:49 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Mon, 28 Aug 2017 17:49:18 +0000 (19:49 +0200)
(cherry picked from commit eedca9772e99c72ab4c3c34e43cc764250aa3e3c)

ChangeLog
NEWS
elf/ldd.bash.in

index ad05da8ade910cfd258bd471a534206bf7c77bc4..fa27c6f66fb049f8f27a82451aa6b719e8989c36 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-08-16  Andreas Schwab  <schwab@suse.de>
+
+       [BZ #16750]
+       CVE-2009-5064
+       * elf/ldd.bash.in: Never run file directly.
+
 2017-08-10  Florian Weimer  <fweimer@redhat.com>
 
        * inet/net-internal.h (__inet6_scopeid_pton): Remove
diff --git a/NEWS b/NEWS
index 0534c5296e7d084bc782ac45dcb85cae59e3c71f..756e849643c5ed618e1539ec95c5cda6a83e759f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -7,8 +7,17 @@ using `glibc' in the "product" field.
 \f
 Version 2.26.1
 
+Security related changes:
+
+  CVE-2009-5064: The ldd script would sometimes run the program under
+  examination directly, without preventing code execution through the
+  dynamic linker.  (The glibc project disputes that this is a security
+  vulnerability; only trusted binaries must be examined using the ldd
+  script.)
+
 The following bugs are resolved with this release:
 
+  [16750] ldd: Never run file directly.
   [21242] assert: Suppress pedantic warning caused by statement expression
   [21780] posix: Set p{read,write}v2 to return ENOTSUP
   [21871] x86-64: Use _dl_runtime_resolve_opt only with AVX512F
index 7dd1fccf249c5c333e2c45de5779d541d68f84fc..686785e23581cc1f8f5396018241784c01d32171 100644 (file)
@@ -164,18 +164,6 @@ warning: you do not have execution permission for" "\`$file'" >&2
       fi
     done
     case $ret in
-    0)
-      # If the program exits with exit code 5, it means the process has been
-      # invoked with __libc_enable_secure.  Fall back to running it through
-      # the dynamic linker.
-      try_trace "$file"
-      rc=$?
-      if [ $rc = 5 ]; then
-       try_trace "$RTLD" "$file"
-       rc=$?
-      fi
-      [ $rc = 0 ] || result=1
-      ;;
     1)
       # This can be a non-ELF binary or no binary at all.
       nonelf "$file" || {
@@ -183,7 +171,7 @@ warning: you do not have execution permission for" "\`$file'" >&2
        result=1
       }
       ;;
-    2)
+    0|2)
       try_trace "$RTLD" "$file" || result=1
       ;;
     *)