Re: [PATCHC v7 00/10] ima: carry the measurement list across kexec

From: Dmitry Kasatkin
Date: Wed Nov 16 2016 - 12:39:07 EST


On Thu, Nov 10, 2016 at 4:56 PM, Mimi Zohar <zohar@xxxxxxxxxxxxxxxxxx> wrote:
> [Posting with abbreviated Cc list.]
>
> The TPM PCRs are only reset on a hard reboot. In order to validate a
> TPM's quote after a soft reboot (eg. kexec -e), the IMA measurement list
> of the running kernel must be saved and then restored on the subsequent
> boot, possibly of a different architecture.
>
> The existing securityfs binary_runtime_measurements file conveniently
> provides a serialized format of the IMA measurement list. This patch
> set serializes the measurement list in this format and restores it.
>
> Up to now, the binary_runtime_measurements was defined as architecture
> native format. The assumption being that userspace could and would
> handle any architecture conversions. With the ability of carrying the
> measurement list across kexec, possibly from one architecture to a
> different one, the per boot architecture information is lost and with it
> the ability of recalculating the template digest hash. To resolve this
> problem, without breaking the existing ABI, this patch set introduces
> the boot command line option "ima_canonical_fmt", which is arbitrarily
> defined as little endian.
>
> The need for this boot command line option will be limited to the
> existing version 1 format of the binary_runtime_measurements.
> Subsequent formats will be defined as canonical format (eg. TPM 2.0
> support for larger digests).
>
> A simplified method of Thiago Bauermann's "kexec buffer handover" patch
> series for carrying the IMA measurement list across kexec is included
> in this patch set. The simplified method requires all file measurements
> be taken prior to executing the kexec load, as subsequent measurements
> will not be carried across the kexec and restored.
>
> These patches can also be found in the next-kexec-restore branch of:
> git://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux-integrity.git
>
> Changelog v7:
> - Updated to reflect Dmitry Kasatkin's patch review
> - Rebased on top of "next-fixes" branch
>
> Andreas Steffen (1):
> ima: platform-independent hash value
>
> Mimi Zohar (7):
> ima: on soft reboot, restore the measurement list
> ima: permit duplicate measurement list entries
> ima: maintain memory size needed for serializing the measurement list
> ima: on soft reboot, save the measurement list
> ima: store the builtin/custom template definitions in a list
> ima: support restoring multiple template formats
> ima: define a canonical binary_runtime_measurements list format
>
> Thiago Jung Bauermann (2):
> powerpc: ima: Get the kexec buffer passed by the previous kernel
> powerpc: ima: Send the kexec buffer to the next kernel
>
> Documentation/kernel-parameters.txt | 4 +
> arch/Kconfig | 3 +
> arch/powerpc/Kconfig | 1 +
> arch/powerpc/include/asm/ima.h | 29 +++
> arch/powerpc/include/asm/kexec.h | 15 +-
> arch/powerpc/kernel/Makefile | 4 +
> arch/powerpc/kernel/ima_kexec.c | 223 +++++++++++++++++++++
> arch/powerpc/kernel/kexec_elf_64.c | 2 +-
> arch/powerpc/kernel/machine_kexec_file_64.c | 15 +-
> include/linux/ima.h | 12 ++
> kernel/kexec_file.c | 4 +
> security/integrity/ima/Kconfig | 12 ++
> security/integrity/ima/Makefile | 1 +
> security/integrity/ima/ima.h | 31 +++
> security/integrity/ima/ima_crypto.c | 6 +-
> security/integrity/ima/ima_fs.c | 30 ++-
> security/integrity/ima/ima_init.c | 2 +
> security/integrity/ima/ima_kexec.c | 168 ++++++++++++++++
> security/integrity/ima/ima_main.c | 1 +
> security/integrity/ima/ima_queue.c | 77 +++++++-
> security/integrity/ima/ima_template.c | 297 ++++++++++++++++++++++++++--
> security/integrity/ima/ima_template_lib.c | 7 +-
> 22 files changed, 906 insertions(+), 38 deletions(-)
> create mode 100644 arch/powerpc/include/asm/ima.h
> create mode 100644 arch/powerpc/kernel/ima_kexec.c
> create mode 100644 security/integrity/ima/ima_kexec.c
>
> --
> 2.1.0
>

Hi,

Looks good to me.

--
Thanks,
Dmitry