From: Mimi Zohar <zohar@linux.ibm.com>
To: Tushar Sugandhi <tusharsu@linux.microsoft.com>,
roberto.sassu@huaweicloud.com, roberto.sassu@huawei.com,
eric.snowberg@oracle.com, stefanb@linux.ibm.com,
ebiederm@xmission.com, noodles@fb.com, bauermann@kolabnow.com,
linux-integrity@vger.kernel.org, kexec@lists.infradead.org
Cc: code@tyhicks.com, nramas@linux.microsoft.com, paul@paul-moore.com
Subject: Re: [PATCH v5 0/8] ima: kexec: measure events between kexec load and execute
Date: Tue, 20 Feb 2024 19:15:35 -0500 [thread overview]
Message-ID: <e4c7084d434d1d6176e38b705c26f604c9513dc4.camel@linux.ibm.com> (raw)
In-Reply-To: <20240214153827.1087657-1-tusharsu@linux.microsoft.com>
On Wed, 2024-02-14 at 07:38 -0800, Tushar Sugandhi wrote:
> The current Kernel behavior is IMA measurements snapshot is taken at
> kexec 'load' and not at kexec 'execute'. IMA log is then carried
> over to the new Kernel after kexec 'execute'.
'Kernel' should not be capitalized since it isn't a proper name. 'Linux' would
be capitalized (e.g. The Linux kernel).
-> "The IMA measurement list is copied at kexec 'load', not kexec 'execute',
before being carried over to the new kexec'ed kernel.
Mimi
>
> New events can be measured during/after the IMA log snapshot at kexec
> 'load' and before the system boots to the new Kernel. In this scenario,
> the TPM PCRs are extended with these events, but they are not carried
> over to the new Kernel after kexec soft reboot since the snapshot is
> already taken. This results in mismatch between TPM PCR quotes and the
> actual IMA measurements list after kexec soft reboot, which in turn
> results in remote attestation failure.
>
> To solve this problem -
> - allocate the necessary buffer at kexec 'load' time,
> - populate the buffer with the IMA measurements at kexec 'execute' time,
> - and measure two new IMA events 'kexec_load' and 'kexec_execute' as
> critical data to help detect missing events after kexec soft reboot.
>
> The solution details include:
> - refactoring the existing code to allocate a buffer to hold IMA
> measurements at kexec 'load', and dump the measurements at kexec
> 'execute'
>
> - IMA functionality to suspend and resume measurements as needed during
> buffer copy at kexec 'execute',
>
> - kexec functionality for mapping the segments from the current Kernel
> to the subsequent one,
>
> - necessary changes to the kexec_file_load syscall, enabling it to call
> the ima functions,
>
> - registering a reboot notifier which gets called during kexec
> 'execute',
>
> - introducing a new Kconfig option to configure the extra memory to be
> allocated for passing IMA log from the current Kernel to the next,
>
> - introducing two new events to be measured by IMA during kexec, to
> help diagnose if the IMA log was copied fully or partially, from the
> current Kernel to the next,
>
> - excluding IMA segment while calculating and storing digest in function
> kexec_calculate_store_digests(), since IMA segment can be modified
> after the digest is computed during kexec 'load'. This will ensure
> that the segment is not added to the 'purgatory_sha_regions', and thus
> not verified by verify_sha256_digest().
>
> The changes proposed in this series ensure the integrity of the IMA
> measurements is preserved across kexec soft reboots, thus significantly
> improving the security of the Kernel post kexec soft reboots.
>
> There were previous attempts to fix this issue [1], [2], [3]. But they
> were not merged into the mainline Kernel.
>
> We took inspiration from the past work [1] and [2] while working on this
> patch series.
>
> V4 of this series is available here[6] for reference.
>
prev parent reply other threads:[~2024-02-21 0:16 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-14 15:38 [PATCH v5 0/8] ima: kexec: measure events between kexec load and execute Tushar Sugandhi
2024-02-14 15:38 ` [PATCH v5 1/8] ima: define and call ima_alloc_kexec_file_buf Tushar Sugandhi
2024-02-19 22:16 ` Stefan Berger
2024-02-21 0:12 ` Mimi Zohar
2024-02-14 15:38 ` [PATCH v5 2/8] kexec: define functions to map and unmap segments Tushar Sugandhi
2024-02-14 19:43 ` Stefan Berger
2024-02-15 6:13 ` Tushar Sugandhi
2024-02-21 20:22 ` Mimi Zohar
2024-02-14 15:38 ` [PATCH v5 3/8] ima: kexec: skip IMA segment validation after kexec soft reboot Tushar Sugandhi
2024-02-14 15:38 ` [PATCH v5 4/8] ima: kexec: define functions to copy IMA log at soft boot Tushar Sugandhi
2024-02-14 20:47 ` Stefan Berger
2024-02-15 6:55 ` Tushar Sugandhi
2024-02-21 21:52 ` Mimi Zohar
2024-02-21 22:39 ` Mimi Zohar
2024-03-01 11:12 ` Petr Tesařík
2024-02-14 15:38 ` [PATCH v5 5/8] ima: kexec: move IMA log copy from kexec load to execute Tushar Sugandhi
2024-02-14 20:58 ` Stefan Berger
2024-02-22 1:47 ` Mimi Zohar
2024-05-09 6:32 ` Petr Tesařík
2024-02-14 15:38 ` [PATCH v5 6/8] ima: suspend measurements during buffer copy at kexec execute Tushar Sugandhi
2024-02-22 14:14 ` Mimi Zohar
2024-02-22 16:38 ` Mimi Zohar
2024-02-29 13:21 ` Petr Tesařík
2024-02-14 15:38 ` [PATCH v5 7/8] ima: make the kexec extra memory configurable Tushar Sugandhi
2024-02-22 14:13 ` Mimi Zohar
2024-02-14 15:38 ` [PATCH v5 8/8] ima: measure kexec load and exec events as critical data Tushar Sugandhi
2024-02-14 21:00 ` Stefan Berger
2024-02-15 6:57 ` Tushar Sugandhi
2024-02-14 21:03 ` Stefan Berger
2024-02-15 6:58 ` Tushar Sugandhi
2024-02-21 0:15 ` Mimi Zohar [this message]
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=e4c7084d434d1d6176e38b705c26f604c9513dc4.camel@linux.ibm.com \
--to=zohar@linux.ibm.com \
--cc=bauermann@kolabnow.com \
--cc=code@tyhicks.com \
--cc=ebiederm@xmission.com \
--cc=eric.snowberg@oracle.com \
--cc=kexec@lists.infradead.org \
--cc=linux-integrity@vger.kernel.org \
--cc=noodles@fb.com \
--cc=nramas@linux.microsoft.com \
--cc=paul@paul-moore.com \
--cc=roberto.sassu@huawei.com \
--cc=roberto.sassu@huaweicloud.com \
--cc=stefanb@linux.ibm.com \
--cc=tusharsu@linux.microsoft.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;
as well as URLs for NNTP newsgroup(s).