Received: by 2002:ab2:788f:0:b0:1ee:8f2e:70ae with SMTP id b15csp230294lqi; Wed, 6 Mar 2024 15:41:11 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCUCIZWS3jWIB2UAu8Wd6ymlZ4Ofh1hW9V477cK8bWU47escyYl7EqGb043Lbq1iJbLb7jXG4cpg/WUxA/t7Cq6Sf1RWaSAGvEtnSCClGQ== X-Google-Smtp-Source: AGHT+IG7zUUffuJDJYiUwfXJpjuZFSoZ9Pflgf56Q34HEVrhB6SjoZVjrr711VQsWCPbxs3VSA6Q X-Received: by 2002:a05:6830:10c2:b0:6e5:391:e76e with SMTP id z2-20020a05683010c200b006e50391e76emr2393469oto.18.1709768471514; Wed, 06 Mar 2024 15:41:11 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709768471; cv=pass; d=google.com; s=arc-20160816; b=JK+P/XdEns5+4qdnMdwZejSiallZ+kM/2D8xll5dj2cILufGnVAmMxIkKmQBd1LKhb t9Y655X5UOphvHWmY054j4bfeRskJe/lIrJlPAZBV0jyndCnsAaBYtlCUBu8vSCLybOa pnn9CEDzsEw4qUXQmLyTgH3LW1f9+s6O+NWu31qUrIQZl6Uwe28TAHDf0DCNfUB7vKPi BPAnEryrcspXQwKYL6hhPB3iFuUbkt6J1DRgqNbSIzIbbEode26HZgyaeIn35b50Gxf1 YhaWMQbw3s0FuXruEm5y+Sit3RG7gOlEFSTfNtmYaROxoMCx2dUHc3DXT2ziqQXv9/PB qqpg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-id:precedence:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature :dkim-filter; bh=vGLfT6QYN/cpclyLFsjJynIUa6xGDoXeixbbbyzhDVE=; fh=OyVWwaN4k6amVBbLsUrv/LtzT4uXeXlIwg6oMI9yoyM=; b=ZXw17532rnp5I7aMO2k/MVcBSbag6PRhLWifi3CbzrBiceFk2mc1aduhjOQji6KTFN 6pslolwRHxtwCrg3414sX1z+0JiUWAbGV6zJG7NCpYoT9VP04r69JSzxpcUWPIhWnlSm Ez/3mesLbM/IKQRK/g4zRLLZT9h8Rc8kwVXWGu1f73KTbSxC8EBaoa7IZ5Mcre5gBp4W QrKFOoaX11jxAgkyAIA184qzoFNEZ4/DtqcJj0AoqXu54iL4Xd77jeRkl6uBP9nae5RN XkFsLlC3L4hwxaWaSIn8dXCjFdIeJheS1M2qJzrmz4vf5cebmnrN9IzuwbM0HPFb5IKo df4A==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=jl4o6WFQ; arc=pass (i=1 spf=pass spfdomain=linux.microsoft.com dkim=pass dkdomain=linux.microsoft.com dmarc=pass fromdomain=linux.microsoft.com); spf=pass (google.com: domain of linux-kernel+bounces-94722-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-94722-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.microsoft.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id k185-20020a636fc2000000b005dc504b30ecsi12639550pgc.108.2024.03.06.15.41.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Mar 2024 15:41:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-94722-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=jl4o6WFQ; arc=pass (i=1 spf=pass spfdomain=linux.microsoft.com dkim=pass dkdomain=linux.microsoft.com dmarc=pass fromdomain=linux.microsoft.com); spf=pass (google.com: domain of linux-kernel+bounces-94722-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-94722-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.microsoft.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id B7121B23926 for ; Wed, 6 Mar 2024 23:38:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0EEF0140E47; Wed, 6 Mar 2024 23:35:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="jl4o6WFQ" Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 66E4A1CABF; Wed, 6 Mar 2024 23:34:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709768096; cv=none; b=NGtDMlj46xbbT6604QDgSkesYn/ty6bgnevRsscjHwics6CkQPr5Tse2aPdttjbXBCVbRAtuXkfA5B4chWJ1xcpDYmqoc95llAiVyjEZktcqnolEhkJu41/QlRWc+FCBpNJdEiXSZxk03JEnEP9d7QarQx3re4JfQu/tvGivJSo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709768096; c=relaxed/simple; bh=L25Oy6FnDnOXDI+S90VkDgc9hM+j0sW2Jeamc5OQnVc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=AAwF5UOAdR0ICm46HWCtPW4k9aN+8jQF0kaE4LlPvzQNqoL/QQhOFdo+pIWWSplmWg8HJHNyOQsJmqSuJltIYvjOcoLqdUlqqDYx5f7FOnMQOUVcFncs7wBvMB1B2oHKb0z1PN3/uIMNgTid0hTkmVRLhsx580dO0MNcT2mM+uc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=jl4o6WFQ; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Received: by linux.microsoft.com (Postfix, from userid 1052) id 36DF920B74C9; Wed, 6 Mar 2024 15:34:52 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 36DF920B74C9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1709768092; bh=vGLfT6QYN/cpclyLFsjJynIUa6xGDoXeixbbbyzhDVE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jl4o6WFQtfPGwqItIGSIPifBUzkx43krp6X9PJGun5dWClgxJn31rMgeaOD8j4r6v WcurnMGCjWnE3xTGoIUl92A7tWxgdDA/DK+T6MlC3T3Y3qvswDpsCHp26ES6Dahe/r ACU/ia2WjZI8qriS8CCjFqAnecw0Zw1FzZzzAYyc= From: Fan Wu To: corbet@lwn.net, zohar@linux.ibm.com, jmorris@namei.org, serge@hallyn.com, tytso@mit.edu, ebiggers@kernel.org, axboe@kernel.dk, agk@redhat.com, snitzer@kernel.org, eparis@redhat.com, paul@paul-moore.com Cc: linux-doc@vger.kernel.org, linux-integrity@vger.kernel.org, linux-security-module@vger.kernel.org, linux-fscrypt@vger.kernel.org, linux-block@vger.kernel.org, dm-devel@lists.linux.dev, audit@vger.kernel.org, linux-kernel@vger.kernel.org, Fan Wu Subject: [RFC PATCH v14 05/19] initramfs|security: Add a security hook to do_populate_rootfs() Date: Wed, 6 Mar 2024 15:34:30 -0800 Message-Id: <1709768084-22539-6-git-send-email-wufan@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1709768084-22539-1-git-send-email-wufan@linux.microsoft.com> References: <1709768084-22539-1-git-send-email-wufan@linux.microsoft.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: This patch introduces a new hook to notify security system that the content of initramfs has been unpacked into the rootfs. Upon receiving this notification, the security system can activate a policy to allow only files that originated from the initramfs to execute or load into kernel during the early stages of booting. This approach is crucial for minimizing the attack surface by ensuring that only trusted files from the initramfs are operational in the critical boot phase. Signed-off-by: Fan Wu --- v1-v11: + Not present v12: + Introduced v13: + Rename the hook name to initramfs_populated() v14: + No changes --- include/linux/lsm_hook_defs.h | 2 ++ include/linux/security.h | 8 ++++++++ init/initramfs.c | 3 +++ security/security.c | 10 ++++++++++ 4 files changed, 23 insertions(+) diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h index 76458b6d53da..e0f50789a18f 100644 --- a/include/linux/lsm_hook_defs.h +++ b/include/linux/lsm_hook_defs.h @@ -425,3 +425,5 @@ LSM_HOOK(int, 0, uring_override_creds, const struct cred *new) LSM_HOOK(int, 0, uring_sqpoll, void) LSM_HOOK(int, 0, uring_cmd, struct io_uring_cmd *ioucmd) #endif /* CONFIG_IO_URING */ + +LSM_HOOK(void, LSM_RET_VOID, initramfs_populated, void) diff --git a/include/linux/security.h b/include/linux/security.h index d0eb20f90b26..619e17e59532 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -2167,4 +2167,12 @@ static inline int security_uring_cmd(struct io_uring_cmd *ioucmd) #endif /* CONFIG_SECURITY */ #endif /* CONFIG_IO_URING */ +#ifdef CONFIG_SECURITY +extern void security_initramfs_populated(void); +#else +static inline void security_initramfs_populated(void) +{ +} +#endif /* CONFIG_SECURITY */ + #endif /* ! __LINUX_SECURITY_H */ diff --git a/init/initramfs.c b/init/initramfs.c index 76deb48c38cb..140619a583ff 100644 --- a/init/initramfs.c +++ b/init/initramfs.c @@ -18,6 +18,7 @@ #include #include #include +#include static __initdata bool csum_present; static __initdata u32 io_csum; @@ -720,6 +721,8 @@ static void __init do_populate_rootfs(void *unused, async_cookie_t cookie) #endif } + security_initramfs_populated(); + done: /* * If the initrd region is overlapped with crashkernel reserved region, diff --git a/security/security.c b/security/security.c index f168bc30a60d..26c28db211fd 100644 --- a/security/security.c +++ b/security/security.c @@ -5619,3 +5619,13 @@ int security_uring_cmd(struct io_uring_cmd *ioucmd) return call_int_hook(uring_cmd, 0, ioucmd); } #endif /* CONFIG_IO_URING */ + +/** + * security_initramfs_populated() - Notify LSMs that initramfs has been loaded + * + * Tells the LSMs the initramfs has been unpacked into the rootfs. + */ +void security_initramfs_populated(void) +{ + call_void_hook(initramfs_populated); +} -- 2.43.1