109 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| What:		/sys/kernel/security/evm
 | |
| What:		/sys/kernel/security/*/evm
 | |
| Date:		March 2011
 | |
| Contact:	Mimi Zohar <zohar@us.ibm.com>
 | |
| Description:
 | |
| 		EVM protects a file's security extended attributes(xattrs)
 | |
| 		against integrity attacks. The initial method maintains an
 | |
| 		HMAC-sha1 value across the extended attributes, storing the
 | |
| 		value as the extended attribute 'security.evm'.
 | |
| 
 | |
| 		EVM supports two classes of security.evm. The first is
 | |
| 		an HMAC-sha1 generated locally with a
 | |
| 		trusted/encrypted key stored in the Kernel Key
 | |
| 		Retention System. The second is a digital signature
 | |
| 		generated either locally or remotely using an
 | |
| 		asymmetric key. These keys are loaded onto root's
 | |
| 		keyring using keyctl, and EVM is then enabled by
 | |
| 		echoing a value to <securityfs>/evm made up of the
 | |
| 		following bits:
 | |
| 
 | |
| 		===	  ==================================================
 | |
| 		Bit	  Effect
 | |
| 		===	  ==================================================
 | |
| 		0	  Enable HMAC validation and creation
 | |
| 		1	  Enable digital signature validation
 | |
| 		2	  Permit modification of EVM-protected metadata at
 | |
| 			  runtime. Not supported if HMAC validation and
 | |
| 			  creation is enabled (deprecated).
 | |
| 		31	  Disable further runtime modification of EVM policy
 | |
| 		===	  ==================================================
 | |
| 
 | |
| 		For example::
 | |
| 
 | |
| 		  echo 1 ><securityfs>/evm
 | |
| 
 | |
| 		will enable HMAC validation and creation
 | |
| 
 | |
| 		::
 | |
| 
 | |
| 		  echo 0x80000003 ><securityfs>/evm
 | |
| 
 | |
| 		will enable HMAC and digital signature validation and
 | |
| 		HMAC creation and disable all further modification of policy.
 | |
| 
 | |
| 		::
 | |
| 
 | |
| 		  echo 0x80000006 ><securityfs>/evm
 | |
| 
 | |
| 		will enable digital signature validation, permit
 | |
| 		modification of EVM-protected metadata and
 | |
| 		disable all further modification of policy. This option is now
 | |
| 		deprecated in favor of::
 | |
| 
 | |
| 		  echo 0x80000002 ><securityfs>/evm
 | |
| 
 | |
| 		as the outstanding issues that prevent the usage of EVM portable
 | |
| 		signatures have been solved.
 | |
| 
 | |
| 		Echoing a value is additive, the new value is added to the
 | |
| 		existing initialization flags.
 | |
| 
 | |
| 		For example, after::
 | |
| 
 | |
| 		  echo 2 ><securityfs>/evm
 | |
| 
 | |
| 		another echo can be performed::
 | |
| 
 | |
| 		  echo 1 ><securityfs>/evm
 | |
| 
 | |
| 		and the resulting value will be 3.
 | |
| 
 | |
| 		Note that once an HMAC key has been loaded, it will no longer
 | |
| 		be possible to enable metadata modification. Signaling that an
 | |
| 		HMAC key has been loaded will clear the corresponding flag.
 | |
| 		For example, if the current value is 6 (2 and 4 set)::
 | |
| 
 | |
| 		  echo 1 ><securityfs>/evm
 | |
| 
 | |
| 		will set the new value to 3 (4 cleared).
 | |
| 
 | |
| 		Loading an HMAC key is the only way to disable metadata
 | |
| 		modification.
 | |
| 
 | |
| 		Until key loading has been signaled EVM can not create
 | |
| 		or validate the 'security.evm' xattr, but returns
 | |
| 		INTEGRITY_UNKNOWN.  Loading keys and signaling EVM
 | |
| 		should be done as early as possible.  Normally this is
 | |
| 		done in the initramfs, which has already been measured
 | |
| 		as part of the trusted boot.  For more information on
 | |
| 		creating and loading existing trusted/encrypted keys,
 | |
| 		refer to:
 | |
| 		Documentation/security/keys/trusted-encrypted.rst. Both
 | |
| 		dracut (via 97masterkey and 98integrity) and systemd (via
 | |
| 		core/ima-setup) have support for loading keys at boot
 | |
| 		time.
 | |
| 
 | |
| What:		/sys/kernel/security/*/evm/evm_xattrs
 | |
| Date:		April 2018
 | |
| Contact:	Matthew Garrett <mjg59@google.com>
 | |
| Description:
 | |
| 		Shows the set of extended attributes used to calculate or
 | |
| 		validate the EVM signature, and allows additional attributes
 | |
| 		to be added at runtime. Any signatures generated after
 | |
| 		additional attributes are added (and on files possessing those
 | |
| 		additional attributes) will only be valid if the same
 | |
| 		additional attributes are configured on system boot. Writing
 | |
| 		a single period (.) will lock the xattr list from any further
 | |
| 		modification.
 |