From: Roberto Sassu <roberto.sassu@huawei.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: Andy Lutomirski <luto@kernel.org>, Rob Landley <rob@landley.net>,
"Arvind Sankar" <niveditas98@gmail.com>,
LKML <linux-kernel@vger.kernel.org>,
"Linux API" <linux-api@vger.kernel.org>,
Linux FS Devel <linux-fsdevel@vger.kernel.org>,
linux-integrity <linux-integrity@vger.kernel.org>,
<initramfs@vger.kernel.org>
Subject: Re: [PATCH v2 0/3] initramfs: add support for xattrs in the initial ram disk
Date: Tue, 14 May 2019 19:20:15 +0200 [thread overview]
Message-ID: <f01ad775-54de-033f-d8cb-f27f36e92f0c@huawei.com> (raw)
In-Reply-To: <20190514165842.GC28266@kroah.com>
On 5/14/2019 6:58 PM, Greg KH wrote:
> On Tue, May 14, 2019 at 06:33:29PM +0200, Roberto Sassu wrote:
>> On 5/14/2019 5:19 PM, Andy Lutomirski wrote:
>>> On Mon, May 13, 2019 at 5:47 AM Roberto Sassu <roberto.sassu@huawei.com> wrote:
>>>>
>>>> On 5/13/2019 11:07 AM, Rob Landley wrote:
>>>>>
>>>>>
>>>>> On 5/13/19 2:49 AM, Roberto Sassu wrote:
>>>>>> On 5/12/2019 9:43 PM, Arvind Sankar wrote:
>>>>>>> On Sun, May 12, 2019 at 05:05:48PM +0000, Rob Landley wrote:
>>>>>>>> On 5/12/19 7:52 AM, Mimi Zohar wrote:
>>>>>>>>> On Sun, 2019-05-12 at 11:17 +0200, Dominik Brodowski wrote:
>>>>>>>>>> On Thu, May 09, 2019 at 01:24:17PM +0200, Roberto Sassu wrote:
>>>>>>>>>>> This proposal consists in marshaling pathnames and xattrs in a file called
>>>>>>>>>>> .xattr-list. They are unmarshaled by the CPIO parser after all files have
>>>>>>>>>>> been extracted.
>>>>>>>>>>
>>>>>>>>>> Couldn't this parsing of the .xattr-list file and the setting of the xattrs
>>>>>>>>>> be done equivalently by the initramfs' /init? Why is kernel involvement
>>>>>>>>>> actually required here?
>>>>>>>>>
>>>>>>>>> It's too late. The /init itself should be signed and verified.
>>>>>>>>
>>>>>>>> If the initramfs cpio.gz image was signed and verified by the extractor, how is
>>>>>>>> the init in it _not_ verified?
>>>>>>>>
>>>>>>>> Ro
>>>>>>>
>>>>>>> Wouldn't the below work even before enforcing signatures on external
>>>>>>> initramfs:
>>>>>>> 1. Create an embedded initramfs with an /init that does the xattr
>>>>>>> parsing/setting. This will be verified as part of the kernel image
>>>>>>> signature, so no new code required.
>>>>>>> 2. Add a config option/boot parameter to panic the kernel if an external
>>>>>>> initramfs attempts to overwrite anything in the embedded initramfs. This
>>>>>>> prevents overwriting the embedded /init even if the external initramfs
>>>>>>> is unverified.
>>>>>>
>>>>>> Unfortunately, it wouldn't work. IMA is already initialized and it would
>>>>>> verify /init in the embedded initial ram disk.
>>>>>
>>>>> So you made broken infrastructure that's causing you problems. Sounds unfortunate.
>>>>
>>>> The idea is to be able to verify anything that is accessed, as soon as
>>>> rootfs is available, without distinction between embedded or external
>>>> initial ram disk.
>>>>
>>>> Also, requiring an embedded initramfs for xattrs would be an issue for
>>>> systems that use it for other purposes.
>>>>
>>>>
>>>>>> The only reason why
>>>>>> opening .xattr-list works is that IMA is not yet initialized
>>>>>> (late_initcall vs rootfs_initcall).
>>>>>
>>>>> Launching init before enabling ima is bad because... you didn't think of it?
>>>>
>>>> No, because /init can potentially compromise the integrity of the
>>>> system.
>>>
>>> I think Rob is right here. If /init was statically built into the
>>> kernel image, it has no more ability to compromise the kernel than
>>> anything else in the kernel. What's the problem here?
>>
>> Right, the measurement/signature verification of the kernel image is
>> sufficient.
>>
>> Now, assuming that we defer the IMA initialization until /init in the
>> embedded initramfs has been executed, the problem is how to handle
>> processes launched with the user mode helper or files directly read by
>> the kernel (if it can happen before /init is executed). If IMA is not
>> yet enabled, these operations will be performed without measurement and
>> signature verification.
>
> If you really care about this, don't launch any user mode helper
> programs (hint, you have the kernel option to control this and funnel
> everything into one, or no, binaries). And don't allow the kernel to
> read any files either, again, you have control over this.
>
> Or start IMA earlier if you need/want/care about this.
Yes, this is how it works now. It couldn't start earlier than
late_initcall, as it has to wait until the TPM driver is initialized.
Anyway, it is enabled at the time /init is executed. And this would be
an issue because launching /init and reading xattrs from /.xattr-list
would be denied (the signature is missing).
And /.xattr-list won't have a signature, if initramfs is generated
locally.
Roberto
--
HUAWEI TECHNOLOGIES Duesseldorf GmbH, HRB 56063
Managing Director: Bo PENG, Jian LI, Yanli SHI
next prev parent reply other threads:[~2019-05-14 17:20 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-09 11:24 [PATCH v2 0/3] initramfs: add support for xattrs in the initial ram disk Roberto Sassu
2019-05-09 11:24 ` [PATCH v2 1/3] fs: add ksys_lsetxattr() wrapper Roberto Sassu
2019-05-10 21:28 ` Jann Horn
2019-05-09 11:24 ` [PATCH v2 2/3] initramfs: set extended attributes Roberto Sassu
2019-05-09 11:24 ` [PATCH v2 3/3] initramfs: introduce do_readxattrs() Roberto Sassu
2019-05-10 21:33 ` Jann Horn
2019-05-13 13:03 ` Roberto Sassu
2019-05-09 18:34 ` [PATCH v2 0/3] initramfs: add support for xattrs in the initial ram disk Rob Landley
2019-05-10 6:56 ` Roberto Sassu
2019-05-10 11:49 ` Mimi Zohar
2019-05-10 20:46 ` Rob Landley
2019-05-10 22:38 ` Mimi Zohar
2019-05-11 22:44 ` Andy Lutomirski
2019-05-12 4:04 ` Rob Landley
2019-05-12 4:12 ` Rob Landley
2019-05-12 9:17 ` Dominik Brodowski
2019-05-12 10:18 ` hpa
2019-05-12 15:31 ` Dominik Brodowski
2019-05-13 0:02 ` Mimi Zohar
2019-05-13 0:21 ` hpa
2019-05-13 0:23 ` hpa
2019-05-12 12:52 ` Mimi Zohar
2019-05-12 17:05 ` Rob Landley
2019-05-12 19:43 ` Arvind Sankar
2019-05-13 7:49 ` Roberto Sassu
2019-05-13 9:07 ` Rob Landley
2019-05-13 12:08 ` Mimi Zohar
2019-05-13 12:47 ` Roberto Sassu
2019-05-13 17:20 ` Arvind Sankar
2019-05-13 17:51 ` Arvind Sankar
2019-05-13 17:52 ` Arvind Sankar
2019-05-13 18:36 ` Mimi Zohar
2019-05-13 18:47 ` Arvind Sankar
2019-05-13 22:09 ` Mimi Zohar
2019-05-14 6:06 ` Rob Landley
2019-05-14 14:44 ` Arvind Sankar
2019-05-14 6:06 ` Rob Landley
2019-05-14 11:52 ` Roberto Sassu
2019-05-14 15:12 ` Rob Landley
2019-05-14 15:27 ` Arvind Sankar
2019-05-14 15:57 ` Arvind Sankar
2019-05-14 17:44 ` Roberto Sassu
2019-05-15 1:00 ` Arvind Sankar
2019-05-14 15:19 ` Andy Lutomirski
2019-05-14 16:33 ` Roberto Sassu
2019-05-14 16:58 ` Greg KH
2019-05-14 17:20 ` Roberto Sassu [this message]
2019-05-15 0:25 ` Arvind Sankar
2019-05-14 19:18 ` James Bottomley
2019-05-14 23:39 ` Rob Landley
2019-05-14 23:54 ` James Bottomley
2019-05-15 0:52 ` Arvind Sankar
2019-05-15 11:19 ` Roberto Sassu
2019-05-15 16:08 ` Arvind Sankar
2019-05-15 17:06 ` Roberto Sassu
2019-05-16 5:29 ` Arvind Sankar
2019-05-16 11:42 ` Roberto Sassu
2019-05-16 13:31 ` Mimi Zohar
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=f01ad775-54de-033f-d8cb-f27f36e92f0c@huawei.com \
--to=roberto.sassu@huawei.com \
--cc=gregkh@linuxfoundation.org \
--cc=initramfs@vger.kernel.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=niveditas98@gmail.com \
--cc=rob@landley.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;
as well as URLs for NNTP newsgroup(s).