linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Will Deacon <will@kernel.org>
To: Ard Biesheuvel <ardb@kernel.org>
Cc: Jessica Yu <jeyu@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Szabolcs Nagy <szabolcs.nagy@arm.com>,
	Mauro Carvalho Chehab <mchehab+huawei@kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Kees Cook <keescook@chromium.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	Miroslav Benes <mbenes@suse.cz>,
	Mark Rutland <mark.rutland@arm.com>, nd <nd@arm.com>
Subject: Re: [PATCH v2] module: Harden STRICT_MODULE_RWX
Date: Fri, 21 Aug 2020 13:20:00 +0100	[thread overview]
Message-ID: <20200821121959.GC20833@willie-the-truck> (raw)
In-Reply-To: <CAMj1kXErCQYNN9r5siGNukc+9KC=QnER8LfFXVfbHdeDivYztg@mail.gmail.com>

On Thu, Aug 13, 2020 at 03:07:13PM +0200, Ard Biesheuvel wrote:
> On Thu, 13 Aug 2020 at 15:04, Jessica Yu <jeyu@kernel.org> wrote:
> >
> > +++ Ard Biesheuvel [13/08/20 10:36 +0200]:
> > >On Wed, 12 Aug 2020 at 22:00, Peter Zijlstra <peterz@infradead.org> wrote:
> > >>
> > >> On Wed, Aug 12, 2020 at 06:37:57PM +0200, Ard Biesheuvel wrote:
> > >> > I know there is little we can do at this point, apart from ignoring
> > >> > the permissions - perhaps we should just defer the w^x check until
> > >> > after calling module_frob_arch_sections()?
> > >>
> > >> My earlier suggestion was to ignore it for 0-sized sections.
> > >
> > >Only they are 1 byte sections in this case.
> > >
> > >We override the sh_type and sh_flags explicitly for these sections at
> > >module load time, so deferring the check seems like a reasonable
> > >alternative to me.
> >
> > So module_enforce_rwx_sections() is already called after
> > module_frob_arch_sections() - which really baffled me at first, since
> > sh_type and sh_flags should have been set already in
> > module_frob_arch_sections().
> >
> > I added some debug prints to see which section the module code was
> > tripping on, and it was .text.ftrace_trampoline. See this snippet from
> > arm64's module_frob_arch_sections():
> >
> >                 else if (IS_ENABLED(CONFIG_DYNAMIC_FTRACE) &&
> >                          !strcmp(secstrings + sechdrs[i].sh_name,
> >                                  ".text.ftrace_trampoline"))
> >                         tramp = sechdrs + i;
> >
> > Since Mauro's config doesn't have CONFIG_DYNAMIC_FTRACE enabled, tramp
> > is never set here and the if (tramp) check at the end of the function
> > fails, so its section flags are never set, so they remain WAX and fail
> > the rwx check.
> 
> Right. Our module.lds does not go through the preprocessor, so we
> cannot add the #ifdef check there currently. So we should either drop
> the IS_ENABLED() check here, or simply rename the section, dropping
> the .text prefix (which doesn't seem to have any significance outside
> this context)
> 
> I'll leave it to Will to make the final call here.

Why don't we just preprocess the linker script, like we do for the main
kernel?

Will

  reply	other threads:[~2020-08-21 12:21 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-03 17:13 [PATCH v2] module: Harden STRICT_MODULE_RWX Peter Zijlstra
2020-04-03 20:31 ` Kees Cook
2020-04-08 15:32 ` Jessica Yu
2020-04-08 15:43   ` [PATCH] module: break nested ARCH_HAS_STRICT_MODULE_RWX and STRICT_MODULE_RWX #ifdefs Jessica Yu
2020-04-08 15:57   ` [PATCH v2] module: Harden STRICT_MODULE_RWX Peter Zijlstra
2020-04-08 16:20     ` Jessica Yu
2020-08-08  8:12 ` Mauro Carvalho Chehab
2020-08-10  9:25   ` Jessica Yu
2020-08-10 15:06     ` Jessica Yu
2020-08-11 14:34       ` Mauro Carvalho Chehab
2020-08-11 14:55         ` peterz
2020-08-11 15:27           ` Mauro Carvalho Chehab
2020-08-11 16:01             ` Jessica Yu
2020-08-11 16:57               ` Will Deacon
2020-08-11 17:59               ` peterz
2020-08-11 21:29                 ` Peter Zijlstra
2020-08-12  8:56               ` Ard Biesheuvel
2020-08-12 10:40                 ` peterz
2020-08-12 11:41                   ` Jessica Yu
2020-08-12 13:14                     ` H.J. Lu
2020-08-12 12:56                   ` Will Deacon
2020-08-12 14:15                     ` Szabolcs Nagy
2020-08-12 16:00                       ` Jessica Yu
2020-08-12 16:37                         ` Ard Biesheuvel
2020-08-12 16:42                           ` Szabolcs Nagy
2020-08-13  9:00                             ` Will Deacon
2020-08-12 20:00                           ` Peter Zijlstra
2020-08-13  8:36                             ` Ard Biesheuvel
2020-08-13 13:04                               ` Jessica Yu
2020-08-13 13:07                                 ` Ard Biesheuvel
2020-08-21 12:20                                   ` Will Deacon [this message]
2020-08-21 12:27                                     ` Ard Biesheuvel
2020-08-21 12:30                                       ` Will Deacon
2020-08-22 13:47                                         ` Ard Biesheuvel
2020-08-24 15:24                                           ` Jessica Yu
2020-08-25  1:54                                             ` Masahiro Yamada
2020-08-31  9:46                                         ` Jessica Yu
2020-08-31 10:42                                           ` Masahiro Yamada
2020-08-31 13:25                                             ` Ard Biesheuvel
2020-08-31 15:31                                               ` Jessica Yu
2020-08-31 15:46                                               ` Masahiro Yamada
2020-09-03 12:37                                             ` Jessica Yu
2020-09-01 12:51                                           ` Will Deacon

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=20200821121959.GC20833@willie-the-truck \
    --to=will@kernel.org \
    --cc=ardb@kernel.org \
    --cc=jeyu@kernel.org \
    --cc=jpoimboe@redhat.com \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mbenes@suse.cz \
    --cc=mchehab+huawei@kernel.org \
    --cc=nd@arm.com \
    --cc=peterz@infradead.org \
    --cc=szabolcs.nagy@arm.com \
    --cc=tglx@linutronix.de \
    /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;
as well as URLs for NNTP newsgroup(s).