• Roberto Sassu's avatar
    ima: Align ima_file_mmap() parameters with mmap_file LSM hook · 4971c268
    Roberto Sassu authored
    Commit 98de59bf ("take calculation of final prot in
    security_mmap_file() into a helper") moved the code to update prot, to be
    the actual protections applied to the kernel, to a new helper called
    mmap_prot().
    
    However, while without the helper ima_file_mmap() was getting the updated
    prot, with the helper ima_file_mmap() gets the original prot, which
    contains the protections requested by the application.
    
    A possible consequence of this change is that, if an application calls
    mmap() with only PROT_READ, and the kernel applies PROT_EXEC in addition,
    that application would have access to executable memory without having this
    event recorded in the IMA measurement list. This situation would occur for
    example if the application, before mmap(), calls the personality() system
    call with READ_IMPLIES_EXEC as the first argument.
    
    Align ima_file_mmap() parameters with those of the mmap_file LSM hook, so
    that IMA can receive both the requested prot and the final prot. Since the
    requested protections are stored in a new variable, and the final
    protections are stored in the existing variable, this effectively restores
    the original behavior of the MMAP_CHECK hook.
    
    Cc: stable@vger.kernel.org
    Fixes: 98de59bf ("take calculation of final prot in security_mmap_file() into a helper")
    Signed-off-by: default avatarRoberto Sassu <roberto.sassu@huawei.com>
    Reviewed-by: default avatarStefan Berger <stefanb@linux.ibm.com>
    Signed-off-by: default avatarMimi Zohar <zohar@linux.ibm.com>
    4971c268
ima_main.c 30.9 KB