ExecutableStacks

Differences between revisions 28 and 62 (spanning 34 versions)
Revision 28 as of 2009-08-06 11:37:32
Size: 3309
Editor: sites
Comment:
Revision 62 as of 2017-08-22 14:25:31
Size: 20600
Editor: jdstrand
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
When the linker (ld) performs linking, it marks the stack as executable based on lowest common demoninator. For example, everything is marked non-executable except one .o file, so the entire library gets an executable stack. In the case of a shared library, this would pollute any program it was loaded into. (On i386, the assembler assumes that unmarked .S files need an executable stack, and marks it as such.) When the linker (ld) performs linking, it marks the stack as executable based on the lowest common demoninator. For example, if everything is marked non-executable except one .o file, the entire library would get marked for an executable stack. In the case of a shared library, this would pollute any program it was loaded into. (The assembler assumes that unmarked .S files need an executable stack, and mark them accordingly.)
Line 8: Line 8:
   * check an ELF binary: "readelf -lW $BIN | grep GNU_STACK" shows with "E" flag.
   * check a .o file: "scanelf -e $BIN" shows an "X".
   * found on the system, check an ELF binary: "readelf -lW $BIN | grep GNU_STACK" shows with "E" flag.
   * found in a build, check a .o file: "readelf -SW $OBJ | grep GNU-stack" shows with "X" flag. (Or "scanelf -e $OBJ" shows an "X".)
Line 12: Line 12:
   * fix assembly source by adding flags to assembler: {{{.section .note.GNU-stack, "", @progbits}}}
   * fix compiler's default when encountering unmarked assembly: {{{-Wl,-z,noexecstack}}} will change the [[http://sourceware.org/ml/binutils/2003-05/msg00741.html|behavior]] of compiler's asm-without-stack-markings defaults.
   * fix assembly source by adding flags to assembler:
    *
GNU as: {{{
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU
-stack, "", %progbits
#endif}}}
    * YASM (be careful of builds that use yasm's "-f" to specific "elf64" or "elf32", which breaks the following test -- in that case just skip the ifidn/endif lines): {{{
%ifidn __OUTPUT_FORMAT__,elf
section .note.GNU-stack noalloc noexec nowrite progbits
%endif
}}}
   * fix compiler's default when encountering unmarked assembly: {{{-Wa,--noexecstack}}} will change the [[http://sourceware.org/ml/binutils/2003-05/msg00741.html|behavior]] of compiler's asm-without-stack-markings defaults.
Line 18: Line 26:
Originally generated from the ELF files with executable stacks in Karmic main.

== Fixed ==
 * [[https://launchpad.net/bugs/375121|zip]] (umarked asm)
 * [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=539775|bogl]] (nested function)
 * [[https://launchpad.net/bugs/408499|mono]] (unmarked asm)

== Nested Functions ==
Uses [[http://grub.enbug.org/NestedFunctions|Nested Functions]] which compiler generates as [[http://gcc.gnu.org/onlinedocs/gccint/Trampolines.html|trampolines]] on the stack.
 * grub
 * grub2 [[http://savannah.gnu.org/bugs/?25220|upstream bug]]
 * [[https://launchpad.net/bugs/409766|link-grammar]]
 * mbr
 * icon

== Unidentified ==
 * None known
Line 36: Line 33:

== Shipped Precompiled Binary ==
 * [[https://bugs.launchpad.net/bugs/409440|fglrx-installer]]
 * [[https://bugs.launchpad.net/bugs/409456|nvidia]]
 * [[https://launchpad.net/bugs/408499|mono]] (but only in the i386 debugger, it seems)

== Nested Functions ==
Uses [[http://grub.enbug.org/NestedFunctions|Nested Functions]] which compiler generates as [[http://gcc.gnu.org/onlinedocs/gccint/Trampolines.html|trampolines]] on the stack. Not allowed by ISO C.
 * grub
 * grub2 [[http://savannah.gnu.org/bugs/?25220|upstream bug]] (in progress upstream for 2.01 --cjwatson)

== Unmarked Assembler ==
 * None known

== Shipped Precompiled Binaries ==
 * None known

== No Stack Section ==
 * memtest86+ (is a boot-loaded ELF, not a big deal)

== Fixed Lucid Main/Restricted ==
 * [[https://launchpad.net/bugs/537650|sl-modem-daemon]] (shipped precompiled binaries)

== Fixed Karmic Main/Restricted Packages ==

 * [[https://launchpad.net/bugs/375121|zip]] (umarked asm)
 * [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=539775|bogl]] (nested function)
 * [[https://launchpad.net/bugs/409766|link-grammar]] (nested function)
 * [[https://launchpad.net/bugs/409864|nss]] (unmarked asm)
 * [[https://launchpad.net/bugs/418392|icon]] (unmarked asm)
 * [[https://launchpad.net/bugs/418393|john]] (unmarked asm)
 * [[https://launchpad.net/bugs/409736|openjdk-6]] (unmarked asm)
 * [[https://launchpad.net/bugs/49387|xvidcore]] (unmarked asm)
 * [[https://bugs.launchpad.net/bugs/434813|mountall]] (nested functions)
 * [[https://bugs.launchpad.net/bugs/409440|fglrx-installer]] (shipped precompiled binaries)
 * [[https://bugs.launchpad.net/bugs/409456|nvidia]] (shipped precompiled binaries)
Line 45: Line 70:
== Unmarked Assembler ==
 * [[https://launchpad.net/bugs/409736|openjdk-6]]
 * john

== No Stack Section ==
 * memtest86+ (is a boot-loaded ELF, not a big deal)
Line 55: Line 73:

= List of i386 binaries in Artful with executable stack =
{{{
 X ./bin/lksh
 X ./boot/invaders.exec
 X ./boot/memtest86+_multiboot.bin
 X ./lib/klibc-T5LXP1hTwH_ezt-1EUSxPbNR_es.so
 X ./sbin/netplugd
 X ./sbin/ngetty
 X ./sbin/ngetty-argv
 X ./sbin/ngetty-helper
 X ./sbin/zdb
 X ./sbin/zfs
 X ./sbin/zfs-fuse
 X ./sbin/zpool
 X ./usr/alpha-linux-gnu/lib/libgnatprj.so.6
 X ./usr/arm-linux-gnueabihf/lib/libgnatprj.so.5
 X ./usr/arm-linux-gnueabihf/lib/libgnatprj.so.6
 X ./usr/arm-linux-gnueabi/lib/libgnatprj.so.5
 X ./usr/arm-linux-gnueabi/lib/libgnatprj.so.6
 X ./usr/bin/aarch64-linux-gnu-gnat-5
 X ./usr/bin/aarch64-linux-gnu-gnatclean-5
 X ./usr/bin/aarch64-linux-gnu-gnatls-5
 X ./usr/bin/aarch64-linux-gnu-gnatmake-5
 X ./usr/bin/aarch64-linux-gnu-gnatname-5
 X ./usr/bin/alt-ergo
 X ./usr/bin/altgr-ergo
 X ./usr/bin/aribas
 X ./usr/bin/arm-linux-gnueabi-gnat-5
 X ./usr/bin/arm-linux-gnueabi-gnat-6
 X ./usr/bin/arm-linux-gnueabi-gnatclean-5
 X ./usr/bin/arm-linux-gnueabi-gnatclean-6
 X ./usr/bin/arm-linux-gnueabi-gnatls-5
 X ./usr/bin/arm-linux-gnueabi-gnatls-6
 X ./usr/bin/arm-linux-gnueabi-gnatmake-5
 X ./usr/bin/arm-linux-gnueabi-gnatmake-6
 X ./usr/bin/arm-linux-gnueabi-gnatname-5
 X ./usr/bin/arm-linux-gnueabi-gnatname-6
 X ./usr/bin/arm-linux-gnueabihf-gnat-5
 X ./usr/bin/arm-linux-gnueabihf-gnat-6
 X ./usr/bin/arm-linux-gnueabihf-gnatclean-5
 X ./usr/bin/arm-linux-gnueabihf-gnatclean-6
 X ./usr/bin/arm-linux-gnueabihf-gnatls-5
 X ./usr/bin/arm-linux-gnueabihf-gnatls-6
 X ./usr/bin/arm-linux-gnueabihf-gnatmake-5
 X ./usr/bin/arm-linux-gnueabihf-gnatmake-6
 X ./usr/bin/arm-linux-gnueabihf-gnatname-5
 X ./usr/bin/arm-linux-gnueabihf-gnatname-6
 X ./usr/bin/awsres
 X ./usr/bin/belenios-tool
 X ./usr/bin/buildapp
 X ./usr/bin/care
 X ./usr/bin/curvecpclient
 X ./usr/bin/curvecpmakekey
 X ./usr/bin/dgen
 X ./usr/bin/dh_ada_library
 X ./usr/bin/dnetc
 X ./usr/bin/dq
 X ./usr/bin/fasm
 X ./usr/bin/frama-c
 X ./usr/bin/frama-c-gui
 X ./usr/bin/gnat-5
 X ./usr/bin/gnatcheck
 X ./usr/bin/gnatclean-5
 X ./usr/bin/gnatcoll_db2ada
 X ./usr/bin/gnatdoc
 X ./usr/bin/gnatelim
 X ./usr/bin/gnat-gps
 X ./usr/bin/gnatinspect
 X ./usr/bin/gnatmake-5
 X ./usr/bin/gnatspark
 X ./usr/bin/gnatstub
 X ./usr/bin/gogo.i386
 X ./usr/bin/gogo.i686
 X ./usr/bin/gogo.k6
 X ./usr/bin/gol
 X ./usr/bin/gprbuild
 X ./usr/bin/gprclean
 X ./usr/bin/gprconfig
 X ./usr/bin/gprinstall
 X ./usr/bin/gprslave
 X ./usr/bin/gps_cli
 X ./usr/bin/grub-emu
 X ./usr/bin/grub-emu-lite
 X ./usr/bin/hppa-linux-gnu-gnat-6
 X ./usr/bin/hppa-linux-gnu-gnatclean-6
 X ./usr/bin/hppa-linux-gnu-gnatls-6
 X ./usr/bin/hppa-linux-gnu-gnatmake-6
 X ./usr/bin/hppa-linux-gnu-gnatname-6
 X ./usr/bin/i686-linux-gnu-gnat-6
 X ./usr/bin/i686-linux-gnu-gnatclean-6
 X ./usr/bin/i686-linux-gnu-gnatmake-6
 X ./usr/bin/i686-w64-mingw32-gnatclean-posix
 X ./usr/bin/i686-w64-mingw32-gnatclean-win32
 X ./usr/bin/i686-w64-mingw32-gnatls-posix
 X ./usr/bin/i686-w64-mingw32-gnatls-win32
 X ./usr/bin/i686-w64-mingw32-gnatmake-posix
 X ./usr/bin/i686-w64-mingw32-gnatmake-win32
 X ./usr/bin/i686-w64-mingw32-gnatname-posix
 X ./usr/bin/i686-w64-mingw32-gnatname-win32
 X ./usr/bin/i686-w64-mingw32-gnat-posix
 X ./usr/bin/i686-w64-mingw32-gnat-win32
 X ./usr/bin/iac
 X ./usr/bin/ikarus
 X ./usr/bin/ir_ab_names
 X ./usr/bin/likwid-bench
 X ./usr/bin/lkvm
 X ./usr/bin/mipsel-linux-gnu-gnat-6
 X ./usr/bin/mipsel-linux-gnu-gnatclean-6
 X ./usr/bin/mipsel-linux-gnu-gnatls-6
 X ./usr/bin/mipsel-linux-gnu-gnatmake-6
 X ./usr/bin/mipsel-linux-gnu-gnatname-6
 X ./usr/bin/mips-linux-gnu-gnat-6
 X ./usr/bin/mips-linux-gnu-gnatclean-6
 X ./usr/bin/mips-linux-gnu-gnatls-6
 X ./usr/bin/mips-linux-gnu-gnatmake-6
 X ./usr/bin/mips-linux-gnu-gnatname-6
 X ./usr/bin/music123
 X ./usr/bin/pgcharts
 X ./usr/bin/pgloader
 X ./usr/bin/poly
 X ./usr/bin/powerpc64le-linux-gnu-gnat-5
 X ./usr/bin/powerpc64le-linux-gnu-gnatclean-5
 X ./usr/bin/powerpc64le-linux-gnu-gnatls-5
 X ./usr/bin/powerpc64le-linux-gnu-gnatmake-5
 X ./usr/bin/powerpc64le-linux-gnu-gnatname-5
 X ./usr/bin/powerpc-linux-gnu-gnat-5
 X ./usr/bin/powerpc-linux-gnu-gnat-6
 X ./usr/bin/powerpc-linux-gnu-gnatclean-5
 X ./usr/bin/powerpc-linux-gnu-gnatclean-6
 X ./usr/bin/powerpc-linux-gnu-gnatls-5
 X ./usr/bin/powerpc-linux-gnu-gnatls-6
 X ./usr/bin/powerpc-linux-gnu-gnatmake-5
 X ./usr/bin/powerpc-linux-gnu-gnatmake-6
 X ./usr/bin/powerpc-linux-gnu-gnatname-5
 X ./usr/bin/powerpc-linux-gnu-gnatname-6
 X ./usr/bin/proot
 X ./usr/bin/rsh-redone-rlogin
 X ./usr/bin/s2cdecl
 X ./usr/bin/s2ch
 X ./usr/bin/s2ci
 X ./usr/bin/s2cixl
 X ./usr/bin/s390x-linux-gnu-gnat-5
 X ./usr/bin/s390x-linux-gnu-gnatclean-5
 X ./usr/bin/s390x-linux-gnu-gnatls-5
 X ./usr/bin/s390x-linux-gnu-gnatmake-5
 X ./usr/bin/s390x-linux-gnu-gnatname-5
 X ./usr/bin/sbcl
 X ./usr/bin/scheme-script
 X ./usr/bin/sdpa
 X ./usr/bin/sh4-linux-gnu-gnat-6
 X ./usr/bin/sh4-linux-gnu-gnatclean-6
 X ./usr/bin/sh4-linux-gnu-gnatls-6
 X ./usr/bin/sh4-linux-gnu-gnatmake-6
 X ./usr/bin/sh4-linux-gnu-gnatname-6
 X ./usr/bin/smbc
 X ./usr/bin/smlformat
 X ./usr/bin/smllex
 X ./usr/bin/smlsharp
 X ./usr/bin/smlyacc
 X ./usr/bin/templates2ada
 X ./usr/bin/victor
 X ./usr/bin/webxref
 X ./usr/bin/x86_64-w64-mingw32-gnatclean-posix
 X ./usr/bin/x86_64-w64-mingw32-gnatclean-win32
 X ./usr/bin/x86_64-w64-mingw32-gnatls-posix
 X ./usr/bin/x86_64-w64-mingw32-gnatls-win32
 X ./usr/bin/x86_64-w64-mingw32-gnatmake-posix
 X ./usr/bin/x86_64-w64-mingw32-gnatmake-win32
 X ./usr/bin/x86_64-w64-mingw32-gnatname-posix
 X ./usr/bin/x86_64-w64-mingw32-gnatname-win32
 X ./usr/bin/x86_64-w64-mingw32-gnat-posix
 X ./usr/bin/x86_64-w64-mingw32-gnat-win32
 X ./usr/bin/xspect
 X ./usr/bin/zapping
 X ./usr/games/glhexen2
 X ./usr/games/glhwcl
 X ./usr/games/hexen2
 X ./usr/games/hwcl
 X ./usr/games/kraptor
 X ./usr/games/liquidwar
 X ./usr/games/powermanga
 X ./usr/lib/atlas-base/libatlas.so.3.0
 X ./usr/lib/boinc-app-seti-graphics/setiathome_v8
 X ./usr/lib/boinc-app-seti/setiathome_v8
 X ./usr/lib/cafeobj-1.5/sbcl/cafeobj.sbcl
 X ./usr/lib/clisp-2.49/base/lisp.run
 X ./usr/lib/debug/.build-id/3e/03d643926bc2491fde8b14511e33ac1fe191ca.debug
 X ./usr/lib/debug/.build-id/4b/112c4edb27f5f0b6acddedaece2999882550cb.debug
 X ./usr/lib/debug/.build-id/50/fd261193829ca944588ebc2db9937afb18e047.debug
 X ./usr/lib/debug/.build-id/51/62b0b658c190f670fca2727edd616dba43ab75.debug
 X ./usr/lib/debug/.build-id/62/0e1bd3d3f5a0802677ec6bbb9951b36e244687.debug
 X ./usr/lib/debug/.build-id/66/4d7bd9582e4a0ca2cabe8f9559bfc70732533c.debug
 X ./usr/lib/debug/.build-id/6a/0468381d4aa6fe4e3bb9b7893d846dc7cf7896.debug
 X ./usr/lib/debug/.build-id/6f/02a685c385108b81c39648c36a44e049a2a208.debug
 X ./usr/lib/debug/.build-id/81/7378ae3760225b0cd065c0f7ae68f388859785.debug
 X ./usr/lib/debug/.build-id/81/797d256a35155df98937966670dcf8c6b89420.debug
 X ./usr/lib/debug/.build-id/87/499da76a3f3fe99c65041bd66278e5c5c44f4a.debug
 X ./usr/lib/debug/.build-id/8d/918ffc5ccccba5c458dcac633ddb09137d54bb.debug
 X ./usr/lib/debug/.build-id/ac/4845c431f49e7b36b7365e6f4686ff8678531a.debug
 X ./usr/lib/debug/.build-id/af/704c28bbff171bd673612993e93d74e4c017a6.debug
 X ./usr/lib/debug/.build-id/cc/e7e7ac983c80058b136aa8dd6e86b0acdcfa45.debug
 X ./usr/lib/debug/.build-id/d1/2dc64179acf727b586ba1f4a5a9953c518d19a.debug
 X ./usr/lib/debug/usr/bin/iac
 X ./usr/lib/debug/usr/bin/ir_ab_names
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-cos-event-impl.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-cos-ir-impl.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-cos-naming.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-cos-notification.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-dynamicany.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-iop.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-messaging.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-portableinterceptor.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-dsa.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-giop-diop.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-moma.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb.so.4
 X ./usr/lib/gimp/2.0/plug-ins/resynthesizer
 X ./usr/lib/gprbuild/gprbind
 X ./usr/lib/gprbuild/gprlib
 X ./usr/lib/grub/i386-coreboot/kernel.exec
 X ./usr/lib/grub/i386-coreboot/kernel.img
 X ./usr/lib/grub/i386-ieee1275/kernel.exec
 X ./usr/lib/grub/i386-ieee1275/kernel.img
 X ./usr/lib/grub/i386-pc/kernel.exec
 X ./usr/lib/grub/i386-pc/kernel.img
 X ./usr/lib/grub/i386-xen/kernel.exec
 X ./usr/lib/grub/i386-xen/kernel.img
 X ./usr/lib/grub/x86_64-xen/kernel.exec
 X ./usr/lib/grub/x86_64-xen/kernel.img
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/dse
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/gtcm_gnp_server
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/gtcm_play
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/gtcm_server
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/gtcm_shmclean
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/gtmsecshrdir/gtmsecshr
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/libgtmshr.so
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/lke
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/mupip
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/utf8/gtmsecshrdir/gtmsecshr
 X ./usr/lib/i386-linux-gnu/libavcall.so.0.0.0
 X ./usr/lib/i386-linux-gnu/libaws.so.3.3.2
 X ./usr/lib/i386-linux-gnu/libcallback.so.0.0.0
 X ./usr/lib/i386-linux-gnu/libgmpada.so.4
 X ./usr/lib/i386-linux-gnu/libgnatcoll_readline.so.1.7
 X ./usr/lib/i386-linux-gnu/libgnatcoll.so.1.7
 X ./usr/lib/i386-linux-gnu/libgnatprj.so.5
 X ./usr/lib/i386-linux-gnu/libgnatprj.so.6
 X ./usr/lib/i386-linux-gnu/libgtkada.so.3.8.3
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-cos-event-impl.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-cos-ir-impl.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-cos-naming.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-cos-notification.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-dynamicany.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-iop.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-messaging.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-portableinterceptor.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-dsa.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-giop-diop.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-moma.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb.so.4
 X ./usr/lib/i386-linux-gnu/libtemplates_parser.so.11.10.1
 X ./usr/lib/i386-linux-gnu/libtexttools.so.7
 X ./usr/lib/i386-linux-gnu/libvulkan.so.1.0.54
 X ./usr/lib/i386-linux-gnu/libwaudio.so.1.0
 X ./usr/lib/i386-linux-gnu/mandos/plugin-runner
 X ./usr/lib/i386-linux-gnu/mandos/plugins.d/mandos-client
 X ./usr/lib/i386-linux-gnu/mandos/plugins.d/password-prompt
 X ./usr/lib/i686-linux-gnu/liblikwid.so.4.2
 X ./usr/lib/klibc/bin/cat
 X ./usr/lib/klibc/bin/chroot
 X ./usr/lib/klibc/bin/cpio
 X ./usr/lib/klibc/bin/dd
 X ./usr/lib/klibc/bin/dmesg
 X ./usr/lib/klibc/bin/false
 X ./usr/lib/klibc/bin/fstype
 X ./usr/lib/klibc/bin/gunzip
 X ./usr/lib/klibc/bin/gzip
 X ./usr/lib/klibc/bin/halt
 X ./usr/lib/klibc/bin/ipconfig
 X ./usr/lib/klibc/bin/kill
 X ./usr/lib/klibc/bin/kinit
 X ./usr/lib/klibc/bin/kinit.shared
 X ./usr/lib/klibc/bin/ln
 X ./usr/lib/klibc/bin/losetup
 X ./usr/lib/klibc/bin/ls
 X ./usr/lib/klibc/bin/minips
 X ./usr/lib/klibc/bin/mkdir
 X ./usr/lib/klibc/bin/mkfifo
 X ./usr/lib/klibc/bin/mknod
 X ./usr/lib/klibc/bin/mksh
 X ./usr/lib/klibc/bin/mount
 X ./usr/lib/klibc/bin/mv
 X ./usr/lib/klibc/bin/nfsmount
 X ./usr/lib/klibc/bin/nuke
 X ./usr/lib/klibc/bin/pivot_root
 X ./usr/lib/klibc/bin/poweroff
 X ./usr/lib/klibc/bin/readlink
 X ./usr/lib/klibc/bin/reboot
 X ./usr/lib/klibc/bin/resume
 X ./usr/lib/klibc/bin/sh.shared
 X ./usr/lib/klibc/bin/sleep
 X ./usr/lib/klibc/bin/sync
 X ./usr/lib/klibc/bin/true
 X ./usr/lib/klibc/bin/umount
 X ./usr/lib/klibc/bin/uname
 X ./usr/lib/klibc/bin/zcat
 X ./usr/lib/klibc/lib/klibc-T5LXP1hTwH_ezt-1EUSxPbNR_es.so
 X ./usr/lib/klibc/lib/libc.so
 X ./usr/lib/libahven.so.26
 X ./usr/lib/libalog.so.0.5.2
 X ./usr/lib/libatlas-test/xcblat1
 X ./usr/lib/libatlas-test/xcblat3
 X ./usr/lib/libatlas-test/xccblat1
 X ./usr/lib/libatlas-test/xccblat3
 X ./usr/lib/libatlas-test/xcinvtst
 X ./usr/lib/libatlas-test/xcqrtst
 X ./usr/lib/libatlas-test/xcslvtst
 X ./usr/lib/libatlas-test/xctrtritst
 X ./usr/lib/libatlas-test/xcuumtst
 X ./usr/lib/libatlas-test/xdblat1
 X ./usr/lib/libatlas-test/xdblat2
 X ./usr/lib/libatlas-test/xdblat3
 X ./usr/lib/libatlas-test/xdcblat1
 X ./usr/lib/libatlas-test/xdcblat2
 X ./usr/lib/libatlas-test/xdcblat3
 X ./usr/lib/libatlas-test/xdinvtst
 X ./usr/lib/libatlas-test/xdmvntime
 X ./usr/lib/libatlas-test/xdmvttime
 X ./usr/lib/libatlas-test/xdqrtst
 X ./usr/lib/libatlas-test/xdr1time
 X ./usr/lib/libatlas-test/xdr2time
 X ./usr/lib/libatlas-test/xds1nxtune
 X ./usr/lib/libatlas-test/xds2nxtune
 X ./usr/lib/libatlas-test/xdslvtst
 X ./usr/lib/libatlas-test/xdtrtritst
 X ./usr/lib/libatlas-test/xduumtst
 X ./usr/lib/libatlas-test/xsblat1
 X ./usr/lib/libatlas-test/xsblat3
 X ./usr/lib/libatlas-test/xscblat1
 X ./usr/lib/libatlas-test/xscblat3
 X ./usr/lib/libatlas-test/xsinvtst
 X ./usr/lib/libatlas-test/xsqrtst
 X ./usr/lib/libatlas-test/xsslvtst
 X ./usr/lib/libatlas-test/xstrtritst
 X ./usr/lib/libatlas-test/xsuumtst
 X ./usr/lib/libatlas-test/xzblat1
 X ./usr/lib/libatlas-test/xzblat2
 X ./usr/lib/libatlas-test/xzblat3
 X ./usr/lib/libatlas-test/xzcblat1
 X ./usr/lib/libatlas-test/xzcblat2
 X ./usr/lib/libatlas-test/xzcblat3
 X ./usr/lib/libatlas-test/xzinvtst
 X ./usr/lib/libatlas-test/xzmvntime
 X ./usr/lib/libatlas-test/xzmvttime
 X ./usr/lib/libatlas-test/xzqrtst
 X ./usr/lib/libatlas-test/xzr1time
 X ./usr/lib/libatlas-test/xzr2time
 X ./usr/lib/libatlas-test/xzs1nxtune
 X ./usr/lib/libatlas-test/xzslvtst
 X ./usr/lib/libatlas-test/xztrtritst
 X ./usr/lib/libatlas-test/xzuumtst
 X ./usr/lib/libdbusada.so.0.3.3
 X ./usr/lib/libpcscada.so.0.7.3
 X ./usr/lib/multiboot/examples/kernel
 X ./usr/lib/nvidia-340/bin/nvidia-cuda-mps-control
 X ./usr/lib/nvidia-340/bin/nvidia-cuda-mps-server
 X ./usr/lib/ocaml/stublibs/dllzarith.so
 X ./usr/lib/ocaml/zarith/zarith.cmxs
 X ./usr/lib/open-axiom/bin/AXIOMsys
 X ./usr/lib/pd/extra/pdp/pdp_scaf.pd_linux
 X ./usr/lib/R/lib/libblas.so.3gf
 X ./usr/lib/R/lib/libguide.so
 X ./usr/lib/R/lib/liblapack.so.3gf
 X ./usr/lib/scaf/default.scafo
 X ./usr/lib/scheme2c/s2ccomp
 X ./usr/lib/sdpa/mex/mexsdpa.mex
 X ./usr/lib/sdpa/mex/mexSedumiWrap.mex
 X ./usr/lib/smlnj/bin/.run/run.x86-linux
 X ./usr/lib/smlnj/bin/.run/run.x86-linux.so
 X ./usr/lib/squeak/4.10.2-2614/so.SqueakFFIPrims
 X ./usr/lib/syslinux/modules/bios/gfxboot.c32
 X ./usr/lib/syslinux/modules/bios/ldlinux.c32
 X ./usr/lib/syslinux/modules/efi32/gfxboot.c32
 X ./usr/lib/syslinux/modules/efi32/ldlinux.e32
 X ./usr/lib/syslinux/modules/efi64/gfxboot.c32
 X ./usr/lib/syslinux/modules/efi64/ldlinux.e64
 X ./usr/lib/virtualbox/VBoxManageHelp
 X ./usr/powerpc64le-linux-gnu/lib/libgnatprj.so.5
 X ./usr/powerpc64le-linux-gnu/lib/libgnatprj.so.6
 X ./usr/powerpc-linux-gnu/lib/libgnatprj.so.5
 X ./usr/powerpc-linux-gnu/lib/libgnatprj.so.6
 X ./usr/s390x-linux-gnu/lib/libgnatprj.so.5
 X ./usr/s390x-linux-gnu/lib/libgnatprj.so.6
 X ./usr/sbin/curvecpserver
 X ./usr/sbin/dqcache
 X ./usr/sbin/martian_modem
 X ./usr/sbin/sagan
 X ./usr/sbin/sks
 X ./usr/sh4-linux-gnu/lib/libgnatprj.so.6
 X ./usr/share/android/emulator/out/host/linux-x86/lib/libcrypto-host.so
 X ./usr/share/dpdk/test/test
 X ./usr/sparc64-linux-gnu/lib/libgnatprj.so.6
}}}

There are still some programs that have executable stack regions, which results in their being vulnerable to exploitation via stack memory. There are only a few very rare situations where executable stacks are actually desired, the rest are usually the result of lacking flags in assembly code or using nested functions (which are generally avoidable).

When the linker (ld) performs linking, it marks the stack as executable based on the lowest common demoninator. For example, if everything is marked non-executable except one .o file, the entire library would get marked for an executable stack. In the case of a shared library, this would pollute any program it was loaded into. (The assembler assumes that unmarked .S files need an executable stack, and mark them accordingly.)

If a user is running a PAE kernel or has other NX-memory protections, they lose the ability to protect that program's stack memory from execution, leaving it open to potential unknown future vulnerabilities that might try to execute shellcode from stack memory.

  • Detection:

    • found on the system, check an ELF binary: "readelf -lW $BIN | grep GNU_STACK" shows with "E" flag.
    • found in a build, check a .o file: "readelf -SW $OBJ | grep GNU-stack" shows with "X" flag. (Or "scanelf -e $OBJ" shows an "X".)
  • Information: Gentoo write-up about exec stack handling: http://www.gentoo.org/proj/en/hardened/gnu-stack.xml

  • Potential Solutions:

    • fix assembly source by adding flags to assembler:
      • GNU as:

        #if defined(__linux__) && defined(__ELF__)
        .section        .note.GNU-stack, "", %progbits
        #endif
      • YASM (be careful of builds that use yasm's "-f" to specific "elf64" or "elf32", which breaks the following test -- in that case just skip the ifidn/endif lines):

        %ifidn __OUTPUT_FORMAT__,elf
        section .note.GNU-stack noalloc noexec nowrite progbits
        %endif
    • fix compiler's default when encountering unmarked assembly: -Wa,--noexecstack will change the behavior of compiler's asm-without-stack-markings defaults.

    • rework code to avoid using nested functions.
    • force markings into a safe state via "execstack -c $BINARY" during package build.

Main/Restricted Packages

Unidentified

  • None known

Trampolines

  • klibc (setjmp implementation)
  • kexec-tools (statically linked against klibc)
  • mono (but only in the i386 debugger, it seems)

Nested Functions

Uses Nested Functions which compiler generates as trampolines on the stack. Not allowed by ISO C.

  • grub
  • grub2 upstream bug (in progress upstream for 2.01 --cjwatson)

Unmarked Assembler

  • None known

Shipped Precompiled Binaries

  • None known

No Stack Section

  • memtest86+ (is a boot-loaded ELF, not a big deal)

Fixed Lucid Main/Restricted

Fixed Karmic Main/Restricted Packages

  • zip (umarked asm)

  • bogl (nested function)

  • link-grammar (nested function)

  • nss (unmarked asm)

  • icon (unmarked asm)

  • john (unmarked asm)

  • openjdk-6 (unmarked asm)

  • xvidcore (unmarked asm)

  • mountall (nested functions)

  • fglrx-installer (shipped precompiled binaries)

  • nvidia (shipped precompiled binaries)

    • nvidia-graphics-drivers-173
    • nvidia-graphics-drivers-180
    • nvidia-graphics-drivers-71
    • nvidia-graphics-drivers-96

Fedora Patches for universe packages

List of i386 binaries in Artful with executable stack

 X ./bin/lksh
 X ./boot/invaders.exec
 X ./boot/memtest86+_multiboot.bin
 X ./lib/klibc-T5LXP1hTwH_ezt-1EUSxPbNR_es.so
 X ./sbin/netplugd
 X ./sbin/ngetty
 X ./sbin/ngetty-argv
 X ./sbin/ngetty-helper
 X ./sbin/zdb
 X ./sbin/zfs
 X ./sbin/zfs-fuse
 X ./sbin/zpool
 X ./usr/alpha-linux-gnu/lib/libgnatprj.so.6
 X ./usr/arm-linux-gnueabihf/lib/libgnatprj.so.5
 X ./usr/arm-linux-gnueabihf/lib/libgnatprj.so.6
 X ./usr/arm-linux-gnueabi/lib/libgnatprj.so.5
 X ./usr/arm-linux-gnueabi/lib/libgnatprj.so.6
 X ./usr/bin/aarch64-linux-gnu-gnat-5
 X ./usr/bin/aarch64-linux-gnu-gnatclean-5
 X ./usr/bin/aarch64-linux-gnu-gnatls-5
 X ./usr/bin/aarch64-linux-gnu-gnatmake-5
 X ./usr/bin/aarch64-linux-gnu-gnatname-5
 X ./usr/bin/alt-ergo
 X ./usr/bin/altgr-ergo
 X ./usr/bin/aribas
 X ./usr/bin/arm-linux-gnueabi-gnat-5
 X ./usr/bin/arm-linux-gnueabi-gnat-6
 X ./usr/bin/arm-linux-gnueabi-gnatclean-5
 X ./usr/bin/arm-linux-gnueabi-gnatclean-6
 X ./usr/bin/arm-linux-gnueabi-gnatls-5
 X ./usr/bin/arm-linux-gnueabi-gnatls-6
 X ./usr/bin/arm-linux-gnueabi-gnatmake-5
 X ./usr/bin/arm-linux-gnueabi-gnatmake-6
 X ./usr/bin/arm-linux-gnueabi-gnatname-5
 X ./usr/bin/arm-linux-gnueabi-gnatname-6
 X ./usr/bin/arm-linux-gnueabihf-gnat-5
 X ./usr/bin/arm-linux-gnueabihf-gnat-6
 X ./usr/bin/arm-linux-gnueabihf-gnatclean-5
 X ./usr/bin/arm-linux-gnueabihf-gnatclean-6
 X ./usr/bin/arm-linux-gnueabihf-gnatls-5
 X ./usr/bin/arm-linux-gnueabihf-gnatls-6
 X ./usr/bin/arm-linux-gnueabihf-gnatmake-5
 X ./usr/bin/arm-linux-gnueabihf-gnatmake-6
 X ./usr/bin/arm-linux-gnueabihf-gnatname-5
 X ./usr/bin/arm-linux-gnueabihf-gnatname-6
 X ./usr/bin/awsres
 X ./usr/bin/belenios-tool
 X ./usr/bin/buildapp
 X ./usr/bin/care
 X ./usr/bin/curvecpclient
 X ./usr/bin/curvecpmakekey
 X ./usr/bin/dgen
 X ./usr/bin/dh_ada_library
 X ./usr/bin/dnetc
 X ./usr/bin/dq
 X ./usr/bin/fasm
 X ./usr/bin/frama-c
 X ./usr/bin/frama-c-gui
 X ./usr/bin/gnat-5
 X ./usr/bin/gnatcheck
 X ./usr/bin/gnatclean-5
 X ./usr/bin/gnatcoll_db2ada
 X ./usr/bin/gnatdoc
 X ./usr/bin/gnatelim
 X ./usr/bin/gnat-gps
 X ./usr/bin/gnatinspect
 X ./usr/bin/gnatmake-5
 X ./usr/bin/gnatspark
 X ./usr/bin/gnatstub
 X ./usr/bin/gogo.i386
 X ./usr/bin/gogo.i686
 X ./usr/bin/gogo.k6
 X ./usr/bin/gol
 X ./usr/bin/gprbuild
 X ./usr/bin/gprclean
 X ./usr/bin/gprconfig
 X ./usr/bin/gprinstall
 X ./usr/bin/gprslave
 X ./usr/bin/gps_cli
 X ./usr/bin/grub-emu
 X ./usr/bin/grub-emu-lite
 X ./usr/bin/hppa-linux-gnu-gnat-6
 X ./usr/bin/hppa-linux-gnu-gnatclean-6
 X ./usr/bin/hppa-linux-gnu-gnatls-6
 X ./usr/bin/hppa-linux-gnu-gnatmake-6
 X ./usr/bin/hppa-linux-gnu-gnatname-6
 X ./usr/bin/i686-linux-gnu-gnat-6
 X ./usr/bin/i686-linux-gnu-gnatclean-6
 X ./usr/bin/i686-linux-gnu-gnatmake-6
 X ./usr/bin/i686-w64-mingw32-gnatclean-posix
 X ./usr/bin/i686-w64-mingw32-gnatclean-win32
 X ./usr/bin/i686-w64-mingw32-gnatls-posix
 X ./usr/bin/i686-w64-mingw32-gnatls-win32
 X ./usr/bin/i686-w64-mingw32-gnatmake-posix
 X ./usr/bin/i686-w64-mingw32-gnatmake-win32
 X ./usr/bin/i686-w64-mingw32-gnatname-posix
 X ./usr/bin/i686-w64-mingw32-gnatname-win32
 X ./usr/bin/i686-w64-mingw32-gnat-posix
 X ./usr/bin/i686-w64-mingw32-gnat-win32
 X ./usr/bin/iac
 X ./usr/bin/ikarus
 X ./usr/bin/ir_ab_names
 X ./usr/bin/likwid-bench
 X ./usr/bin/lkvm
 X ./usr/bin/mipsel-linux-gnu-gnat-6
 X ./usr/bin/mipsel-linux-gnu-gnatclean-6
 X ./usr/bin/mipsel-linux-gnu-gnatls-6
 X ./usr/bin/mipsel-linux-gnu-gnatmake-6
 X ./usr/bin/mipsel-linux-gnu-gnatname-6
 X ./usr/bin/mips-linux-gnu-gnat-6
 X ./usr/bin/mips-linux-gnu-gnatclean-6
 X ./usr/bin/mips-linux-gnu-gnatls-6
 X ./usr/bin/mips-linux-gnu-gnatmake-6
 X ./usr/bin/mips-linux-gnu-gnatname-6
 X ./usr/bin/music123
 X ./usr/bin/pgcharts
 X ./usr/bin/pgloader
 X ./usr/bin/poly
 X ./usr/bin/powerpc64le-linux-gnu-gnat-5
 X ./usr/bin/powerpc64le-linux-gnu-gnatclean-5
 X ./usr/bin/powerpc64le-linux-gnu-gnatls-5
 X ./usr/bin/powerpc64le-linux-gnu-gnatmake-5
 X ./usr/bin/powerpc64le-linux-gnu-gnatname-5
 X ./usr/bin/powerpc-linux-gnu-gnat-5
 X ./usr/bin/powerpc-linux-gnu-gnat-6
 X ./usr/bin/powerpc-linux-gnu-gnatclean-5
 X ./usr/bin/powerpc-linux-gnu-gnatclean-6
 X ./usr/bin/powerpc-linux-gnu-gnatls-5
 X ./usr/bin/powerpc-linux-gnu-gnatls-6
 X ./usr/bin/powerpc-linux-gnu-gnatmake-5
 X ./usr/bin/powerpc-linux-gnu-gnatmake-6
 X ./usr/bin/powerpc-linux-gnu-gnatname-5
 X ./usr/bin/powerpc-linux-gnu-gnatname-6
 X ./usr/bin/proot
 X ./usr/bin/rsh-redone-rlogin
 X ./usr/bin/s2cdecl
 X ./usr/bin/s2ch
 X ./usr/bin/s2ci
 X ./usr/bin/s2cixl
 X ./usr/bin/s390x-linux-gnu-gnat-5
 X ./usr/bin/s390x-linux-gnu-gnatclean-5
 X ./usr/bin/s390x-linux-gnu-gnatls-5
 X ./usr/bin/s390x-linux-gnu-gnatmake-5
 X ./usr/bin/s390x-linux-gnu-gnatname-5
 X ./usr/bin/sbcl
 X ./usr/bin/scheme-script
 X ./usr/bin/sdpa
 X ./usr/bin/sh4-linux-gnu-gnat-6
 X ./usr/bin/sh4-linux-gnu-gnatclean-6
 X ./usr/bin/sh4-linux-gnu-gnatls-6
 X ./usr/bin/sh4-linux-gnu-gnatmake-6
 X ./usr/bin/sh4-linux-gnu-gnatname-6
 X ./usr/bin/smbc
 X ./usr/bin/smlformat
 X ./usr/bin/smllex
 X ./usr/bin/smlsharp
 X ./usr/bin/smlyacc
 X ./usr/bin/templates2ada
 X ./usr/bin/victor
 X ./usr/bin/webxref
 X ./usr/bin/x86_64-w64-mingw32-gnatclean-posix
 X ./usr/bin/x86_64-w64-mingw32-gnatclean-win32
 X ./usr/bin/x86_64-w64-mingw32-gnatls-posix
 X ./usr/bin/x86_64-w64-mingw32-gnatls-win32
 X ./usr/bin/x86_64-w64-mingw32-gnatmake-posix
 X ./usr/bin/x86_64-w64-mingw32-gnatmake-win32
 X ./usr/bin/x86_64-w64-mingw32-gnatname-posix
 X ./usr/bin/x86_64-w64-mingw32-gnatname-win32
 X ./usr/bin/x86_64-w64-mingw32-gnat-posix
 X ./usr/bin/x86_64-w64-mingw32-gnat-win32
 X ./usr/bin/xspect
 X ./usr/bin/zapping
 X ./usr/games/glhexen2
 X ./usr/games/glhwcl
 X ./usr/games/hexen2
 X ./usr/games/hwcl
 X ./usr/games/kraptor
 X ./usr/games/liquidwar
 X ./usr/games/powermanga
 X ./usr/lib/atlas-base/libatlas.so.3.0
 X ./usr/lib/boinc-app-seti-graphics/setiathome_v8
 X ./usr/lib/boinc-app-seti/setiathome_v8
 X ./usr/lib/cafeobj-1.5/sbcl/cafeobj.sbcl
 X ./usr/lib/clisp-2.49/base/lisp.run
 X ./usr/lib/debug/.build-id/3e/03d643926bc2491fde8b14511e33ac1fe191ca.debug
 X ./usr/lib/debug/.build-id/4b/112c4edb27f5f0b6acddedaece2999882550cb.debug
 X ./usr/lib/debug/.build-id/50/fd261193829ca944588ebc2db9937afb18e047.debug
 X ./usr/lib/debug/.build-id/51/62b0b658c190f670fca2727edd616dba43ab75.debug
 X ./usr/lib/debug/.build-id/62/0e1bd3d3f5a0802677ec6bbb9951b36e244687.debug
 X ./usr/lib/debug/.build-id/66/4d7bd9582e4a0ca2cabe8f9559bfc70732533c.debug
 X ./usr/lib/debug/.build-id/6a/0468381d4aa6fe4e3bb9b7893d846dc7cf7896.debug
 X ./usr/lib/debug/.build-id/6f/02a685c385108b81c39648c36a44e049a2a208.debug
 X ./usr/lib/debug/.build-id/81/7378ae3760225b0cd065c0f7ae68f388859785.debug
 X ./usr/lib/debug/.build-id/81/797d256a35155df98937966670dcf8c6b89420.debug
 X ./usr/lib/debug/.build-id/87/499da76a3f3fe99c65041bd66278e5c5c44f4a.debug
 X ./usr/lib/debug/.build-id/8d/918ffc5ccccba5c458dcac633ddb09137d54bb.debug
 X ./usr/lib/debug/.build-id/ac/4845c431f49e7b36b7365e6f4686ff8678531a.debug
 X ./usr/lib/debug/.build-id/af/704c28bbff171bd673612993e93d74e4c017a6.debug
 X ./usr/lib/debug/.build-id/cc/e7e7ac983c80058b136aa8dd6e86b0acdcfa45.debug
 X ./usr/lib/debug/.build-id/d1/2dc64179acf727b586ba1f4a5a9953c518d19a.debug
 X ./usr/lib/debug/usr/bin/iac
 X ./usr/lib/debug/usr/bin/ir_ab_names
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-cos-event-impl.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-cos-ir-impl.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-cos-naming.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-cos-notification.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-dynamicany.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-iop.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-messaging.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba-portableinterceptor.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-corba.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-dsa.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-giop-diop.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb-moma.so.4
 X ./usr/lib/debug/usr/lib/i386-linux-gnu/libpolyorb.so.4
 X ./usr/lib/gimp/2.0/plug-ins/resynthesizer
 X ./usr/lib/gprbuild/gprbind
 X ./usr/lib/gprbuild/gprlib
 X ./usr/lib/grub/i386-coreboot/kernel.exec
 X ./usr/lib/grub/i386-coreboot/kernel.img
 X ./usr/lib/grub/i386-ieee1275/kernel.exec
 X ./usr/lib/grub/i386-ieee1275/kernel.img
 X ./usr/lib/grub/i386-pc/kernel.exec
 X ./usr/lib/grub/i386-pc/kernel.img
 X ./usr/lib/grub/i386-xen/kernel.exec
 X ./usr/lib/grub/i386-xen/kernel.img
 X ./usr/lib/grub/x86_64-xen/kernel.exec
 X ./usr/lib/grub/x86_64-xen/kernel.img
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/dse
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/gtcm_gnp_server
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/gtcm_play
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/gtcm_server
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/gtcm_shmclean
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/gtmsecshrdir/gtmsecshr
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/libgtmshr.so
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/lke
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/mupip
 X ./usr/lib/i386-linux-gnu/fis-gtm/V6.3-000A_i686/utf8/gtmsecshrdir/gtmsecshr
 X ./usr/lib/i386-linux-gnu/libavcall.so.0.0.0
 X ./usr/lib/i386-linux-gnu/libaws.so.3.3.2
 X ./usr/lib/i386-linux-gnu/libcallback.so.0.0.0
 X ./usr/lib/i386-linux-gnu/libgmpada.so.4
 X ./usr/lib/i386-linux-gnu/libgnatcoll_readline.so.1.7
 X ./usr/lib/i386-linux-gnu/libgnatcoll.so.1.7
 X ./usr/lib/i386-linux-gnu/libgnatprj.so.5
 X ./usr/lib/i386-linux-gnu/libgnatprj.so.6
 X ./usr/lib/i386-linux-gnu/libgtkada.so.3.8.3
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-cos-event-impl.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-cos-ir-impl.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-cos-naming.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-cos-notification.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-dynamicany.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-iop.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-messaging.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba-portableinterceptor.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-corba.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-dsa.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-giop-diop.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb-moma.so.4
 X ./usr/lib/i386-linux-gnu/libpolyorb.so.4
 X ./usr/lib/i386-linux-gnu/libtemplates_parser.so.11.10.1
 X ./usr/lib/i386-linux-gnu/libtexttools.so.7
 X ./usr/lib/i386-linux-gnu/libvulkan.so.1.0.54
 X ./usr/lib/i386-linux-gnu/libwaudio.so.1.0
 X ./usr/lib/i386-linux-gnu/mandos/plugin-runner
 X ./usr/lib/i386-linux-gnu/mandos/plugins.d/mandos-client
 X ./usr/lib/i386-linux-gnu/mandos/plugins.d/password-prompt
 X ./usr/lib/i686-linux-gnu/liblikwid.so.4.2
 X ./usr/lib/klibc/bin/cat
 X ./usr/lib/klibc/bin/chroot
 X ./usr/lib/klibc/bin/cpio
 X ./usr/lib/klibc/bin/dd
 X ./usr/lib/klibc/bin/dmesg
 X ./usr/lib/klibc/bin/false
 X ./usr/lib/klibc/bin/fstype
 X ./usr/lib/klibc/bin/gunzip
 X ./usr/lib/klibc/bin/gzip
 X ./usr/lib/klibc/bin/halt
 X ./usr/lib/klibc/bin/ipconfig
 X ./usr/lib/klibc/bin/kill
 X ./usr/lib/klibc/bin/kinit
 X ./usr/lib/klibc/bin/kinit.shared
 X ./usr/lib/klibc/bin/ln
 X ./usr/lib/klibc/bin/losetup
 X ./usr/lib/klibc/bin/ls
 X ./usr/lib/klibc/bin/minips
 X ./usr/lib/klibc/bin/mkdir
 X ./usr/lib/klibc/bin/mkfifo
 X ./usr/lib/klibc/bin/mknod
 X ./usr/lib/klibc/bin/mksh
 X ./usr/lib/klibc/bin/mount
 X ./usr/lib/klibc/bin/mv
 X ./usr/lib/klibc/bin/nfsmount
 X ./usr/lib/klibc/bin/nuke
 X ./usr/lib/klibc/bin/pivot_root
 X ./usr/lib/klibc/bin/poweroff
 X ./usr/lib/klibc/bin/readlink
 X ./usr/lib/klibc/bin/reboot
 X ./usr/lib/klibc/bin/resume
 X ./usr/lib/klibc/bin/sh.shared
 X ./usr/lib/klibc/bin/sleep
 X ./usr/lib/klibc/bin/sync
 X ./usr/lib/klibc/bin/true
 X ./usr/lib/klibc/bin/umount
 X ./usr/lib/klibc/bin/uname
 X ./usr/lib/klibc/bin/zcat
 X ./usr/lib/klibc/lib/klibc-T5LXP1hTwH_ezt-1EUSxPbNR_es.so
 X ./usr/lib/klibc/lib/libc.so
 X ./usr/lib/libahven.so.26
 X ./usr/lib/libalog.so.0.5.2
 X ./usr/lib/libatlas-test/xcblat1
 X ./usr/lib/libatlas-test/xcblat3
 X ./usr/lib/libatlas-test/xccblat1
 X ./usr/lib/libatlas-test/xccblat3
 X ./usr/lib/libatlas-test/xcinvtst
 X ./usr/lib/libatlas-test/xcqrtst
 X ./usr/lib/libatlas-test/xcslvtst
 X ./usr/lib/libatlas-test/xctrtritst
 X ./usr/lib/libatlas-test/xcuumtst
 X ./usr/lib/libatlas-test/xdblat1
 X ./usr/lib/libatlas-test/xdblat2
 X ./usr/lib/libatlas-test/xdblat3
 X ./usr/lib/libatlas-test/xdcblat1
 X ./usr/lib/libatlas-test/xdcblat2
 X ./usr/lib/libatlas-test/xdcblat3
 X ./usr/lib/libatlas-test/xdinvtst
 X ./usr/lib/libatlas-test/xdmvntime
 X ./usr/lib/libatlas-test/xdmvttime
 X ./usr/lib/libatlas-test/xdqrtst
 X ./usr/lib/libatlas-test/xdr1time
 X ./usr/lib/libatlas-test/xdr2time
 X ./usr/lib/libatlas-test/xds1nxtune
 X ./usr/lib/libatlas-test/xds2nxtune
 X ./usr/lib/libatlas-test/xdslvtst
 X ./usr/lib/libatlas-test/xdtrtritst
 X ./usr/lib/libatlas-test/xduumtst
 X ./usr/lib/libatlas-test/xsblat1
 X ./usr/lib/libatlas-test/xsblat3
 X ./usr/lib/libatlas-test/xscblat1
 X ./usr/lib/libatlas-test/xscblat3
 X ./usr/lib/libatlas-test/xsinvtst
 X ./usr/lib/libatlas-test/xsqrtst
 X ./usr/lib/libatlas-test/xsslvtst
 X ./usr/lib/libatlas-test/xstrtritst
 X ./usr/lib/libatlas-test/xsuumtst
 X ./usr/lib/libatlas-test/xzblat1
 X ./usr/lib/libatlas-test/xzblat2
 X ./usr/lib/libatlas-test/xzblat3
 X ./usr/lib/libatlas-test/xzcblat1
 X ./usr/lib/libatlas-test/xzcblat2
 X ./usr/lib/libatlas-test/xzcblat3
 X ./usr/lib/libatlas-test/xzinvtst
 X ./usr/lib/libatlas-test/xzmvntime
 X ./usr/lib/libatlas-test/xzmvttime
 X ./usr/lib/libatlas-test/xzqrtst
 X ./usr/lib/libatlas-test/xzr1time
 X ./usr/lib/libatlas-test/xzr2time
 X ./usr/lib/libatlas-test/xzs1nxtune
 X ./usr/lib/libatlas-test/xzslvtst
 X ./usr/lib/libatlas-test/xztrtritst
 X ./usr/lib/libatlas-test/xzuumtst
 X ./usr/lib/libdbusada.so.0.3.3
 X ./usr/lib/libpcscada.so.0.7.3
 X ./usr/lib/multiboot/examples/kernel
 X ./usr/lib/nvidia-340/bin/nvidia-cuda-mps-control
 X ./usr/lib/nvidia-340/bin/nvidia-cuda-mps-server
 X ./usr/lib/ocaml/stublibs/dllzarith.so
 X ./usr/lib/ocaml/zarith/zarith.cmxs
 X ./usr/lib/open-axiom/bin/AXIOMsys
 X ./usr/lib/pd/extra/pdp/pdp_scaf.pd_linux
 X ./usr/lib/R/lib/libblas.so.3gf
 X ./usr/lib/R/lib/libguide.so
 X ./usr/lib/R/lib/liblapack.so.3gf
 X ./usr/lib/scaf/default.scafo
 X ./usr/lib/scheme2c/s2ccomp
 X ./usr/lib/sdpa/mex/mexsdpa.mex
 X ./usr/lib/sdpa/mex/mexSedumiWrap.mex
 X ./usr/lib/smlnj/bin/.run/run.x86-linux
 X ./usr/lib/smlnj/bin/.run/run.x86-linux.so
 X ./usr/lib/squeak/4.10.2-2614/so.SqueakFFIPrims
 X ./usr/lib/syslinux/modules/bios/gfxboot.c32
 X ./usr/lib/syslinux/modules/bios/ldlinux.c32
 X ./usr/lib/syslinux/modules/efi32/gfxboot.c32
 X ./usr/lib/syslinux/modules/efi32/ldlinux.e32
 X ./usr/lib/syslinux/modules/efi64/gfxboot.c32
 X ./usr/lib/syslinux/modules/efi64/ldlinux.e64
 X ./usr/lib/virtualbox/VBoxManageHelp
 X ./usr/powerpc64le-linux-gnu/lib/libgnatprj.so.5
 X ./usr/powerpc64le-linux-gnu/lib/libgnatprj.so.6
 X ./usr/powerpc-linux-gnu/lib/libgnatprj.so.5
 X ./usr/powerpc-linux-gnu/lib/libgnatprj.so.6
 X ./usr/s390x-linux-gnu/lib/libgnatprj.so.5
 X ./usr/s390x-linux-gnu/lib/libgnatprj.so.6
 X ./usr/sbin/curvecpserver
 X ./usr/sbin/dqcache
 X ./usr/sbin/martian_modem
 X ./usr/sbin/sagan
 X ./usr/sbin/sks
 X ./usr/sh4-linux-gnu/lib/libgnatprj.so.6
 X ./usr/share/android/emulator/out/host/linux-x86/lib/libcrypto-host.so
 X ./usr/share/dpdk/test/test
 X ./usr/sparc64-linux-gnu/lib/libgnatprj.so.6

SecurityTeam/Roadmap/ExecutableStacks (last edited 2017-08-22 14:25:31 by jdstrand)