1. 16 7月, 2016 2 次提交
    • K
      lkdtm: silence warnings about function declarations · 6d2e91a6
      Kees Cook 提交于
      When building under W=1, the lack of lkdtm.h in lkdtm_usercopy.c and
      lkdtm_rodata.c was discovered. This fixes the issue and consolidates
      the common header and the pr_fmt macro for simplicity and regularity
      across each test source file.
      Signed-off-by: NKees Cook <keescook@chromium.org>
      6d2e91a6
    • A
      lkdtm: hide unused functions · 2b271cb7
      Arnd Bergmann 提交于
      A conversion of the lkdtm core module added an "#ifdef CONFIG_KPROBES" check,
      but a number of functions then become unused:
      
      drivers/misc/lkdtm_core.c:340:16: error: 'lkdtm_debugfs_entry' defined but not used [-Werror=unused-function]
      drivers/misc/lkdtm_core.c:122:12: error: 'jp_generic_ide_ioctl' defined but not used [-Werror=unused-function]
      drivers/misc/lkdtm_core.c:114:12: error: 'jp_scsi_dispatch_cmd' defined but not used [-Werror=unused-function]
      drivers/misc/lkdtm_core.c:106:12: error: 'jp_hrtimer_start' defined but not used [-Werror=unused-function]
      drivers/misc/lkdtm_core.c:97:22: error: 'jp_shrink_inactive_list' defined but not used [-Werror=unused-function]
      drivers/misc/lkdtm_core.c:89:13: error: 'jp_ll_rw_block' defined but not used [-Werror=unused-function]
      drivers/misc/lkdtm_core.c:83:13: error: 'jp_tasklet_action' defined but not used [-Werror=unused-function]
      drivers/misc/lkdtm_core.c:75:20: error: 'jp_handle_irq_event' defined but not used [-Werror=unused-function]
      drivers/misc/lkdtm_core.c:68:21: error: 'jp_do_irq' defined but not used [-Werror=unused-function]
      
      This adds the same #ifdef everywhere. There is probably a better way to do the
      same thing, but for now this avoids the new warnings.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Fixes: c479e3fd ("lkdtm: use struct arrays instead of enums")
      [kees: moved some code around to better consolidate the #ifdefs]
      Signed-off-by: NKees Cook <keescook@chromium.org>
      2b271cb7
  2. 08 7月, 2016 12 次提交
  3. 11 6月, 2016 5 次提交
  4. 07 4月, 2016 3 次提交
  5. 02 3月, 2016 5 次提交
    • K
      lkdtm: improve use-after-free tests · 7c0ae5be
      Kees Cook 提交于
      This improves the order of operations on the use-after-free tests to
      try to make sure we've executed any available sanity-checking code,
      and to report the poisoning that was found.
      Signed-off-by: NKees Cook <keescook@chromium.org>
      7c0ae5be
    • D
      lkdtm: add test for atomic_t underflow/overflow · 5fd9e480
      David Windsor 提交于
      dmesg output of running this LKDTM test with PaX:
      
      [187095.475573] lkdtm: No crash points registered, enable through debugfs
      [187118.020257] lkdtm: Performing direct entry WRAP_ATOMIC
      [187118.030045] lkdtm: attempting atomic underflow
      [187118.030929] PAX: refcount overflow detected in: bash:1790, uid/euid: 0/0
      [187118.071667] PAX: refcount overflow occured at: lkdtm_do_action+0x19e/0x400 [lkdtm]
      [187118.081423] CPU: 3 PID: 1790 Comm: bash Not tainted 4.2.6-pax-refcount-split+ #2
      [187118.083403] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
      [187118.102596] task: ffff8800da8de040 ti: ffff8800da8e4000 task.ti: ffff8800da8e4000
      [187118.111321] RIP: 0010:[<ffffffffc00fc2fe>]  [<ffffffffc00fc2fe>] lkdtm_do_action+0x19e/0x400 [lkdtm]
      ...
      [187118.128074] lkdtm: attempting atomic overflow
      [187118.128080] PAX: refcount overflow detected in: bash:1790, uid/euid: 0/0
      [187118.128082] PAX: refcount overflow occured at: lkdtm_do_action+0x1b6/0x400 [lkdtm]
      [187118.128085] CPU: 3 PID: 1790 Comm: bash Not tainted 4.2.6-pax-refcount-split+ #2
      [187118.128086] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
      [187118.128088] task: ffff8800da8de040 ti: ffff8800da8e4000 task.ti: ffff8800da8e4000
      [187118.128092] RIP: 0010:[<ffffffffc00fc316>]  [<ffffffffc00fc316>] lkdtm_do_action+0x1b6/0x400 [lkdtm]
      Signed-off-by: NDavid Windsor <dave@progbits.org>
      [cleaned up whitespacing, keescook]
      Signed-off-by: NKees Cook <keescook@chromium.org>
      5fd9e480
    • L
      lkdtm: Add read/write after free tests for buddy memory · 920d451f
      Laura Abbott 提交于
      The current tests for read/write after free work on slab
      allocated memory. Memory straight from the buddy allocator
      may behave slightly differently and have a different set
      of parameters to test. Add tests for those cases as well.
      
      On a basic x86 boot:
      
       # echo WRITE_BUDDY_AFTER_FREE > /sys/kernel/debug/provoke-crash/DIRECT
      [   22.291950] lkdtm: Performing direct entry WRITE_BUDDY_AFTER_FREE
      [   22.292983] lkdtm: Writing to the buddy page before free
      [   22.293950] lkdtm: Attempting bad write to the buddy page after free
      
       # echo READ_BUDDY_AFTER_FREE > /sys/kernel/debug/provoke-crash/DIRECT
      [   32.375601] lkdtm: Performing direct entry READ_BUDDY_AFTER_FREE
      [   32.379896] lkdtm: Value in memory before free: 12345678
      [   32.383854] lkdtm: Attempting to read from freed memory
      [   32.389309] lkdtm: Buddy page was not poisoned
      
      On x86 with CONFIG_DEBUG_PAGEALLOC and debug_pagealloc=on:
      
       # echo WRITE_BUDDY_AFTER_FREE > /sys/kernel/debug/provoke-crash/DIRECT
      [   17.475533] lkdtm: Performing direct entry WRITE_BUDDY_AFTER_FREE
      [   17.477360] lkdtm: Writing to the buddy page before free
      [   17.479089] lkdtm: Attempting bad write to the buddy page after free
      [   17.480904] BUG: unable to handle kernel paging request at
      ffff88000ebd8000
      
       # echo READ_BUDDY_AFTER_FREE > /sys/kernel/debug/provoke-crash/DIRECT
      [   14.606433] lkdtm: Performing direct entry READ_BUDDY_AFTER_FREE
      [   14.607447] lkdtm: Value in memory before free: 12345678
      [   14.608161] lkdtm: Attempting to read from freed memory
      [   14.608860] BUG: unable to handle kernel paging request at
      ffff88000eba3000
      
      Note that arches without ARCH_SUPPORTS_DEBUG_PAGEALLOC may not
      produce the same crash.
      Signed-off-by: NLaura Abbott <labbott@fedoraproject.org>
      Signed-off-by: NKees Cook <keescook@chromium.org>
      920d451f
    • L
      lkdtm: Update WRITE_AFTER_FREE test · 250a8988
      Laura Abbott 提交于
      The SLUB allocator may use the first word of a freed block to store the
      freelist information. This may make it harder to test poisoning
      features. Change the WRITE_AFTER_FREE test to better match what
      the READ_AFTER_FREE test does and also print out a big more information.
      Signed-off-by: NLaura Abbott <labbott@fedoraproject.org>
      Signed-off-by: NKees Cook <keescook@chromium.org>
      250a8988
    • L
      lkdtm: Add READ_AFTER_FREE test · bc0b8cc6
      Laura Abbott 提交于
      In a similar manner to WRITE_AFTER_FREE, add a READ_AFTER_FREE
      test to test free poisoning features. Sample output when
      no sanitization is present:
      
       # echo READ_AFTER_FREE > /sys/kernel/debug/provoke-crash/DIRECT
      [   17.542473] lkdtm: Performing direct entry READ_AFTER_FREE
      [   17.543866] lkdtm: Value in memory before free: 12345678
      [   17.545212] lkdtm: Attempting bad read from freed memory
      [   17.546542] lkdtm: Memory was not poisoned
      
      with slub_debug=P:
      
       # echo READ_AFTER_FREE > /sys/kernel/debug/provoke-crash/DIRECT
      [   22.415531] lkdtm: Performing direct entry READ_AFTER_FREE
      [   22.416366] lkdtm: Value in memory before free: 12345678
      [   22.417137] lkdtm: Attempting bad read from freed memory
      [   22.417897] lkdtm: Memory correctly poisoned, calling BUG
      Signed-off-by: NLaura Abbott <labbott@fedoraproject.org>
      Signed-off-by: NKees Cook <keescook@chromium.org>
      bc0b8cc6
  6. 22 2月, 2016 1 次提交
    • K
      lkdtm: Verify that '__ro_after_init' works correctly · 7cca071c
      Kees Cook 提交于
      The new __ro_after_init section should be writable before init, but
      not after. Validate that it gets updated at init and can't be written
      to afterwards.
      Signed-off-by: NKees Cook <keescook@chromium.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Brian Gerst <brgerst@gmail.com>
      Cc: David Brown <david.brown@linaro.org>
      Cc: Denys Vlasenko <dvlasenk@redhat.com>
      Cc: Emese Revfy <re.emese@gmail.com>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mathias Krause <minipli@googlemail.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: PaX Team <pageexec@freemail.hu>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: kernel-hardening@lists.openwall.com
      Cc: linux-arch <linux-arch@vger.kernel.org>
      Link: http://lkml.kernel.org/r/1455748879-21872-6-git-send-email-keescook@chromium.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      7cca071c
  7. 10 2月, 2016 1 次提交
  8. 29 10月, 2015 1 次提交
    • S
      lkdtm: fix ACCESS_USERSPACE test · 2cb202c1
      Stephen Smalley 提交于
      Add a copy_to_user() call to the ACCESS_USERSPACE test
      prior to attempting direct dereferencing of the user
      address to ensure the page is present.  Otherwise,
      a fault occurs on arm kernels even prior to the introduction
      of CONFIG_CPU_SW_DOMAIN_PAN, and there is no difference in
      behavior for CONFIG_CPU_SW_DOMAIN_PAN=n vs CONFIG_CPU_SW_DOMAIN_PAN=y.
      
      Before this change, for any value of CONFIG_CPU_SW_DOMAIN_PAN:
      lkdtm: Performing direct entry ACCESS_USERSPACE
      lkdtm: attempting bad read at b6fe8000
      Unable to handle kernel paging request at virtual address b6fe8000
      
      After this change, for CONFIG_CPU_SW_DOMAIN_PAN=n:
      lkdtm: Performing direct entry ACCESS_USERSPACE
      lkdtm: attempting bad read at b6efc000
      lkdtm: attempting bad write at b6efc000
      
      After this change, for CONFIG_CPU_SW_DOMAIN_PAN=y:
      lkdtm: Performing direct entry ACCESS_USERSPACE
      lkdtm: attempting bad read at b6f7d000
      Unhandled fault: page domain fault (0x01b) at 0xb6f7d000
      ...
      Signed-off-by: NStephen Smalley <sds@tycho.nsa.gov>
      Acked-by: NKees Cook <keescook@chromium.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2cb202c1
  9. 10 7月, 2014 1 次提交
  10. 15 2月, 2014 4 次提交
  11. 19 12月, 2013 1 次提交
  12. 09 12月, 2013 1 次提交
  13. 30 10月, 2013 2 次提交
  14. 25 10月, 2013 1 次提交