From: "Luis R. Rodriguez" <mcgrof@kernel.org> To: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: "Luis R. Rodriguez" <mcgrof@kernel.org>, Linus Torvalds <torvalds@linux-foundation.org>, Johannes Berg <johannes@sipsolutions.net>, Matthew Garrett <mjg59@google.com>, David Howells <dhowells@redhat.com>, Alan Cox <gnomes@lxorguk.ukuu.org.uk>, "AKASHI, Takahiro" <takahiro.akashi@linaro.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Jan Blunck <jblunck@infradead.org>, Julia Lawall <julia.lawall@lip6.fr>, Marcus Meissner <meissner@suse.de>, Gary Lin <GLin@suse.com>, LSM List <linux-security-module@vger.kernel.org>, linux-efi <linux-efi@vger.kernel.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org> Subject: Re: Firmware signing -- Re: [PATCH 00/27] security, efi: Add kernel lockdown Date: Wed, 15 Nov 2017 21:46:51 +0100 Message-ID: <20171115204651.GO729@wotan.suse.de> (raw) In-Reply-To: <1510775817.3711.315.camel@linux.vnet.ibm.com> On Wed, Nov 15, 2017 at 02:56:57PM -0500, Mimi Zohar wrote: > On Wed, 2017-11-15 at 18:52 +0100, Luis R. Rodriguez wrote: > > On Wed, Nov 15, 2017 at 06:49:57AM -0500, Mimi Zohar wrote: > > > On Tue, 2017-11-14 at 21:50 +0100, Luis R. Rodriguez wrote: > > > > > > > Johannes made cfg80211 recently just use request_firmware() now via commit on > > > > linux-next 90a53e4432 ("cfg80211: implement regdb signature checking") [0] as > > > > he got tired of waiting firmware signing, but note he implemented a signature > > > > checking on its own so he open codes verify_pkcs7_signature() after the > > > > request_firmware() call. If we are happy to live with this, then so be it. > > > > > > > > [0] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=90a53e4432b12288316efaa5f308adafb8d304b0 > > > > > > Johannes was tired of waiting? Commit 5a9196d "ima: add support for > > > measuring and appraising firmware" has been in the kernel since linux- > > > 3.17. > > > > > > The original firmware hook for verifying firmware signatures were > > > replaced with the common LSM pre and post kernel_read_file() hooks > > > in linux-4.6.y. > > > > > > Even if you wanted to support firmware signature verification without > > > IMA-appraisal, it should be using the LSM hooks. > > > > request_firmware() uses kernel_read_file_from_path() underneath the hood, > > and so its used for both: > > > > /lib/firmware/regulatory.db > > /lib/firmware/regulatory.db.p7s > > The firmware signature validation should occur as part of > kernel_read_file_from_path(), not as a stand alone verification. > > Why not extend kernel_read_file_from_path() to pass the detached signature? > Since the signature would only be used for the verification, there's no need > to return the open file descriptor. This goes along with the question if there were an other users who wanted it, or more importantly -- if firmware signing was desirable for any reason, a modified kernel_read_file_from_path_signed() could in turn be used, *or* an LSM added to handle READING_FIRMWARE and READING_FIRMWARE_PREALLOC_BUFFER. The above use case was one example outside of the typical firmware use. I've long pointed out that we no longer use the firmware API for just firmware, and the above is now a very good example of it. I've been suggesting uses of the firmware API for non-firmware had already happened and that more uses were on its way. Trusted boot has nothing to do with these uses as such the gains of systems pegged with "trusted boot" have nothing to do validation of these files through hardware. In this particular case its simply easier to re-use the existing redistribution mechanisms in place already so that users can get the regulatory.db and regulatory.db.p7s. So here is now an example use of request_firmware() API with its own key validation / keyring solution completely open coded. So, given the wireless regulatory use case *does* benefit from re-using request_firmware() due to the file redistribution aspects, using a new kernel_read_file_from_path_signed() for non-firmware with the same /lib/firmware/ path specified would be rather sloppy and awkward. The right way to not open code this is to consider adding firmware signing support properly. > > The later only if CONFIG_CFG80211_REQUIRE_SIGNED_REGDB, which defaults > > to y anyway. > > > > What I meant was that net/wireless/reg.c now open codes firmware signature > > validation on its own rather than using a helper. IMA appraisal will still > > be used if enabled given kernel_read_file_from_path() is used. > > > > The open coding of the firmware signature check is what I wanted to highlight. > > How are the keys in the CFG80211_EXTRA_REGDB_KEYDIR verified? The > call to key_create_or_update() with the KEY_ALLOC_BYPASS_RESTRICTION > option by-passes any requirement that the keys in this directory are > signed. This by-passes the concept of extending the secure boot > signature chain of trust. To safely validate the keys use the > restrict_link_by_builtin_trusted option. I'll let Johannes chime in, if he so wishes. Luis
next prev parent reply index Thread overview: 151+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-10-19 14:50 David Howells 2017-10-19 14:50 ` [PATCH 01/27] Add the ability to lock down access to the running kernel image David Howells 2017-10-20 23:19 ` James Morris 2017-10-19 14:50 ` [PATCH 02/27] Add a SysRq option to lift kernel lockdown David Howells 2017-10-19 17:20 ` Randy Dunlap 2017-10-19 22:12 ` David Howells 2017-11-07 17:39 ` Thiago Jung Bauermann 2017-11-07 22:56 ` David Howells 2017-10-19 14:50 ` [PATCH 03/27] Enforce module signatures if the kernel is locked down David Howells 2017-10-20 6:33 ` joeyli 2017-10-20 23:21 ` James Morris 2017-10-27 18:48 ` Mimi Zohar 2017-10-30 17:00 ` David Howells 2017-10-30 17:52 ` Mimi Zohar 2017-11-02 17:22 ` David Howells 2017-11-02 19:13 ` Mimi Zohar 2017-11-02 21:30 ` David Howells 2017-11-02 21:41 ` Mimi Zohar 2017-11-02 22:01 ` David Howells 2017-11-02 22:18 ` Mimi Zohar 2017-10-19 14:51 ` [PATCH 04/27] Restrict /dev/mem and /dev/kmem when " David Howells 2017-10-20 6:37 ` joeyli 2017-10-20 23:21 ` James Morris 2017-10-19 14:51 ` [PATCH 05/27] kexec: Disable at runtime if " David Howells 2017-10-20 6:38 ` joeyli 2017-10-20 23:22 ` James Morris 2017-10-19 14:51 ` [PATCH 06/27] Copy secure_boot flag in boot params across kexec reboot David Howells 2017-10-20 6:40 ` joeyli 2017-10-19 14:51 ` [PATCH 07/27] kexec_file: Disable at runtime if securelevel has been set David Howells 2017-10-20 23:26 ` James Morris 2017-10-23 15:54 ` Mimi Zohar 2017-10-26 7:42 ` joeyli 2017-10-26 14:17 ` Mimi Zohar 2017-10-27 19:30 ` Mimi Zohar 2017-10-27 19:32 ` Mimi Zohar 2017-10-28 8:34 ` joeyli 2017-10-29 22:26 ` Mimi Zohar 2017-10-30 9:00 ` David Howells 2017-10-30 12:01 ` Mimi Zohar 2017-10-26 15:02 ` David Howells 2017-10-26 15:46 ` Mimi Zohar 2017-10-30 15:49 ` David Howells 2017-10-30 16:43 ` Mimi Zohar 2017-11-02 17:00 ` David Howells 2017-10-26 14:51 ` David Howells 2017-11-02 17:29 ` David Howells 2017-10-19 14:51 ` [PATCH 08/27] hibernate: Disable when the kernel is locked down David Howells 2017-10-20 6:40 ` joeyli 2017-10-19 14:51 ` [PATCH 09/27] uswsusp: " David Howells 2017-10-20 6:41 ` joeyli 2017-10-20 23:29 ` James Morris 2017-10-19 14:51 ` [PATCH 10/27] PCI: Lock down BAR access " David Howells 2017-10-20 6:42 ` joeyli 2017-10-19 14:51 ` [PATCH 11/27] x86: Lock down IO port " David Howells 2017-10-20 6:43 ` joeyli 2017-10-19 14:52 ` [PATCH 12/27] x86/msr: Restrict MSR " David Howells 2017-10-20 6:43 ` joeyli 2017-10-20 18:09 ` Alan Cox 2017-10-20 20:48 ` David Howells 2017-10-21 4:39 ` joeyli 2017-10-23 14:49 ` David Howells 2017-10-25 14:03 ` joeyli 2017-10-19 14:52 ` [PATCH 13/27] asus-wmi: Restrict debugfs interface " David Howells 2017-10-20 6:44 ` joeyli 2017-10-19 14:52 ` [PATCH 14/27] ACPI: Limit access to custom_method " David Howells 2017-10-20 6:45 ` joeyli 2017-10-19 14:52 ` [PATCH 15/27] acpi: Ignore acpi_rsdp kernel param when the kernel has been " David Howells 2017-10-20 6:45 ` joeyli 2017-10-19 14:52 ` [PATCH 16/27] acpi: Disable ACPI table override if the kernel is " David Howells 2017-10-20 6:46 ` joeyli 2017-10-19 14:52 ` [PATCH 17/27] acpi: Disable APEI error injection " David Howells 2017-10-20 6:47 ` joeyli 2017-10-19 14:52 ` [PATCH 18/27] bpf: Restrict kernel image access functions when " David Howells 2017-10-19 22:18 ` Alexei Starovoitov 2017-10-20 2:47 ` joeyli 2017-10-20 8:08 ` David Howells 2017-10-20 15:57 ` jlee 2017-10-20 23:00 ` Alexei Starovoitov 2017-10-23 14:51 ` David Howells 2017-10-20 16:03 ` David Howells 2017-10-20 16:43 ` jlee 2017-10-23 14:53 ` David Howells 2017-10-25 7:07 ` joeyli 2017-10-19 22:48 ` David Howells 2017-10-19 23:31 ` Alexei Starovoitov 2017-11-09 17:15 ` David Howells 2017-10-19 14:52 ` [PATCH 19/27] scsi: Lock down the eata driver David Howells 2017-10-19 14:53 ` [PATCH 20/27] Prohibit PCMCIA CIS storage when the kernel is locked down David Howells 2017-10-19 14:53 ` [PATCH 21/27] Lock down TIOCSSERIAL David Howells 2017-10-19 14:53 ` [PATCH 22/27] Lock down module params that specify hardware parameters (eg. ioport) David Howells 2017-10-19 14:53 ` [PATCH 23/27] x86/mmiotrace: Lock down the testmmiotrace module David Howells 2017-10-19 14:53 ` [PATCH 24/27] debugfs: Disallow use of debugfs files when the kernel is locked down David Howells 2017-10-19 14:53 ` [PATCH 25/27] Lock down /proc/kcore David Howells 2017-10-21 2:11 ` James Morris 2017-10-23 14:56 ` David Howells 2017-10-19 14:53 ` [PATCH 26/27] efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode David Howells 2017-10-21 2:19 ` James Morris 2017-10-23 14:58 ` David Howells 2017-10-19 14:53 ` [PATCH 27/27] efi: Lock down the kernel if booted in " David Howells 2017-10-19 22:39 ` [PATCH 00/27] security, efi: Add kernel lockdown David Howells 2017-10-23 14:34 ` [PATCH 04/27] Restrict /dev/mem and /dev/kmem when the kernel is locked down David Howells 2017-10-24 10:48 ` Ethan Zhao 2017-10-24 14:56 ` David Howells 2017-11-02 22:01 ` [PATCH 00/27] security, efi: Add kernel lockdown Mimi Zohar 2017-11-02 22:04 ` Firmware signing -- " David Howells 2017-11-02 22:10 ` Mimi Zohar 2017-11-07 23:07 ` Luis R. Rodriguez 2017-11-08 6:15 ` AKASHI, Takahiro 2017-11-08 19:46 ` Luis R. Rodriguez 2017-11-09 1:48 ` AKASHI, Takahiro 2017-11-09 2:17 ` Mimi Zohar 2017-11-09 4:46 ` AKASHI, Takahiro 2017-11-10 13:37 ` Mimi Zohar 2017-11-11 2:32 ` Alan Cox 2017-11-13 11:49 ` Mimi Zohar 2017-11-13 17:42 ` Luis R. Rodriguez 2017-11-13 21:08 ` Alan Cox 2017-12-04 19:51 ` Luis R. Rodriguez 2017-12-07 15:32 ` Alan Cox 2017-11-13 21:44 ` David Howells 2017-11-13 22:09 ` Linus Torvalds 2017-11-14 0:20 ` Alan Cox 2017-11-14 12:21 ` Mimi Zohar 2017-11-14 12:38 ` Greg Kroah-Hartman 2017-11-14 13:17 ` Mimi Zohar 2017-11-14 17:34 ` Linus Torvalds 2017-11-14 19:58 ` Matthew Garrett 2017-11-14 20:18 ` Linus Torvalds 2017-11-14 20:31 ` Matthew Garrett 2017-11-14 20:35 ` Linus Torvalds 2017-11-14 20:37 ` Matthew Garrett 2017-11-14 20:50 ` Luis R. Rodriguez 2017-11-14 20:55 ` Matthew Garrett 2017-11-14 22:14 ` James Bottomley 2017-11-14 22:17 ` Matthew Garrett 2017-11-14 22:31 ` James Bottomley 2017-11-14 22:34 ` Matthew Garrett 2017-11-15 11:49 ` Mimi Zohar 2017-11-15 17:52 ` Luis R. Rodriguez 2017-11-15 19:56 ` Mimi Zohar 2017-11-15 20:46 ` Luis R. Rodriguez [this message] 2017-11-16 0:05 ` Mimi Zohar 2017-12-05 10:27 ` Pavel Machek 2017-12-07 23:02 ` Luis R. Rodriguez 2017-12-08 17:11 ` Alan Cox 2017-11-10 1:46 ` Luis R. Rodriguez 2017-11-10 13:45 ` Mimi Zohar 2017-11-13 18:50 ` Luis R. Rodriguez 2017-11-13 19:08 ` Luis R. Rodriguez 2017-11-08 20:01 ` Mimi Zohar 2017-11-08 20:09 ` Luis R. Rodriguez
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=20171115204651.GO729@wotan.suse.de \ --to=mcgrof@kernel.org \ --cc=GLin@suse.com \ --cc=dhowells@redhat.com \ --cc=gnomes@lxorguk.ukuu.org.uk \ --cc=gregkh@linuxfoundation.org \ --cc=jblunck@infradead.org \ --cc=johannes@sipsolutions.net \ --cc=julia.lawall@lip6.fr \ --cc=linux-efi@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-security-module@vger.kernel.org \ --cc=meissner@suse.de \ --cc=mjg59@google.com \ --cc=takahiro.akashi@linaro.org \ --cc=torvalds@linux-foundation.org \ --cc=zohar@linux.vnet.ibm.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
LKML Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git git clone --mirror https://lore.kernel.org/lkml/8 lkml/git/8.git git clone --mirror https://lore.kernel.org/lkml/9 lkml/git/9.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \ linux-kernel@vger.kernel.org public-inbox-index lkml Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git