security/integrity: Harden against malformed xattrs
In general the handling of IMA/EVM xattrs is good, but I found a few locations where either the xattr size or the value of the type field in the xattr are not checked. Add a few simple checks to these locations to prevent malformed or malicious xattrs from causing problems. Signed-off-by: Seth Forshee <seth.forshee@canonical.com> Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Этот коммит содержится в:

коммит произвёл
Mimi Zohar

родитель
5465d02a49
Коммит
b4bfec7f4a
@@ -130,6 +130,7 @@ enum hash_algo ima_get_hash_algo(struct evm_ima_xattr_data *xattr_value,
|
||||
int xattr_len)
|
||||
{
|
||||
struct signature_v2_hdr *sig;
|
||||
enum hash_algo ret;
|
||||
|
||||
if (!xattr_value || xattr_len < 2)
|
||||
/* return default hash algo */
|
||||
@@ -143,7 +144,9 @@ enum hash_algo ima_get_hash_algo(struct evm_ima_xattr_data *xattr_value,
|
||||
return sig->hash_algo;
|
||||
break;
|
||||
case IMA_XATTR_DIGEST_NG:
|
||||
return xattr_value->digest[0];
|
||||
ret = xattr_value->digest[0];
|
||||
if (ret < HASH_ALGO__LAST)
|
||||
return ret;
|
||||
break;
|
||||
case IMA_XATTR_DIGEST:
|
||||
/* this is for backward compatibility */
|
||||
|
Ссылка в новой задаче
Block a user