From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com [40.92.40.26]) by mx.groups.io with SMTP id smtpd.web11.3065.1586543812976088889 for ; Fri, 10 Apr 2020 11:36:53 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@outlook.com header.s=selector1 header.b=XQp5h4Nw; spf=pass (domain: outlook.com, ip: 40.92.40.26, mailfrom: michael.kubacki@outlook.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fOHVTYnoW1X6qSveq0TSpJcTiqMjYS/Dspe0RVlhbakKMGGefPBb0PImYiGIasWq4HJ5qeMIVOo94UKC1pSqNIVznGNp0bBFP1Thl5vyRa+eGkV1tR99FbBTMDPasLQIkVm0eI24yjqE2OI2zXoHuaMZ8hL551jhRliBLJE4548NF7zb+AlpgyOhgXSlB8AIXSJGSjEYVD/YKVa7uG/Fpj6SgjK4MTsQ1OSvkyuZIwoQq6zCdOgrdKa6eBt4gP8mLMCwZqifFoXtCO90/Iuf14LlpHXuMwKN6nlg1Gb18gZYMO1r6dvsNr26uAbXq7BksiCkCbSC4WqM/yGiC1hZCw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DMkSbni/6Jt9VVdn58DcoRYPQrdyblJgi+smdAdBxII=; b=WBA9YuWZaRzty5D3UOPy4BiD7DlU1Is4o4d6YfpURZkqwdncjxOhTJUNvn9qVPKhC2SBtQkXjVNmYWAgOYCDtqUf3cMcvyhk1o9zxEKPFrMMjiFh4dVc4p+RBIAT8eYnndNXnRR7P+3/4QLVsFBa3/Hj7VihfXxRqo0iJvuxLPCbQft7c0wWCXZ//hAKN+eDQtvN1oCsijwp2+7vj/7XEsUdIHOPq1OadoYRDyxlIn6cbaH6JQZ6KEcfxY2LkwgI/3ZghUdEBkXMD6PvyG65IiWzfwgydZMARkTN3MHbsVeM0mwybKGfKTzmyayQStJ+kwpWXpEYidJBs3wmiT+tEA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=outlook.com; dmarc=pass action=none header.from=outlook.com; dkim=pass header.d=outlook.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DMkSbni/6Jt9VVdn58DcoRYPQrdyblJgi+smdAdBxII=; b=XQp5h4NwcoeMr6FcyIre/X9wzJWr5XyE1dI8o6cPxqiGX11zZO/Eciv42YIF8DvUYncOt80S8Aq+00PDNXU9r1WzwL6hspTjtjwyC8B+1aFZ/CnEkakXcI/jgjRIcijLDblGDVwS3YS5Yq1k9Hp0osl0JiifxD1/JVTy2/2ZtQS69toVO8BoNAgZt7QjqxvDSuUEBnZIHU5s/PW2MI3bC3K39SFuwtoZ5vi7r54jMgSHwIDHgnLsOe3hPyJ8dYya9z0rBYo2pZt28eLvoT1y8biTpAS7NON5OugUzxBFwusTdN33p1JXk03OpYCe7hh5u5rakapMVp8r6++Si6p46g== Received: from DM6NAM10FT037.eop-nam10.prod.protection.outlook.com (2a01:111:e400:7e86::52) by DM6NAM10HT188.eop-nam10.prod.protection.outlook.com (2a01:111:e400:7e86::393) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.15; Fri, 10 Apr 2020 18:36:51 +0000 Received: from MWHPR07MB3440.namprd07.prod.outlook.com (2a01:111:e400:7e86::44) by DM6NAM10FT037.mail.protection.outlook.com (2a01:111:e400:7e86::285) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.15 via Frontend Transport; Fri, 10 Apr 2020 18:36:51 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:E9EA78FBA4FC7E081D03F5A5F2964E511B2BD7F5E37C7C78B4A36AB0A2C97CF6;UpperCasedChecksum:D7E6F9DA5C8540CCA16C0C020175024A468C92C517AFCCF563CC44FD0B3D9973;SizeAsReceived:7683;Count:47 Received: from MWHPR07MB3440.namprd07.prod.outlook.com ([fe80::bcc9:271b:20db:52e3]) by MWHPR07MB3440.namprd07.prod.outlook.com ([fe80::bcc9:271b:20db:52e3%6]) with mapi id 15.20.2900.015; Fri, 10 Apr 2020 18:36:51 +0000 From: "Michael Kubacki" To: devel@edk2.groups.io Cc: Jiewen Yao , Chao Zhang , Jian J Wang , Hao A Wu , Liming Gao Subject: [PATCH v1 0/9] Add the VariablePolicy feature Date: Fri, 10 Apr 2020 11:36:01 -0700 Message-ID: X-Mailer: git-send-email 2.16.3.windows.1 X-ClientProxiedBy: MWHPR20CA0040.namprd20.prod.outlook.com (2603:10b6:300:ed::26) To MWHPR07MB3440.namprd07.prod.outlook.com (2603:10b6:301:69::28) Return-Path: michael.kubacki@outlook.com X-Microsoft-Original-Message-ID: <20200410183610.3004-1-michael.kubacki@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (2001:4898:80e8:1:a083:16ea:384f:ad63) by MWHPR20CA0040.namprd20.prod.outlook.com (2603:10b6:300:ed::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.15 via Frontend Transport; Fri, 10 Apr 2020 18:36:51 +0000 X-Mailer: git-send-email 2.16.3.windows.1 X-Microsoft-Original-Message-ID: <20200410183610.3004-1-michael.kubacki@outlook.com> X-TMN: [NltGqf0H6KjHk6NM5NK0VmFGuDl/3ResL4qcxskVMjI0XGno5zyPnFKE7zcPjrRF] X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 47 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 0bdd029f-1f8d-493a-bf5f-08d7dd7e229d X-MS-TrafficTypeDiagnostic: DM6NAM10HT188: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /fA0eAsG+4fSn8h9HlZ+RGCFD05pkVxCDxmIi2/C+GTXMgnx+2cIjRINC0sUzFdyf25dmiPbQyMQy1NwxuNzXCcWd6Zn85wXYE0yWakc/aepSOadEYvI4IdzKLHCdn4uQHs45bIXytF70XUgtoc74BKc0eiV67YY0XzBzxILtsvbAYdE3nLvbrE10OkqN/HXJbnXGIYpXrYQyJ4DKKIz3CXxU/AFIjPy+E5+8b3rtP4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:0;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR07MB3440.namprd07.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:;DIR:OUT;SFP:1901; X-MS-Exchange-AntiSpam-MessageData: nlX9kMO66seNYG3VHvsWquX9Fg2OzFmGqFrZTHe5QjsCE5NSeg3aV0zexrnp8b+6N/bia1qUJtuP+n/usxXZvx7/HAUBWYYduJx2ac1jdAmuMzWPuZ/sIAQmaLGYgcb6tg8c9VTg5/ogALmU7PI26CknEQiQWll2ujkrRcfbILdDIckc0dfYFihyuIjhECwos9oQE/dZ/wqlhCrayvm4PA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0bdd029f-1f8d-493a-bf5f-08d7dd7e229d X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2020 18:36:51.5184 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6NAM10HT188 Content-Type: text/plain From: Michael Kubacki REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2522 The 9 patches in this series add the VariablePolicy feature to the core, deprecate Edk2VarLock (while adding a compatibility layer to reduce code churn), and integrate the VariablePolicy libraries and protocols into Variable Services. Since the integration requires multiple changes, including adding libraries, a protocol, an SMI communication handler, and VariableServices integration, the patches are broken up by individual library additions and then a final integration. Security-sensitive changes like bypassing Authenticated Variable enforcement are also broken out into individual patches so that attention can be called directly to them. The discussion of the feature can be found in multiple places throughout the last year on the RFC channel, staging branches, and in devel. Most recently, this subject was discussed in this thread: https://edk2.groups.io/g/devel/message/53712 (the code branches shared in that discussion are now out of date, but the whitepapers and discussion are relevant). On a separate note, shallow threading might not work on this patch series due to changes made by the SMTP server. Please bear with me while I am investigating if this can be changed. Cc: Jiewen Yao Cc: Chao Zhang Cc: Jian J Wang Cc: Hao A Wu Cc: Liming Gao Signed-off-by: Bret Barkelew Signed-off-by: Michael Kubacki Bret Barkelew (9): MdeModulePkg: Define the VariablePolicy protocol interface MdeModulePkg: Define the VariablePolicyLib MdeModulePkg: Define the VariablePolicyHelperLib MdeModulePkg: Define the VarCheckPolicyLib and SMM interface MdeModulePkg: Connect VariablePolicy business logic to VariableServices MdeModulePkg: Allow VariablePolicy state to delete protected variables SecurityPkg: Allow VariablePolicy state to delete authenticated variables MdeModulePkg: Change TCG MOR variables to use VariablePolicy MdeModulePkg: Drop VarLock from RuntimeDxe variable driver MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 211 ++ MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 773 +++++++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePolicyUnitTest.c | 2285 ++++++++++++++++++++ MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c | 52 +- MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c | 60 +- MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c | 49 +- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 51 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequstToLock.c | 71 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 445 ++++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 15 + SecurityPkg/Library/AuthVariableLib/AuthService.c | 22 +- MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 43 + MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++ MdeModulePkg/Include/Library/VariablePolicyLib.h | 206 ++ MdeModulePkg/Include/Protocol/VariablePolicy.h | 156 ++ MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 44 + MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 + MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 36 + MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 + MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 38 + MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 + MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePolicyUnitTest.inf | 41 + MdeModulePkg/MdeModulePkg.dec | 17 +- MdeModulePkg/MdeModulePkg.dsc | 7 + MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 8 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 8 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 + SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 + 31 files changed, 5172 insertions(+), 77 deletions(-) create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePolicyUnitTest.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequstToLock.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePolicyUnitTest.inf -- 2.16.3.windows.1