On Mon, 2026-05-11 at 10:29 -0700, Lakshmi Ramasubramanian wrote:
> On 5/7/2026 9:47 AM, steven chen wrote:
> > > 
> > > Usage
> > > =====
> > > 
> > > The IMA staging mechanism can be enabled from the kernel configuration
> > > with the CONFIG_IMA_STAGING option.
> > > 
> > > If it is enabled, IMA duplicates the current measurements interfaces
> > > (both binary and ASCII), by adding the _staged file suffix. Both the
> > > original and the staging interfaces gain the write permission for the
> > > root user and group, but require the process to have CAP_SYS_ADMIN set.
> > > 
> > > The staging mechanism supports two flavors.
> > > 
> > > Staging with prompt
> > > ~~~~~~~~~~~~~~~~~~~
> > > 
> > > The current measurements list is moved to a temporary staging area, and
> > > staged measurements are deleted upon confirmation.
> > > 
> > > This staging process is achieved with the following steps.
> > > 
> > >    1.  echo A > <original interface>: the user requests IMA to stage the
> > >        entire measurements list;
> > >    2.  cat <_staged interface>: the user reads the staged measurements;
> > >    3.  echo D > <_staged interface>: the user requests IMA to delete
> > >        staged measurements.
> > > 
> > > Staging and deleting
> > > ~~~~~~~~~~~~~~~~~~~~
> > > 
> > > N measurements are staged to a temporary staging area, and immediately
> > > deleted without further confirmation.
> > > 
> > > This staging process is achieved with the following steps.
> > > 
> > >    1.  cat <original interface>: the user reads the current measurements
> > >        list and determines what the value N for staging should be;
> > >    2.  echo N > <original interface>: the user requests IMA to delete N
> > >        measurements from the current measurements list.
> > 
> > This submission proposes two ways for log trimming:
> > 
> > *Flavor 1:* Staging with prompt
> > *Flavor 2:* stage and delete N
> > 
> > Functionally, both approaches address the same problem, but *Favour 2 
> > *is the
> > stronger design and should be preferred. There is no good reason to keep 
> > *Flavor 1.*
> > 
> >  From a kernel implementation perspective, *Flavor 2 *is more efficient 
> > because it
> > minimizes the time spent holding the list lock (can’t be shorter). It 
> > also substantially
> > reduces the amount of kernel-side logic, removing nearly half of the 
> > code required
> > by the alternative approach.
> > 
> >  From a user-space perspective, *Flavor 2 *results in a much cleaner 
> > model. It avoids
> > the need to track and reconcile both old and staged lists in user space 
> > as well as
> > two lists (cur and staged) in the kernel space, which simplifies log 
> > trimming logic
> > and reduces maintenance overhead. In addition, it preserves the existing 
> > external
> > behavior by not exposing any staged list to user space.
> > 
> > Overall, *Flavor 2 *provides the same functional result with lower 
> > kernel complexity,
> > shorter kernel list lock hold time, and a simpler user-space interface. 
> > For those
> > reasons, it is the preferable approach and *Favour 1* does not appear to 
> > offer sufficient
> > justification to keep both implementations.
> > 
> > Steven
> 
> Roberto, Mimi:
> 
> I want to add on to the point Steven has brought up.
> 
> With "Stage and Delete N" approach, we have the following sequence of 
> tasks for trimming the IMA log:
> 
>       1. User mode locks the IMA measurement list through the "write 
> interface".
>               a. While this prevents any other user mode process from 
> updating the 
> IMA log, kernel can still add new IMA events to the measurement log
>       2. User mode reads the TPM Quote and the IMA measurement events and 
> sends it to the remote attestation service
>       3. Once the remote service has successfully processed the IMA events, 
> the user mode determines the number of IMA events "N" to be removed from 
> the measurement list maintained in the kernel
>       4. User mode provides the value "N" to the kernel
>       5. Kernel now determines the point at which to snap the IMA measurement 
> list using "N" - without holding a lock
>       6. Then, the kernel lock is held and the list is snapped at the point 
> determined in the previous step thus keeping the kernel lock time to the 
> minimum.
>       7. Now, user mode removes the "write" lock on the IMA measurement list
> 
> With the above, we believe "Stage and Delete N" alone is sufficient to 
> trim IMA log.

Hi Lakshmi

I'm happy to support your trimming method. Just does not fit with my
use case. I would like to keep both.

Thanks

Roberto

>   -lakshmi
> 
> > >   .../admin-guide/kernel-parameters.txt         |   4 +
> > >   Documentation/security/IMA-staging.rst        | 163 +++++++++
> > >   Documentation/security/index.rst              |   1 +
> > >   MAINTAINERS                                   |   2 +
> > >   security/integrity/ima/Kconfig                |  16 +
> > >   security/integrity/ima/ima.h                  |  32 +-
> > >   security/integrity/ima/ima_api.c              |   2 +-
> > >   security/integrity/ima/ima_fs.c               | 315 ++++++++++++++++--
> > >   security/integrity/ima/ima_init.c             |   5 +
> > >   security/integrity/ima/ima_kexec.c            |  53 ++-
> > >   security/integrity/ima/ima_queue.c            | 283 ++++++++++++++--
> > >   11 files changed, 803 insertions(+), 73 deletions(-)
> > >   create mode 100644 Documentation/security/IMA-staging.rst
> > > 


Reply via email to