1. 21 2月, 2016 4 次提交
    • M
      ima: measure and appraise the IMA policy itself · 19f8a847
      Mimi Zohar 提交于
      Add support for measuring and appraising the IMA policy itself.
      
      Changelog v4:
      - use braces on both if/else branches, even if single line on one of the
      branches - Dmitry
      - Use the id mapping - Dmitry
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      Acked-by: NPetko Manolov <petkan@mip-labs.com>
      Acked-by: NDmitry Kasatkin <dmitry.kasatkin@huawei.com>
      19f8a847
    • M
      ima: support for kexec image and initramfs · d9ddf077
      Mimi Zohar 提交于
      Add IMA policy support for measuring/appraising the kexec image and
      initramfs. Two new IMA policy identifiers KEXEC_KERNEL_CHECK and
      KEXEC_INITRAMFS_CHECK are defined.
      
      Example policy rules:
      measure func=KEXEC_KERNEL_CHECK
      appraise func=KEXEC_KERNEL_CHECK appraise_type=imasig
      measure func=KEXEC_INITRAMFS_CHECK
      appraise func=KEXEC_INITRAMFS_CHECK appraise_type=imasig
      
      Moving the enumeration to the vfs layer simplified the patches, allowing
      the IMA changes, for the most part, to be separated from the other
      changes.  Unfortunately, passing either a kernel_read_file_id or a
      ima_hooks enumeration within IMA is messy.
      
      Option 1: duplicate kernel_read_file enumeration in ima_hooks
      
      enum kernel_read_file_id {
      	...
              READING_KEXEC_IMAGE,
              READING_KEXEC_INITRAMFS,
              READING_MAX_ID
      
      enum ima_hooks {
      	...
      	KEXEC_KERNEL_CHECK
      	KEXEC_INITRAMFS_CHECK
      
      Option 2: define ima_hooks as extension of kernel_read_file
      eg: enum ima_hooks {
              FILE_CHECK = READING_MAX_ID,
              MMAP_CHECK,
      
      In order to pass both kernel_read_file_id and ima_hooks values, we
      would need to specify a struct containing a union.
      
      struct caller_id {
              union {
                      enum ima_hooks func_id;
                      enum kernel_read_file_id read_id;
              };
      };
      
      Option 3: incorportate the ima_hooks enumeration into kernel_read_file_id,
      perhaps changing the enumeration name.
      
      For now, duplicate the new READING_KEXEC_IMAGE/INITRAMFS in the ima_hooks.
      
      Changelog v4:
      - replaced switch statement with a kernel_read_file_id to an ima_hooks
      id mapping array - Dmitry
      - renamed ima_hook tokens KEXEC_CHECK and INITRAMFS_CHECK to
      KEXEC_KERNEL_CHECK and KEXEC_INITRAMFS_CHECK respectively - Dave Young
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      Acked-by: NPetko Manolov <petkan@mip-labs.com>
      Acked-by: NDmitry Kasatkin <dmitry.kasatkin@huawei.com>
      Cc: Dave Young <dyoung@redhat.com>
      d9ddf077
    • M
      ima: remove firmware and module specific cached status info · c6af8efe
      Mimi Zohar 提交于
      Each time a file is read by the kernel, the file should be re-measured and
      the file signature re-appraised, based on policy.  As there is no need to
      preserve the status information, this patch replaces the firmware and
      module specific cache status with a generic one named read_file.
      
      This change simplifies adding support for other files read by the kernel.
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      Acked-by: NPetko Manolov <petkan@mip-labs.com>
      Acked-by: NDmitry Kasatkin <dmitry.kasatkin@huawei.com>
      c6af8efe
    • M
      ima: define a new hook to measure and appraise a file already in memory · cf222217
      Mimi Zohar 提交于
      This patch defines a new IMA hook ima_post_read_file() for measuring
      and appraising files read by the kernel. The caller loads the file into
      memory before calling this function, which calculates the hash followed by
      the normal IMA policy based processing.
      
      Changelog v5:
      - fail ima_post_read_file() if either file or buf is NULL
      v3:
      - rename ima_hash_and_process_file() to ima_post_read_file()
      
      v1:
      - split patch
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      Acked-by: NDmitry Kasatkin <dmitry.kasatkin@huawei.com>
      cf222217
  2. 19 2月, 2016 2 次提交
  3. 09 2月, 2016 1 次提交
  4. 25 12月, 2015 1 次提交
    • S
      IMA: policy can be updated zero times · 0112721d
      Sasha Levin 提交于
      Commit "IMA: policy can now be updated multiple times" assumed that the
      policy would be updated at least once.
      
      If there are zero updates, the temporary list head object will get added
      to the policy list, and later dereferenced as an IMA policy object, which
      means that invalid memory will be accessed.
      
      Changelog:
      - Move list_empty() test to ima_release_policy(), before audit msg - Mimi
      Signed-off-by: NSasha Levin <sasha.levin@oracle.com>
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      0112721d
  5. 15 12月, 2015 3 次提交
  6. 16 6月, 2015 3 次提交
    • M
      ima: update builtin policies · 24fd03c8
      Mimi Zohar 提交于
      This patch defines a builtin measurement policy "tcb", similar to the
      existing "ima_tcb", but with additional rules to also measure files
      based on the effective uid and to measure files opened with the "read"
      mode bit set (eg. read, read-write).
      
      Changing the builtin "ima_tcb" policy could potentially break existing
      users.  Instead of defining a new separate boot command line option each
      time the builtin measurement policy is modified, this patch defines a
      single generic boot command line option "ima_policy=" to specify the
      builtin policy and deprecates the use of the builtin ima_tcb policy.
      
      [The "ima_policy=" boot command line option is based on Roberto Sassu's
      "ima: added new policy type exec" patch.]
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      Signed-off-by: NDr. Greg Wettstein <gw@idfusion.org>
      Cc: stable@vger.kernel.org
      24fd03c8
    • M
      ima: extend "mask" policy matching support · 4351c294
      Mimi Zohar 提交于
      The current "mask" policy option matches files opened as MAY_READ,
      MAY_WRITE, MAY_APPEND or MAY_EXEC.  This patch extends the "mask"
      option to match files opened containing one of these modes.  For
      example, "mask=^MAY_READ" would match files opened read-write.
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      Signed-off-by: NDr. Greg Wettstein <gw@idfusion.org>
      Cc: stable@vger.kernel.org
      4351c294
    • M
      ima: add support for new "euid" policy condition · 139069ef
      Mimi Zohar 提交于
      The new "euid" policy condition measures files with the specified
      effective uid (euid).  In addition, for CAP_SETUID files it measures
      files with the specified uid or suid.
      
      Changelog:
      - fixed checkpatch.pl warnings
      - fixed avc denied {setuid} messages - based on Roberto's feedback
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      Signed-off-by: NDr. Greg Wettstein <gw@idfusion.org>
      Cc: stable@vger.kernel.org
      139069ef
  7. 22 5月, 2015 2 次提交
  8. 13 5月, 2015 1 次提交
  9. 18 11月, 2014 1 次提交
    • D
      ima: require signature based appraisal · c57782c1
      Dmitry Kasatkin 提交于
      This patch provides CONFIG_IMA_APPRAISE_SIGNED_INIT kernel configuration
      option to force IMA appraisal using signatures. This is useful, when EVM
      key is not initialized yet and we want securely initialize integrity or
      any other functionality.
      
      It forces embedded policy to require signature. Signed initialization
      script can initialize EVM key, update the IMA policy and change further
      requirement of everything to be signed.
      
      Changes in v3:
      * kernel parameter fixed to configuration option in the patch description
      
      Changes in v2:
      * policy change of this patch separated from the key loading patch
      Signed-off-by: NDmitry Kasatkin <d.kasatkin@samsung.com>
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      c57782c1
  10. 12 10月, 2014 3 次提交
  11. 18 9月, 2014 1 次提交
    • R
      ima: added ima_policy_flag variable · a756024e
      Roberto Sassu 提交于
      This patch introduces the new variable 'ima_policy_flag', whose bits
      are set depending on the action of the current policy rules. Only the
      flags IMA_MEASURE, IMA_APPRAISE and IMA_AUDIT are set.
      
      The new variable will be used to improve performance by skipping the
      unnecessary execution of IMA code if the policy does not contain rules
      with the above actions.
      
      Changes in v6 (Roberto Sassu)
      * do not check 'ima_initialized' before calling ima_update_policy_flag()
        in ima_update_policy() (suggested by Dmitry)
      * calling ima_update_policy_flag() moved to init_ima to co-locate with
        ima_initialized (Dmitry)
      * add/revise comments (Mimi)
      
      Changes in v5 (Roberto Sassu)
      * reset IMA_APPRAISE flag in 'ima_policy_flag' if 'ima_appraise' is set
        to zero (reported by Dmitry)
      * update 'ima_policy_flag' only if IMA initialization is successful
        (suggested by Mimi and Dmitry)
      * check 'ima_policy_flag' instead of 'ima_initialized'
        (suggested by Mimi and Dmitry)
      Signed-off-by: NRoberto Sassu <roberto.sassu@polito.it>
      Signed-off-by: NDmitry Kasatkin <d.kasatkin@samsung.com>
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      a756024e
  12. 26 7月, 2014 1 次提交
  13. 17 7月, 2014 1 次提交
  14. 04 6月, 2014 1 次提交
    • M
      ima: audit log files opened with O_DIRECT flag · f9b2a735
      Mimi Zohar 提交于
      Files are measured or appraised based on the IMA policy.  When a
      file, in policy, is opened with the O_DIRECT flag, a deadlock
      occurs.
      
      The first attempt at resolving this lockdep temporarily removed the
      O_DIRECT flag and restored it, after calculating the hash.  The
      second attempt introduced the O_DIRECT_HAVELOCK flag. Based on this
      flag, do_blockdev_direct_IO() would skip taking the i_mutex a second
      time.  The third attempt, by Dmitry Kasatkin, resolves the i_mutex
      locking issue, by re-introducing the IMA mutex, but uncovered
      another problem.  Reading a file with O_DIRECT flag set, writes
      directly to userspace pages.  A second patch allocates a user-space
      like memory.  This works for all IMA hooks, except ima_file_free(),
      which is called on __fput() to recalculate the file hash.
      
      Until this last issue is addressed, do not 'collect' the
      measurement for measuring, appraising, or auditing files opened
      with the O_DIRECT flag set.  Based on policy, permit or deny file
      access.  This patch defines a new IMA policy rule option named
      'permit_directio'.  Policy rules could be defined, based on LSM
      or other criteria, to permit specific applications to open files
      with the O_DIRECT flag set.
      
      Changelog v1:
      - permit or deny file access based IMA policy rules
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      Acked-by: NDmitry Kasatkin <d.kasatkin@samsung.com>
      Cc: <stable@vger.kernel.org>
      f9b2a735
  15. 08 3月, 2014 3 次提交
  16. 06 2月, 2014 1 次提交
  17. 26 10月, 2013 1 次提交
  18. 26 2月, 2013 1 次提交
  19. 06 2月, 2013 1 次提交
    • D
      ima: add policy support for file system uuid · 85865c1f
      Dmitry Kasatkin 提交于
      The IMA policy permits specifying rules to enable or disable
      measurement/appraisal/audit based on the file system magic number.
      If, for example, the policy contains an ext4 measurement rule,
      the rule is enabled for all ext4 partitions.
      
      Sometimes it might be necessary to enable measurement/appraisal/audit
      only for one partition and disable it for another partition of the
      same type.  With the existing IMA policy syntax, this can not be done.
      
      This patch provides support for IMA policy rules to specify the file
      system by its UUID (eg. fsuuid=397449cd-687d-4145-8698-7fed4a3e0363).
      
      For partitions not being appraised, it might be a good idea to mount
      file systems with the 'noexec' option to prevent executing non-verified
      binaries.
      Signed-off-by: NDmitry Kasatkin <dmitry.kasatkin@intel.com>
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      85865c1f
  20. 23 1月, 2013 3 次提交
    • M
      ima: differentiate appraise status only for hook specific rules · 5a73fcfa
      Mimi Zohar 提交于
      Different hooks can require different methods for appraising a
      file's integrity.  As a result, an integrity appraisal status is
      cached on a per hook basis.
      
      Only a hook specific rule, requires the inode to be re-appraised.
      This patch eliminates unnecessary appraisals.
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      Signed-off-by: NDmitry Kasatkin <dmitry.kasatkin@intel.com>
      5a73fcfa
    • M
      ima: per hook cache integrity appraisal status · d79d72e0
      Mimi Zohar 提交于
      With the new IMA policy 'appraise_type=' option, different hooks
      can require different methods for appraising a file's integrity.
      
      For example, the existing 'ima_appraise_tcb' policy defines a
      generic rule, requiring all root files to be appraised, without
      specfying the appraisal method.  A more specific rule could require
      all kernel modules, for example, to be signed.
      
      appraise fowner=0 func=MODULE_CHECK appraise_type=imasig
      appraise fowner=0
      
      As a result, the integrity appraisal results for the same inode, but
      for different hooks, could differ.  This patch caches the integrity
      appraisal results on a per hook basis.
      
      Changelog v2:
      - Rename ima_cache_status() to ima_set_cache_status()
      - Rename and move get_appraise_status() to ima_get_cache_status()
      Changelog v0:
      - include IMA_APPRAISE/APPRAISED_SUBMASK in IMA_DO/DONE_MASK (Dmitry)
      - Support independent MODULE_CHECK appraise status.
      - fixed IMA_XXXX_APPRAISE/APPRAISED flags
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      Signed-off-by: NDmitry Kasatkin <dmitry.kasatkin@intel.com>
      d79d72e0
    • D
      ima: added policy support for 'security.ima' type · 0e5a247c
      Dmitry Kasatkin 提交于
      The 'security.ima' extended attribute may contain either the file data's
      hash or a digital signature.  This patch adds support for requiring a
      specific extended attribute type.  It extends the IMA policy with a new
      keyword 'appraise_type=imasig'.  (Default is hash.)
      
      Changelog v2:
      - Fixed Documentation/ABI/testing/ima_policy option syntax
      Changelog v1:
      - Differentiate between 'required' vs. 'actual' extended attribute
      Signed-off-by: NDmitry Kasatkin <dmitry.kasatkin@intel.com>
      Signed-off-by: NMimi Zohar <zohar@linux.vnet.ibm.com>
      0e5a247c
  21. 17 1月, 2013 2 次提交
  22. 24 12月, 2012 1 次提交
  23. 14 12月, 2012 1 次提交
    • M
      ima: support new kernel module syscall · fdf90729
      Mimi Zohar 提交于
      With the addition of the new kernel module syscall, which defines two
      arguments - a file descriptor to the kernel module and a pointer to a NULL
      terminated string of module arguments - it is now possible to measure and
      appraise kernel modules like any other file on the file system.
      
      This patch adds support to measure and appraise kernel modules in an
      extensible and consistent manner.
      
      To support filesystems without extended attribute support, additional
      patches could pass the signature as the first parameter.
      Signed-off-by: NMimi Zohar <zohar@us.ibm.com>
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      fdf90729
  24. 21 9月, 2012 1 次提交