public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Vojtech Pavlik <vojtech@suse.cz>
To: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: Jiri Kosina <jkosina@suse.cz>,
	David Howells <dhowells@redhat.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	jwboyer@redhat.com, pjones@redhat.com, vgoyal@redhat.com,
	keescook@chromium.org, keyrings@linux-nfs.org,
	linux-kernel@vger.kernel.org,
	Greg KH <gregkh@linuxfoundation.org>,
	Florian Weimer <fw@deneb.enyo.de>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [GIT PULL] Load keys from signed PE binaries
Date: Fri, 1 Mar 2013 11:00:52 +0100	[thread overview]
Message-ID: <20130301100052.GA20085@suse.cz> (raw)
In-Reply-To: <20130228225115.GA12360@srcf.ucam.org>

On Thu, Feb 28, 2013 at 10:51:15PM +0000, Matthew Garrett wrote:
> On Thu, Feb 28, 2013 at 11:48:06PM +0100, Jiri Kosina wrote:
> 
> > Let me formulate my point more clearly -- Microsoft very likely going to 
> > sign hello world EFI PE binary, no matter the contents of .keylist 
> > section, as they don't give a damn about this section, as it has zero 
> > semantic value to them, right?
> > 
> > They sign the binary. By signing the binary, they are *NOT* establishing 
> > cryptographic chain of trust to the key stored in .keylist, but your 
> > patchset seems to imply so.
> 
> Mr Evil Blackhat's binary is then a mechanism for circumventing the 
> Windows trust mechanism, and as such his account is subject to 
> termination and his binary can be added to dbx. 

Why?

Let's take a look on what would happen in this scenario:

A PE binary, from Mr. Blackhat, doing nothing, in general, but
containing a key in a section, was signed by MS on the grounds that the
binary isn't harmful.

By issuing the signature, MS is attesting that the binary is safe, but
isn't saying anything about the data (key) embedded in it. It doesn't
say the key comes from a trusted party. It just says "this isn't
malware", and that's what their tools verify.

Your shim loader (signed by MS) loads your Linux kernel.

Your Linux kernel, then, based on the key-in-PE model decides to trust
the key, although nobody really said it's to be trusted.

Mr. Blackhat then can load his i_own_your_ring0.ko module signed by his
key on your system, having obtained root access previously.

You call Microsoft, telling them what Mr. Blackhat has done.

They now can:

a) Do what you want: Disable Mr. Blackhat's account and revoke the hash
   of his binary.

But also:

b) Say, "oh well, we're sorry this kills your security model, but it's
enough for us that you already fully booted Linux to worry about Windows
security, this affects only your distribution and we don't care".

c) Decide your security model is flawed, because you're abusing their
signature process to mean something else from what they intended and
revoke your shim hash instead.

And I don't think you can rely on MS doing 'a'. Particularly when there
will be a large number of key-in-PE binaries signed by them at that
point, with them not being able to tell by any analysis which of them
are evil and which not.

I would even say b) is most likely.

> We'd check the binary hash against dbx and refuse to load it on
> systems that have received the update, and Mr Evil Blackhat would have
> to find a new bunch of identity documents to create a new account to
> repeat the process.

Yes, from the point it gets blacklisted, it's fairly clear. You're
forced to reboot, but under the Secure Boot model, you have to do that
on any system that used code whose hash has been revoked.

-- 
Vojtech Pavlik
Director SuSE Labs

  parent reply	other threads:[~2013-03-01 10:25 UTC|newest]

Thread overview: 124+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-21 15:47 [GIT PULL] Load keys from signed PE binaries David Howells
2013-02-21 16:39 ` Linus Torvalds
2013-02-21 16:42   ` Matthew Garrett
2013-02-21 16:58     ` Linus Torvalds
2013-02-21 17:49       ` Matthew Garrett
2013-02-21 18:03         ` Linus Torvalds
2013-02-21 18:11           ` Matthew Garrett
2013-02-22 14:05           ` Peter Jones
2013-02-25 14:46             ` Florian Weimer
2013-02-25 15:42               ` Matthew Garrett
2013-02-25 15:50                 ` Florian Weimer
2013-02-25 16:14                   ` Matthew Garrett
2013-02-25 16:20                     ` Chris Friesen
2013-02-26 21:40                       ` Florian Weimer
2013-02-26 22:19                         ` Chris Friesen
2013-02-21 18:17       ` David Howells
2013-02-21 18:25         ` Matthew Garrett
2013-02-25 14:33           ` Florian Weimer
2013-02-25 15:42             ` Matthew Garrett
2013-02-21 18:25         ` Linus Torvalds
2013-02-21 18:34           ` Peter Jones
2013-02-21 18:56             ` Linus Torvalds
2013-02-21 19:10               ` Peter Jones
2013-02-21 19:10               ` Matthew Garrett
2013-02-21 20:31               ` Vivek Goyal
2013-02-21 20:32                 ` Matthew Garrett
2013-02-21 20:38                   ` Vivek Goyal
2013-03-18  2:12               ` Stephen Rothwell
2013-03-19 18:11                 ` David Howells
2013-03-20 16:52                   ` David Howells
2013-03-20 23:28                     ` Stephen Rothwell
2013-02-21 20:08         ` Theodore Ts'o
2013-02-25 14:28     ` Florian Weimer
2013-02-25 15:45       ` Matthew Garrett
2013-02-26 21:08         ` Florian Weimer
2013-02-25 23:51       ` David Howells
2013-02-26  0:59         ` Greg KH
2013-02-26  2:33           ` Matthew Garrett
2013-02-26  3:02             ` Greg KH
2013-02-26  3:13               ` Matthew Garrett
2013-02-26  3:25                 ` Theodore Ts'o
2013-02-26  3:28                   ` Matthew Garrett
2013-02-26  3:32                     ` Linus Torvalds
2013-02-26  3:42                       ` Matthew Garrett
2013-02-26  3:45                         ` Linus Torvalds
2013-02-26  3:48                           ` Matthew Garrett
2013-02-26  4:31                             ` Linus Torvalds
2013-02-26  4:57                               ` Matthew Garrett
2013-02-26 15:30                                 ` Vivek Goyal
2013-02-26 15:38                                   ` Vivek Goyal
2013-02-27 17:23                                     ` Eric W. Biederman
2013-02-26 21:30                               ` Florian Weimer
2013-02-26 21:40                                 ` Peter Jones
2013-02-26 22:35                                   ` Al Viro
2013-02-26  3:40                     ` Greg KH
2013-02-26  3:45                       ` Matthew Garrett
2013-02-26  3:49                     ` Theodore Ts'o
2013-02-26 19:30                     ` Florian Weimer
2013-02-26 19:41                       ` Matthew Garrett
2013-02-26  3:31                 ` Greg KH
2013-02-26  3:38                   ` Matthew Garrett
2013-02-26  3:54                     ` Greg KH
2013-02-26  4:04                       ` Matthew Garrett
2013-02-26  4:13                         ` Greg KH
2013-02-26  4:23                           ` Matthew Garrett
2013-02-26  4:43                             ` Linus Torvalds
2013-02-26  4:59                               ` Matthew Garrett
2013-02-26 21:57                               ` Geert Uytterhoeven
2013-02-26 22:06                                 ` Peter Jones
2013-02-27 12:32                                   ` Geert Uytterhoeven
2013-02-27 12:43                                     ` Matthew Garrett
2013-02-27 14:14                                     ` Peter Jones
2013-02-26  4:25                           ` Dave Airlie
2013-02-26  4:45                             ` Theodore Ts'o
2013-02-26  4:55                               ` Dave Airlie
2013-02-26  6:04                                 ` Theodore Ts'o
2013-02-26  6:38                                   ` Theodore Ts'o
2013-02-26 10:07                                     ` Raymond Jennings
2013-02-26 10:21                                       ` Matthew Garrett
2013-02-26 16:45                                         ` Kent Yoder
2013-02-26 16:54                               ` Peter Jones
2013-02-27 15:24                                 ` Theodore Ts'o
2013-02-27 17:36                                   ` Chris Friesen
2013-02-27 17:59                                     ` Theodore Ts'o
2013-02-27 19:21                                       ` Chris Friesen
2013-02-27 19:34                                         ` Theodore Ts'o
2013-02-27 19:14                                     ` Paolo Bonzini
2013-02-27 21:31                                   ` Dave Airlie
2013-02-28  6:27                                     ` Geert Uytterhoeven
2013-02-28  7:48                                       ` Paolo Bonzini
2013-02-26 19:40                               ` Florian Weimer
2013-02-26 19:46                                 ` Matthew Garrett
2013-02-26  4:50                             ` Greg KH
2013-02-28  7:57                   ` Florian Weimer
2013-02-28 15:43                     ` Chris Friesen
2013-02-28 19:26                       ` Florian Weimer
2013-02-28 19:30                       ` Matthew Garrett
2013-02-28 19:41                         ` Florian Weimer
2013-02-28 19:53                           ` Matthew Garrett
2013-02-28 20:23                             ` Florian Weimer
2013-02-28 20:31                               ` Matthew Garrett
2013-02-26 15:11           ` David Howells
2013-02-26 16:50             ` Greg KH
2013-02-26 13:34         ` Jiri Kosina
2013-02-26 14:16           ` Raymond Jennings
2013-02-27  9:35         ` ownssh
2013-02-27 10:17           ` James Courtier-Dutton
2013-02-27 11:27             ` Alexander Holler
2013-02-27 11:49               ` James Courtier-Dutton
2013-02-27 14:56           ` Matthew Garrett
2013-02-27 20:35             ` ownssh
2013-03-01 18:21               ` Matthew Garrett
2013-03-01 18:39                 ` Gene Heskett
2013-02-28 22:48 ` Jiri Kosina
2013-02-28 22:51   ` Matthew Garrett
2013-02-28 23:02     ` Jiri Kosina
2013-02-28 23:05       ` Matthew Garrett
2013-02-28 23:45         ` Jiri Kosina
2013-02-28 23:47           ` Matthew Garrett
2013-02-28 23:52             ` Jiri Kosina
2013-03-01  0:00               ` Matthew Garrett
2013-03-01  0:08                 ` Jiri Kosina
2013-03-01 10:00     ` Vojtech Pavlik [this message]
2013-03-01 14:30       ` Theodore Ts'o

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=20130301100052.GA20085@suse.cz \
    --to=vojtech@suse.cz \
    --cc=dhowells@redhat.com \
    --cc=fw@deneb.enyo.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=jkosina@suse.cz \
    --cc=jwboyer@redhat.com \
    --cc=keescook@chromium.org \
    --cc=keyrings@linux-nfs.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mjg59@srcf.ucam.org \
    --cc=pbonzini@redhat.com \
    --cc=pjones@redhat.com \
    --cc=torvalds@linux-foundation.org \
    --cc=vgoyal@redhat.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