mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Javier Martinez Canillas <javierm@redhat.com>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: "Roberts, William C" <william.c.roberts@intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
	Peter Huewe <peterhuewe@gmx.de>,
	"Tricca, Philip B" <philip.b.tricca@intel.com>,
	"linux-integrity@vger.kernel.org"
	<linux-integrity@vger.kernel.org>
Subject: Re: [RFC PATCH] tpm: don't return -EINVAL if TPM command validation fails
Date: Mon, 20 Nov 2017 10:26:01 +0100	[thread overview]
Message-ID: <36e9ad69-225b-ca2b-7047-d188a50b1438@redhat.com> (raw)
In-Reply-To: <20171119152721.GY4276@ziepe.ca>

On 11/19/2017 04:27 PM, Jason Gunthorpe wrote:
> On Sat, Nov 18, 2017 at 01:53:49AM +0100, Javier Martinez Canillas wrote:
> 
>> What I fail to understand is why that's not a problem when the TPM spaces
>> infrastructure isn't used, tpm_validate_command() function just returns
>> true if space is NULL. So when sending command to /dev/tpm0 directly, a
>> rogue user-space program can send any arbitrary data to the TPM.
> 
> tpm spaces was designed to allow unprivileged user space access to

Ah, I didn't know about that design decision. This isn't documented anywhere
AFAICT, it would be nice to add some notes to Documentation/security/tpm/ so
people are aware of this.

> the TPM so it has additional protection designed to keep the TPM
> secure.
>
> Allowing unprivileged user space to send send garbage to the TPM seems
> like a good way to trigger a TPM bug in parsing.
>

Well, I don't think that unprivileged user-space should have any access to
the TPM. Since a rogue user-space can abuse the TPM anyway even when using
a well constructed command (which is the only validation that's done IIUC).

In other words, only trusted software should have access to the TPM device.

I thought the TPM spaces was about exposing a virtualized TPM that didn't
have the limitation of only allowing to store a small set of transient
objects (so user-space didn't have to deal with the handles flushing and
context save/load), rather than relaxing the access control to the TPM.

> When spaces are not used /dev/tpm0 is root only and has full
> unrestricted access.
>

The Linux motto is that it should provide mechanisms and not policy, so
I wonder if is up to user-space to decide who should access the devices.

For example on my Fedora machine, the /dev/tpm* char devices are owned by
the "tss" user and group. That's because the tpm2-abrmd package installs
an udev rule to change the permissions, since the resource manager is run
as the unprivileged tss user.

The /dev/tpmrm* on the other hand are owned by root. So on this distro
at least, is the opposite of what you described.

Having said that, I'm happy to implement the synthesized response when
the command is not supported, if that's the correct way to resolve this.

> Jason
> 

Best regards,
-- 
Javier Martinez Canillas
Software Engineer - Desktop Hardware Enablement
Red Hat

  reply	other threads:[~2017-11-20  9:26 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-17 10:07 Javier Martinez Canillas
2017-11-17 16:57 ` Jason Gunthorpe
2017-11-17 17:56   ` Javier Martinez Canillas
2017-11-17 17:58     ` Jason Gunthorpe
2017-11-17 18:10       ` Javier Martinez Canillas
2017-11-17 18:17         ` Jason Gunthorpe
2017-11-17 18:34           ` Javier Martinez Canillas
2017-11-17 19:14             ` Roberts, William C
2017-11-17 23:55               ` Jason Gunthorpe
2017-11-18  0:53                 ` Javier Martinez Canillas
2017-11-19 15:27                   ` Jason Gunthorpe
2017-11-20  9:26                     ` Javier Martinez Canillas [this message]
2017-11-20 16:14                       ` Roberts, William C
2017-11-20 18:02                         ` Jason Gunthorpe
2017-11-20 18:04                       ` Jason Gunthorpe
2017-11-20 23:15 ` Jarkko Sakkinen
2017-11-21  9:07   ` Javier Martinez Canillas
2017-11-21  9:27     ` Javier Martinez Canillas
2017-11-21 12:30     ` Jarkko Sakkinen
2017-11-21 12:49       ` Javier Martinez Canillas
     [not found]         ` <DB638850A6A2434A93ECADDA0BC838905F09D5D9@ORSMSX103.amr.corp.intel.com>
2017-11-22 17:16           ` FW: " flihp
2017-11-22 19:25             ` Javier Martinez Canillas
2017-11-26 14:21               ` Jarkko Sakkinen
2017-11-29 11:26                 ` Javier Martinez Canillas
2017-11-22 20:13             ` Jason Gunthorpe
2017-11-26 14:18             ` Jarkko Sakkinen
2017-11-26 23:23               ` Javier Martinez Canillas
2017-11-26 14:14         ` Jarkko Sakkinen
2017-11-21 20:29       ` Roberts, William C
2017-11-22  9:26         ` Javier Martinez Canillas
2017-11-26 14:12           ` Jarkko Sakkinen
2017-11-26 23:19             ` Javier Martinez Canillas
2017-11-26 14:06         ` Jarkko Sakkinen

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=36e9ad69-225b-ca2b-7047-d188a50b1438@redhat.com \
    --to=javierm@redhat.com \
    --cc=jarkko.sakkinen@linux.intel.com \
    --cc=jgg@ziepe.ca \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterhuewe@gmx.de \
    --cc=philip.b.tricca@intel.com \
    --cc=william.c.roberts@intel.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

all inboxes | Powered by JetHome®