• Raphael Gianotti's avatar
    IMA: Measure kernel version in early boot · b3f82afc
    Raphael Gianotti authored
    The integrity of a kernel can be verified by the boot loader on cold
    boot, and during kexec, by the current running kernel, before it is
    loaded. However, it is still possible that the new kernel being
    loaded is older than the current kernel, and/or has known
    vulnerabilities. Therefore, it is imperative that an attestation
    service be able to verify the version of the kernel being loaded on
    the client, from cold boot and subsequent kexec system calls,
    ensuring that only kernels with versions known to be good are loaded.
    
    Measure the kernel version using ima_measure_critical_data() early on
    in the boot sequence, reducing the chances of known kernel
    vulnerabilities being exploited. With IMA being part of the kernel,
    this overall approach makes the measurement itself more trustworthy.
    
    To enable measuring the kernel version "ima_policy=critical_data"
    needs to be added to the kernel command line arguments.
    For example,
            BOOT_IMAGE=/boot/vmlinuz-5.11.0-rc3+ root=UUID=fd643309-a5d2-4ed3-b10d-3c579a5fab2f ro nomodeset ima_policy=critical_data
    
    If runtime measurement of the kernel version is ever needed, the
    following should be added to /etc/ima/ima-policy:
    
            measure func=CRITICAL_DATA label=kernel_info
    
    To extract the measured data after boot, the following command can be used:
    
            grep -m 1 "kernel_version" \
            /sys/kernel/security/integrity/ima/ascii_runtime_measurements
    
    Sample output from the command above:
    
            10 a8297d408e9d5155728b619761d0dd4cedf5ef5f ima-buf
            sha256:5660e19945be0119bc19cbbf8d9c33a09935ab5d30dad48aa11f879c67d70988
            kernel_version 352e31312e302d7263332d31363138372d676564623634666537383234342d6469727479
    
    The above hex-ascii string corresponds to the kernel version
    (e.g. xxd -r -p):
    
            5.11.0-rc3-16187-gedb64fe78244-dirty
    Signed-off-by: default avatarRaphael Gianotti <raphgi@linux.microsoft.com>
    Signed-off-by: default avatarMimi Zohar <zohar@linux.ibm.com>
    b3f82afc
ima_policy 4.44 KB