public inbox for kernel-hardening@lists.openwall.com
 help / color / mirror / Atom feed
From: Lev Olshvang <levonshe@gmail.com>
To: keescook@chromium.orh
Cc: kernel-hardening@lists.openwall.com, Lev Olshvang <levonshe@gmail.com>
Subject: [PATCH v3 0/5] hardening : prevent write to proces's read-only pages
Date: Mon, 13 Apr 2020 18:32:06 +0300	[thread overview]
Message-ID: <20200413153211.29876-1-levonshe@gmail.com> (raw)

v2 --> v3
	Split patch to architecture independ part and separate patches
	for architectures that have arch_vma_access_permitted() handler.
	I tested it only on arm and x86
v1 --> v2
	I sent empty v1 patch, just resending
v0 --> v1
---
	Added sysctl_forbid_write_ro_mem to control whether to allow write
    or deny. (Advised by Kees Cook, KSPP issue 37)
    It has values range [0-2] and it gets the initial value from
    CONFIG_PROTECT_READONLY_USER_MEMORY (defaulted to 0, so it cant break)
    Setting it to 0 disables write checks.
    Setting it to 1 deny writes from other processes.
    Setting it to 2 deny writes from any processes including itself
----
v0
----

The purpose of this patch is produce hardened kernel for Embedded
or Production systems.
This patch shouild close issue 37 opened by Kees Cook in KSPP project

Typically debuggers, such as gdb, write to read-only code [text]
sections of target process.(ptrace)
This kind of page protectiion violation raises minor page fault, but
kernel's fault handler allows it by default.
This is clearly attack surface for adversary.

The proposed kernel hardening configuration option checks the type of
protection of the foreign vma and blocks writes to read only vma.

When enabled, it will stop attacks modifying code or jump tables, etc.

Code of arch_vma_access_permitted() function was extended to
check foreign vma flags.

Tested on x86_64 and ARM(QEMU) with dd command which writes to
/proc/PID/mem in r--p or r--xp of vma area addresses range

dd reports IO failure when tries to write to adress taken from
from /proc/PID/maps (PLT or code section)


Lev Olshvang (5):
  Hardening x86: Forbid writes to read-only memory pages of a process
  Hardening PowerPC: Forbid writes to read-only memory pages of a
    process
  Hardening um: Forbid writes to read-only memory pages of a process
  Hardening unicore32: Forbid writes to read-only memory pages of a
    process
  Hardening : PPC book3s64: Forbid writes to read-only memory pages of a
    process

 arch/powerpc/include/asm/mmu_context.h   | 9 +--------
 arch/powerpc/mm/book3s64/pkeys.c         | 5 -----
 arch/um/include/asm/mmu_context.h        | 8 +-------
 arch/unicore32/include/asm/mmu_context.h | 7 +------
 arch/x86/include/asm/mmu_context.h       | 8 +-------
 5 files changed, 4 insertions(+), 33 deletions(-)

-- 
2.17.1


             reply	other threads:[~2020-04-13 15:32 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-13 15:32 Lev Olshvang [this message]
2020-04-13 15:32 ` [PATCH v3 1/5] Hardening x86: Forbid writes to read-only memory pages of a process Lev Olshvang
2020-04-13 15:32 ` [PATCH v3 2/5] Hardening PowerPC: " Lev Olshvang
2020-04-13 15:32 ` [PATCH v3 3/5] Hardening um: " Lev Olshvang
2020-04-13 15:32 ` [PATCH v3 4/5] Hardening unicore32: " Lev Olshvang
2020-04-13 15:32 ` [PATCH v3 5/5] Hardening : PPC book3s64: " Lev Olshvang
2020-04-13 17:13 ` [PATCH v3 0/5] hardening : prevent write to proces's read-only pages Kees Cook
  -- strict thread matches above, loose matches on Subject: below --
2020-04-16 15:59 Lev Olshvang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200413153211.29876-1-levonshe@gmail.com \
    --to=levonshe@gmail.com \
    --cc=keescook@chromium.orh \
    --cc=kernel-hardening@lists.openwall.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox