[PATCH ima-evm-utils v2 0/9] Support testing with UML kernel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Roberto Sassu <roberto.sassu@xxxxxxxxxx>

UML kernels differ from other kernels for the ability of being executed as
processes in the current environment, without requirements such as
virtualization. It is sufficient to execute the binary, like the other
binaries.

In addition, UML kernels have the ability to see the host filesystem and
thus they could for example run an executable from the host as init and
have a fully working system without creating an image, as it would happen
if a regular virtual machine is used.

These features make UML kernels very suitable for integration in existing
test suites designed to perform the tests in the current environment such
as ima-evm-utils. In the current environment, test suites cannot test new
functionality not yet integrated in the host kernel, or with custom kernel
configuration options not usually enabled in production. Also, test suites
might not be able to set/reset kernel settings for security reasons.

With the ability to do kernel testing more in depth, ima-evm-utils might
introduce specific tests for that, separated from the tests to verify the
ima-evm-utils user space functionality. At the moment, there is no such
distinction, existing tests verify both.

The goal of this patch set is to overcome the limitations by making the
test suite in ima-evm-utils able to run in an environment created by the
UML kernel, with minimal changes. At the same time, it will preserve the
ability of the test suite to run in the current environment.

First, fix error messages and a variable in evmctl. Then, add the
config-uml file with custom kernel configuration options for the tests, to
be merged with the default configuration. Add a new job in the Github
workflow to build the UML kernel from a repository and branch specified in
the LINUX_URL and LINUX_BRANCH variables. Per Github documentation, these
variables can be defined at organization, repository and environment level.

Introduce a new API for using UML kernels for existing and new test
scripts. Unless the environment variable UML_MODE is set to 1, calling the
API results in a nop, and tests are executed in the current environment.

Add the possibility to select individual tests to run in a test script,
with the TST_LIST variable, so that the UML kernel can be launched multiple
times with a subset of tests (useful if for example a test require kernel
settings different from the previous test).

Add tests for EVM portable signatures supporting UML kernels and port
fsverity.test to use UML kernels.

Finally, don't require making changes to the system to run fsverity.test
and install a software dependency after the appropriate repository has been
set up.

Mimi Zohar (1):
  ci: haveged requires EPEL on CentOS stream:8

Roberto Sassu (8):
  Fix error messages and mdlen init in calc_evm_hmac()
  Add config for UML kernel
  Compile the UML kernel and download it in Github Actions
  Add support for UML in functions.sh
  Introduce TST_LIST variable to select a test to execute
  Add tests for EVM portable signatures
  Adapt fsverity.test to work with UML kernel
  Use in-place built fsverity binary instead of installing it

 .github/workflows/ci.yml        |   96 ++-
 build.sh                        |    5 +
 ci/fedora.sh                    |   12 +-
 config-uml                      |  235 +++++++
 src/evmctl.c                    |    8 +-
 tests/Makefile.am               |    2 +-
 tests/fsverity.test             |   18 +-
 tests/functions.sh              |   91 ++-
 tests/install-fsverity.sh       |    2 +-
 tests/install-mount-idmapped.sh |    7 +
 tests/portable_signatures.test  | 1173 +++++++++++++++++++++++++++++++
 11 files changed, 1637 insertions(+), 12 deletions(-)
 create mode 100644 config-uml
 create mode 100755 tests/install-mount-idmapped.sh
 create mode 100755 tests/portable_signatures.test

-- 
2.25.1




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux Kernel]     [Linux Kernel Hardening]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux