Hi Prakhar,The IMA logs are event logs for module load time signature validation(based on policies) which are backed by the TPM. No SecureBoot information is present in the log other than the boot aggregate.
(You've CC'd a few folk who work for 'arm.org'...)
On 11/10/2019 01:35, Prakhar Srivastava wrote:
Add support to carry ima measurement log
to the next kexec'ed session triggered via kexec_file_load.
I don't know much about 'ima', I'm assuming its the list of 'stuff' that has already been
fed into the TPM as part of SecureBoot. Please forgive the stupid questions,
This change is only intended to be executed in the path of kexec_file_load and not intended to be executed by any boot loader.(Not very aware of boot loader calls.). The logs are non intended to be injected by the boot loader at all.Currently during kexec the kernel file signatures are/can be validated
prior to actual load, the information(PE/ima signature) is not carried
to the next session. This lead to loss of information.
Carrying forward the ima measurement log to the next kexec'ed session
allows a verifying party to get the entire runtime event log since the
last full reboot, since that is when PCRs were last reset.
Hmm, You're adding this as a linux-specific thing in the chosen node, which points at a
memreserve.
The question that normally needs answering when adding to the stuff we have to treat as
ABI over kexec is: how would this work from a bootloader that isn't kexec? Does it need to
work for non-linux OS?
Changing anything other than the chosen node of the DT isn't something the kernel shouldfdt_delete_mem_rsv - is to cleanup any memory that's been mistakenly still lying around in the same session while creating the fdt. memblock_free is actually used to free up the reserved memory.
be doing. I suspect if you need reserved memory for this stuff, it should be carved out by
the bootloader, and like all other memreserves: should not be moved or deleted.
('fdt_delete_mem_rsv()' is a terrifying idea, we depend on the memreserve nodes to tell
use which 'memory' we shouldn't touch!)
Sharing with powerpc is a great starting point ... but, how does this work for ACPI systems?
How does this work if I keep kexecing between ACPI and DT?
I'd prefer it we only had one way this works on arm64, so whatever we do has to cover both.I can move the code to be only part of arm64 arch if absolutely necessary. Thiago do you have any concerns on going back the path of multiple code paths?
Yes, IMA, the measurement is not dependent on any hardware capabilities.
Does ima work without UEFI secure-boot?
If not, the Linux-specific UEFI 'memreserve' table might be a better fit, this would beIMA does not interact with the TPM event log.
the same for both DT and ACPI systems. Given U-boot supports the UEFI API too, its
probably the right thing to do regardless of secure-boot.
It looks like x86 doesn't support this either yet. If we have to add something to support
ACPI, it would be good if it covers both firmware mechanisms for arm64, and works for x86
in the same way.
(How does this thing interact with EFI's existing efi_tpm_eventlog_init()?)
Thanks,
James