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

Dmitry Kasatkin dmitry.kasatkin at gmail.com
Thu Nov 17 04:38:59 AEDT 2016


On Thu, Nov 10, 2016 at 4:56 PM, Mimi Zohar <zohar at linux.vnet.ibm.com> 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


More information about the Linuxppc-dev mailing list