2019-03-22 17:40:36

by Lakshmi Ramasubramanian

[permalink] [raw]
Subject: Portable Executable (PE) Signature Validation and Measurement for KEXEC system call using IMA

Hello,

When loading the new kernel image file for executing KEXEC system call,
we would like to verify that the kernel image file is signed and
the signer certificate is valid.

If the kernel image file is in Portable Executable (PE) format we want to
validate the PE Signature and measure the signer X.509 certificate
(Extend as part of IMA Template defaulting to PCR 10, if not otherwise set,
and the IMA measurement log).

We plan to use Integrity Measurement Architecture (IMA) for the above.

Please let us know if anyone is already working on a patch set
for such a functionality.

I am aware of the work that Thiago Jung Bauermann @ IBM is doing for
"Appended signatures support for IMA appraisal"
(Web link given below)

https://lkml.org/lkml/2018/12/12/1049

Thank You.
-lakshmi


2019-03-25 17:53:52

by Lakshmi Ramasubramanian

[permalink] [raw]
Subject: RE: Portable Executable (PE) Signature Validation and Measurement for KEXEC system call using IMA

Hello Mimi,

Could you please let me know if you have any concerns with this approach?

Thanks,
-lakshmi

-----Original Message-----
From: [email protected] <[email protected]> On Behalf Of Lakshmi Ramasubramanian
Sent: Friday, March 22, 2019 10:39 AM
To: [email protected]; [email protected]
Subject: Portable Executable (PE) Signature Validation and Measurement for KEXEC system call using IMA

Hello,

When loading the new kernel image file for executing KEXEC system call, we would like to verify that the kernel image file is signed and the signer certificate is valid.

If the kernel image file is in Portable Executable (PE) format we want to validate the PE Signature and measure the signer X.509 certificate (Extend as part of IMA Template defaulting to PCR 10, if not otherwise set, and the IMA measurement log).

We plan to use Integrity Measurement Architecture (IMA) for the above.

Please let us know if anyone is already working on a patch set for such a functionality.

I am aware of the work that Thiago Jung Bauermann @ IBM is doing for "Appended signatures support for IMA appraisal"
(Web link given below)

https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flkml.org%2Flkml%2F2018%2F12%2F12%2F1049&amp;data=02%7C01%7Cnramas%40microsoft.com%7C2791f20f548e4502060108d6aeed54a8%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636888731683001667&amp;sdata=ai2KrDlnyyEqJfLS9kYUw0ebUTbq7Y5dTqMciwSRZ%2BM%3D&amp;reserved=0

Thank You.
-lakshmi

2019-03-25 19:28:47

by Mimi Zohar

[permalink] [raw]
Subject: Re: Portable Executable (PE) Signature Validation and Measurement for KEXEC system call using IMA

Hi Lakshmi,

On Fri, 2019-03-22 at 17:39 +0000, Lakshmi Ramasubramanian wrote:
> Hello,
>
> When loading the new kernel image file for executing KEXEC system call,
> we would like to verify that the kernel image file is signed and
> the signer certificate is valid.

I'm not sure what is meant by "and the signer certificate is valid".

The kexec kernel image signature can be verified by keys either on the
IMA keyring or the platform keyring.  The current method of verifying
keys being added to the IMA keyring is by requiring them to be signed
by a key on the builtin trusted keyring.  This provides a signature
chain of trust from boot to the kernel, based on a HW root of trust,
and then transitions to the kernel image's embedded keys.  You
probably already know as to why/how the platform keys are trusted.

>
> If the kernel image file is in Portable Executable (PE) format we want to
> validate the PE Signature and measure the signer X.509 certificate
> (Extend as part of IMA Template defaulting to PCR 10, if not otherwise set,
> and the IMA measurement log).

How/when do you plan to "measure the signer X.509 certificate"?  Is
this when the certificate is being loaded onto the keyring or at use?
 I'm not sure how much of the certificate is available once loaded
onto the keyring.

>
> We plan to use Integrity Measurement Architecture (IMA) for the above.
>
> Please let us know if anyone is already working on a patch set
> for such a functionality.
>
> I am aware of the work that Thiago Jung Bauermann @ IBM is doing for
> "Appended signatures support for IMA appraisal"
> (Web link given below)
>
> https://lkml.org/lkml/2018/12/12/1049

Other than Thiago, I'm not aware of anyone else working on this.
 Thiago is actively working on these patches and will be re-posting
them shortly.

Mimi


2019-03-25 21:01:54

by Lakshmi Ramasubramanian

[permalink] [raw]
Subject: RE: Portable Executable (PE) Signature Validation and Measurement for KEXEC system call using IMA

Thanks for your response Mimi.

Please see my responses to your queries inline.

Thanks,
-lakshmi

>-----Original Message-----
>From: Mimi Zohar <[email protected]>
>Sent: Monday, March 25, 2019 12:28 PM
>To: Lakshmi Ramasubramanian <[email protected]>; [email protected]; [email protected]
>Subject: Re: Portable Executable (PE) Signature Validation and Measurement for KEXEC system call using IMA

>Hi Lakshmi,

>On Fri, 2019-03-22 at 17:39 +0000, Lakshmi Ramasubramanian wrote:
>> Hello,
>>
>> When loading the new kernel image file for executing KEXEC system call,
>> we would like to verify that the kernel image file is signed and
>> the signer certificate is valid.
>>

> I'm not sure what is meant by "and the signer certificate is valid".

> The kexec kernel image signature can be verified by keys either on the
> IMA keyring or the platform keyring.  The current method of verifying
> keys being added to the IMA keyring is by requiring them to be signed
> by a key on the builtin trusted keyring.  This provides a signature
> chain of trust from boot to the kernel, based on a HW root of trust,
> and then transitions to the kernel image's embedded keys.  You
> probably already know as to why/how the platform keys are trusted.

[Lakshmi] By "signer certificate is valid" I meant, the key used to sign the kexec kernel image is trusted.
We will verify the signature using the key in the IMA keyring
(like the way you have described above)

>>
>> If the kernel image file is in Portable Executable (PE) format we want to
>> validate the PE Signature and measure the signer X.509 certificate
>> (Extend as part of IMA Template defaulting to PCR 10, if not otherwise set,
>> and the IMA measurement log).

> How/when do you plan to "measure the signer X.509 certificate"?  Is
> this when the certificate is being loaded onto the keyring or at use?
> I'm not sure how much of the certificate is available once loaded
> onto the keyring.

[Lakshmi] We will measure the signer certificate when the file is loaded - in other words, "at use".
The kernel image signer information measured in to the IMA log will then be used as one of the attestation criteria.

>>
>> We plan to use Integrity Measurement Architecture (IMA) for the above.
>>
>> Please let us know if anyone is already working on a patch set
>> for such a functionality.
>>
>> I am aware of the work that Thiago Jung Bauermann @ IBM is doing for
>> "Appended signatures support for IMA appraisal"
>> (Web link given below)
>>
>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flkml.org%2Flkml%2F2018%2F12%2F12%2F1049&amp;data=02%7C01%7Cnramas%40microsoft.com%7Cc36d42cb91214cc3ca1308d6b157f962%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636891388745548879&amp;sdata=OLtkuptXQYZHuvlVmn3ej%2FpEk501TxzToEcbOref0UU%3D&amp;reserved=0

> Other than Thiago, I'm not aware of anyone else working on this.
>  Thiago is actively working on these patches and will be re-posting
> them shortly.

[Lakshmi] Thanks for the information.

> Mimi

Thanks,
-lakshmi