Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2833855pxv; Mon, 12 Jul 2021 03:05:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzjPr25TyYRpCwfuYkyB47sJtnJyzWiKmH1y/32XxDEune3olPoaOhyrz2kccXsbrAwWV6y X-Received: by 2002:a05:6602:1c4:: with SMTP id w4mr38141182iot.44.1626084338004; Mon, 12 Jul 2021 03:05:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626084337; cv=none; d=google.com; s=arc-20160816; b=p8ki4+fHiYaqMJvo87A0OflF2aRyh39HojrHazTg5nhlHNatZ9hOauM+rdTQr3bhU3 menKlU1zZ40562QqTM4TdNYIu4UZVSatH/tHEp03bufgbbmf5nCNrwjO9oBowd8uS3PM 3zYkYggAI2NnkB211v+VV4wHnhOZTXp7j+GI8gEgOkYFlqpqaaJR5mhXIyuEiaU6ilGw +r8ZVJ05bF8aiPIDQj+BeX4zsNMOAap+abnFOYeCAd/oo3FX5FbazjIN0q/LautgZwZH S0WDy48OTZhhIXh4RMudXGFLyAkKrhnTLkh5JoLvz1CoAgBLbHNjarRZOoPPghorlplc kFYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=lOpuIbUrmBDxV9E2D2X0oqNBUAAXESMV/CNiv4c1M1M=; b=bXkQXOpA+SUikxxGc1aOoBoDRWnFLptWKJalw/D5UUMzPCLNm/26aNy519bxDssh7P vmyQndDHi+WH+yLVKs1AE3/MmyCALjC2aAJb94l8uEss7Vyl7+bRhERxGoGw7y5BYHwj Jeyx21Kg9Jd/9YIIjs+ViTaXHR0dOTGDHWnAj6e+bXPPNqjtPcyzSt25FkQoHWLPVY6x D9WGWH1I3ZG7cBGfXwwinSqwd3Bh0+tZmUfc9c0fqvMf413L83idtx5fkBe1v0vFIRcJ 3l4ezGXXIN8DrtSuWO+KUsIiTjWO7194/KhpQN+UsL7udznV02MkyYThTNGScOLK5Xlv K/Ew== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=TX66cKIP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s18si13301709jao.15.2021.07.12.03.05.26; Mon, 12 Jul 2021 03:05:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=TX66cKIP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244105AbhGLH0l (ORCPT + 99 others); Mon, 12 Jul 2021 03:26:41 -0400 Received: from mail.kernel.org ([198.145.29.99]:34792 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242680AbhGLHAW (ORCPT ); Mon, 12 Jul 2021 03:00:22 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 13F6761156; Mon, 12 Jul 2021 06:57:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626073053; bh=qS50egKAp8vEr3qpIuMYt0weiZiMDCcr9XlfK1nfdTI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TX66cKIPLv6zab7tfveSGefynVmbnXl68PE6kePuAT0CqCb1V+FgeHwmGgcaY3Wcy Sf2hc/+91Grc2g1cLv4smLVhP1y2+0WQV/7GJpj6CtRHUeniXZH5MKK6NcuO92bFIl KW+/CG9hJPLw9NszIG345OzCXTEYYYlRBhqEqiec= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Roberto Sassu , Mimi Zohar Subject: [PATCH 5.12 110/700] evm: Execute evm_inode_init_security() only when an HMAC key is loaded Date: Mon, 12 Jul 2021 08:03:13 +0200 Message-Id: <20210712060940.336064840@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060924.797321836@linuxfoundation.org> References: <20210712060924.797321836@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Roberto Sassu commit 9eea2904292c2d8fa98df141d3bf7c41ec9dc1b5 upstream. evm_inode_init_security() requires an HMAC key to calculate the HMAC on initial xattrs provided by LSMs. However, it checks generically whether a key has been loaded, including also public keys, which is not correct as public keys are not suitable to calculate the HMAC. Originally, support for signature verification was introduced to verify a possibly immutable initial ram disk, when no new files are created, and to switch to HMAC for the root filesystem. By that time, an HMAC key should have been loaded and usable to calculate HMACs for new files. More recently support for requiring an HMAC key was removed from the kernel, so that signature verification can be used alone. Since this is a legitimate use case, evm_inode_init_security() should not return an error when no HMAC key has been loaded. This patch fixes this problem by replacing the evm_key_loaded() check with a check of the EVM_INIT_HMAC flag in evm_initialized. Fixes: 26ddabfe96b ("evm: enable EVM when X509 certificate is loaded") Signed-off-by: Roberto Sassu Cc: stable@vger.kernel.org # 4.5.x Signed-off-by: Mimi Zohar Signed-off-by: Greg Kroah-Hartman --- security/integrity/evm/evm_main.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) --- a/security/integrity/evm/evm_main.c +++ b/security/integrity/evm/evm_main.c @@ -521,7 +521,7 @@ void evm_inode_post_setattr(struct dentr } /* - * evm_inode_init_security - initializes security.evm + * evm_inode_init_security - initializes security.evm HMAC value */ int evm_inode_init_security(struct inode *inode, const struct xattr *lsm_xattr, @@ -530,7 +530,8 @@ int evm_inode_init_security(struct inode struct evm_xattr *xattr_data; int rc; - if (!evm_key_loaded() || !evm_protected_xattr(lsm_xattr->name)) + if (!(evm_initialized & EVM_INIT_HMAC) || + !evm_protected_xattr(lsm_xattr->name)) return 0; xattr_data = kzalloc(sizeof(*xattr_data), GFP_NOFS);