From: <Mario.Limonciello@dell.com>
To: <gnomes@lxorguk.ukuu.org.uk>
Cc: <dvhart@infradead.org>, <andy.shevchenko@gmail.com>,
<linux-kernel@vger.kernel.org>,
<platform-driver-x86@vger.kernel.org>, <luto@kernel.org>,
<quasisec@google.com>, <pali.rohar@gmail.com>,
<rjw@rjwysocki.net>, <mjg59@google.com>, <hch@lst.de>,
<greg@kroah.com>
Subject: RE: [PATCH v7 10/15] platform/x86: dell-smbios: add filtering capability for requests
Date: Thu, 12 Oct 2017 13:23:08 +0000 [thread overview]
Message-ID: <1200feb837864baa8a3be9740413f2e9@ausx13mpc120.AMER.DELL.COM> (raw)
In-Reply-To: <20171012110903.3ab4ed5e@alans-desktop>
> -----Original Message-----
> From: Alan Cox [mailto:gnomes@lxorguk.ukuu.org.uk]
> Sent: Thursday, October 12, 2017 5:09 AM
> To: Limonciello, Mario <Mario_Limonciello@Dell.com>
> Cc: dvhart@infradead.org; Andy Shevchenko <andy.shevchenko@gmail.com>;
> LKML <linux-kernel@vger.kernel.org>; platform-driver-x86@vger.kernel.org;
> Andy Lutomirski <luto@kernel.org>; quasisec@google.com;
> pali.rohar@gmail.com; rjw@rjwysocki.net; mjg59@google.com; hch@lst.de; Greg
> KH <greg@kroah.com>
> Subject: Re: [PATCH v7 10/15] platform/x86: dell-smbios: add filtering capability
> for requests
>
> On Wed, 11 Oct 2017 11:27:36 -0500
> Mario Limonciello <mario.limonciello@dell.com> wrote:
>
> > There are some categories of tokens and SMBIOS calls that it makes
> > sense to protect userspace from accessing. These are calls that
> > may write to one time use fields or activate hardware debugging
> > capabilities. They are not intended for general purpose use.
> >
> > This same functionality may be be later extended to also intercept
> > calls that may cause kernel functionality to get out of sync if
> > the same functions are used by other drivers.
>
> This doesn't work. You are creating an API. If you then have to remove
> parts of the API because it messes stuff up you break your API guarantee.
This potential "problem" already exists in that dcdbas provides a userspace
interface that can manipulate this same data as used by some kernel drivers.
The kernel drivers can be brought out of sync then.
We discussed this a while back, you may not be aware of the discussion.
The jist of it came down to that if a driver in the kernel decides to implement
the same functionality that is available through the calling interface but
with a different interface that the call could be filtered through the calling
interface.
Intercepting/filtering a call doesn't mean breaking API.
It can be handled two ways that I can see and both are valid:
1) Return an error code. The calling interface already API allows for error
return codes. Plenty of calls _already_ return errors. Returning
one for a filtered call is no different. This would be an improvement over how
dcdbas and existing kernel modules handle it.
2) Inspect the buffer and see that it's supposed to be handled by one of
the existing kernel modules. Pass the call on to the (kernel) driver that already
handles it, and return the result to userspace. This will keep the kernel
driver and the userspace return values in sync.
>
> As I said before, this needs to be a whitelist of stuff that is safe, and
> it needs to have a security model.
>From the BIOS perspective if no BIOS administrator password is set the
OS and any tools can access any item in the calling interface. If a BIOS
administrator password has been configured, many calls will return
error codes unless the application has done a security key exchange with
BIOS. This is both how dcdbas works today and how this interface that I
provided to replace it works.
Within Linux the security model is that items accessible through this interface
are only accessible by root. If userspace tools choose to make items in this
interface more widely accessible to say authenticated console users that's
their prerogative.
> When you make a feature available you
> can't nicely take it away again as you'll break people's user space.
As I said above -ENODEV or -EINVAL is not the same thing as taking a feature
away. The character device API doesn't change when something is filtered.
It's an error scenario.
>
> Start with a whitelist of the ones you know people want to use, or that
> your existing tooling you want to enable uses. Add others as needed in
> future releases of the kernel.
>
> Alan
The existing dcdbas calling interface tooling (libsmbios) expects to be able
to access all calls and all tokens. *The kernel doesn't filter any of it.*
I understand the ask to filter some calls and that's why patch 10/15 exists,
but please let me remind you this patch series is intended to /replace and
deprecate/ dcdbas userspace access.
next prev parent reply other threads:[~2017-10-12 13:23 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-11 16:27 [PATCH v7 00/15] Introduce support for Dell SMBIOS over WMI Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 01/15] platform/x86: wmi: Add new method wmidev_evaluate_method Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 02/15] platform/x86: dell-wmi: increase severity of some failures Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 03/15] platform/x86: dell-wmi: clean up wmi descriptor check Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 04/15] platform/x86: dell-wmi: allow 32k return size in the descriptor Mario Limonciello
2017-10-11 16:31 ` Pali Rohár
2017-10-11 16:37 ` Mario.Limonciello
2017-10-11 16:27 ` [PATCH v7 05/15] platform/x86: dell-wmi-descriptor: split WMI descriptor into it's own driver Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 06/15] platform/x86: wmi: Don't allow drivers to get each other's GUIDs Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 07/15] platform/x86: dell-smbios: only run if proper oem string is detected Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 08/15] platform/x86: dell-smbios: Add a sysfs interface for SMBIOS tokens Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 09/15] platform/x86: dell-smbios: Introduce dispatcher for SMM calls Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 10/15] platform/x86: dell-smbios: add filtering capability for requests Mario Limonciello
2017-10-12 10:09 ` Alan Cox
2017-10-12 13:23 ` Mario.Limonciello [this message]
2017-10-12 14:33 ` Pali Rohár
2017-10-12 14:43 ` Mario.Limonciello
2017-10-13 14:18 ` Alan Cox
2017-10-13 0:46 ` Darren Hart
2017-10-13 9:43 ` Greg KH
2017-10-13 10:40 ` Pali Rohár
2017-10-13 15:03 ` Mario.Limonciello
2017-10-13 15:19 ` Alan Cox
2017-10-13 15:44 ` Mario.Limonciello
2017-10-13 19:46 ` Alan Cox
2017-10-13 22:16 ` Darren Hart
2017-10-13 15:56 ` Greg KH
2017-10-13 17:47 ` Mario.Limonciello
2017-10-13 22:28 ` Darren Hart
2017-10-13 16:37 ` Darren Hart
2017-10-11 16:27 ` [PATCH v7 11/15] platform/x86: dell-smbios-wmi: Add new WMI dispatcher driver Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 12/15] platform/x86: dell-smbios-smm: test for WSMT Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 13/15] platform/x86: wmi: Add sysfs attribute for required_buffer_size Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 14/15] platform/x86: wmi: create userspace interface for drivers Mario Limonciello
2017-10-11 16:27 ` [PATCH v7 15/15] platform/x86: dell-smbios-wmi: introduce userspace interface Mario Limonciello
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=1200feb837864baa8a3be9740413f2e9@ausx13mpc120.AMER.DELL.COM \
--to=mario.limonciello@dell.com \
--cc=andy.shevchenko@gmail.com \
--cc=dvhart@infradead.org \
--cc=gnomes@lxorguk.ukuu.org.uk \
--cc=greg@kroah.com \
--cc=hch@lst.de \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mjg59@google.com \
--cc=pali.rohar@gmail.com \
--cc=platform-driver-x86@vger.kernel.org \
--cc=quasisec@google.com \
--cc=rjw@rjwysocki.net \
/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
all inboxes | Powered by JetHome®