[PATCH v6 00/14] Add the VariablePolicy feature


Bret Barkelew
 

REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2522

The 14 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.

Platform porting instructions are described in this wiki entry:
https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables#platform-porting

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).

Cc: Jiewen Yao <jiewen.yao@...>
Cc: Chao Zhang <chao.b.zhang@...>
Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Liming Gao <liming.gao@...>
Cc: Jordan Justen <jordan.l.justen@...>
Cc: Laszlo Ersek <lersek@...>
Cc: Ard Biesheuvel <ard.biesheuvel@...>
Cc: Andrew Fish <afish@...>
Cc: Ray Ni <ray.ni@...>
Cc: Bret Barkelew <brbarkel@...>
Signed-off-by: Bret Barkelew <brbarkel@...>

v6 changes:
* Fix an issue with uninitialized Status in InitVariablePolicyLib() and DeinitVariablePolicyLib()
* Fix GCC building in shell-based functional test
* Rebase on latest origin/master

v5 changes:
* Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c
* Fix EFIAPI mismatches in the functional unittest
* Rebase on latest origin/master

v4 changes:
* Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from platforms
* Rebase on master
* Migrate to new MmCommunicate2 protocol
* Fix an oversight in the default return value for InitMmCommonCommBuffer
* Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables

V3 changes:
* Address all non-unittest issues with ECC
* Make additional style changes
* Include section name in hunk headers in "ini-style" files
* Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver
(now allocates its own buffer)
* Change names from VARIABLE_POLICY_PROTOCOL and gVariablePolicyProtocolGuid
to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid
* Fix GCC warning about initializing externs
* Add UNI strings for new PCD
* Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg
* Reorder patches according to Liming's feedback about adding to platforms
before changing variable driver

V2 changes:
* Fixed implementation for RuntimeDxe
* Add PCD to block DisableVariablePolicy
* Fix the DumpVariablePolicy pagination in SMM

Bret Barkelew (14):
MdeModulePkg: Define the VariablePolicy protocol interface
MdeModulePkg: Define the VariablePolicyLib
MdeModulePkg: Define the VariablePolicyHelperLib
MdeModulePkg: Define the VarCheckPolicyLib and SMM interface
OvmfPkg: Add VariablePolicy engine to OvmfPkg platform
EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform
ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform
UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform
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: Add a shell-based functional test for VariablePolicy

MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 320 +++
MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c | 46 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c | 85 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 816 +++++++
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePolicyUnitTest.c | 2440 ++++++++++++++++++++
MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFuncTestApp.c | 1978 ++++++++++++++++
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 | 53 +
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequstToLock.c | 71 +
MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 642 +++++
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 14 +
SecurityPkg/Library/AuthVariableLib/AuthService.c | 22 +-
ArmVirtPkg/ArmVirt.dsc.inc | 4 +
EmulatorPkg/EmulatorPkg.dsc | 3 +
MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 54 +
MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++
MdeModulePkg/Include/Library/VariablePolicyLib.h | 207 ++
MdeModulePkg/Include/Protocol/VariablePolicy.h | 157 ++
MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 42 +
MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 +
MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 35 +
MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 44 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf | 51 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePolicyUnitTest.inf | 40 +
MdeModulePkg/MdeModulePkg.ci.yaml | 4 +-
MdeModulePkg/MdeModulePkg.dec | 26 +-
MdeModulePkg/MdeModulePkg.dsc | 15 +
MdeModulePkg/MdeModulePkg.uni | 7 +
MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 11 +
MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md | 55 +
MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFuncTestApp.inf | 42 +
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 +
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 +
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 10 +
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 +
OvmfPkg/OvmfPkgIa32.dsc | 5 +
OvmfPkg/OvmfPkgIa32X64.dsc | 5 +
OvmfPkg/OvmfPkgX64.dsc | 5 +
OvmfPkg/OvmfXen.dsc | 4 +
SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 +
UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 +
UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 +
47 files changed, 8015 insertions(+), 78 deletions(-)
create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c
create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePolicyUnitTest.c
create mode 100644 MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFuncTestApp.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/VariablePolicyLibRuntimeDxe.inf
create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePolicyUnitTest.inf
create mode 100644 MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
create mode 100644 MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFuncTestApp.inf

--
2.26.2.windows.1.8.g01c50adf56.20200515075929


Dandan Bi
 

Hi Bret,

Thanks for the contribution.

I have taken an overview of this patch series and have some small comments in the related patches, please check in sub-patch.

I will review the patch series more in details and bring more comments back if have. Do you have a branch for these patches in GitHub? Which should be easy for review.


Thanks,
Dandan

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Bret
Barkelew
Sent: Tuesday, June 23, 2020 2:41 PM
To: devel@edk2.groups.io
Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B
<chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu, Hao
A <hao.a.wu@...>; Gao, Liming <liming.gao@...>; Justen,
Jordan L <jordan.l.justen@...>; Laszlo Ersek <lersek@...>;
Ard Biesheuvel <ard.biesheuvel@...>; Andrew Fish
<afish@...>; Ni, Ray <ray.ni@...>
Subject: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2522

The 14 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.

Platform porting instructions are described in this wiki entry:
https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-
Protocol---Enhanced-Method-for-Managing-Variables#platform-porting

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).

Cc: Jiewen Yao <jiewen.yao@...>
Cc: Chao Zhang <chao.b.zhang@...>
Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Liming Gao <liming.gao@...>
Cc: Jordan Justen <jordan.l.justen@...>
Cc: Laszlo Ersek <lersek@...>
Cc: Ard Biesheuvel <ard.biesheuvel@...>
Cc: Andrew Fish <afish@...>
Cc: Ray Ni <ray.ni@...>
Cc: Bret Barkelew <brbarkel@...>
Signed-off-by: Bret Barkelew <brbarkel@...>

v6 changes:
* Fix an issue with uninitialized Status in InitVariablePolicyLib() and
DeinitVariablePolicyLib()
* Fix GCC building in shell-based functional test
* Rebase on latest origin/master

v5 changes:
* Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c
* Fix EFIAPI mismatches in the functional unittest
* Rebase on latest origin/master

v4 changes:
* Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from
platforms
* Rebase on master
* Migrate to new MmCommunicate2 protocol
* Fix an oversight in the default return value for
InitMmCommonCommBuffer
* Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables

V3 changes:
* Address all non-unittest issues with ECC
* Make additional style changes
* Include section name in hunk headers in "ini-style" files
* Remove requirement for the EdkiiPiSmmCommunicationsRegionTable
driver
(now allocates its own buffer)
* Change names from VARIABLE_POLICY_PROTOCOL and
gVariablePolicyProtocolGuid
to EDKII_VARIABLE_POLICY_PROTOCOL and
gEdkiiVariablePolicyProtocolGuid
* Fix GCC warning about initializing externs
* Add UNI strings for new PCD
* Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg
* Reorder patches according to Liming's feedback about adding to platforms
before changing variable driver

V2 changes:
* Fixed implementation for RuntimeDxe
* Add PCD to block DisableVariablePolicy
* Fix the DumpVariablePolicy pagination in SMM

Bret Barkelew (14):
MdeModulePkg: Define the VariablePolicy protocol interface
MdeModulePkg: Define the VariablePolicyLib
MdeModulePkg: Define the VariablePolicyHelperLib
MdeModulePkg: Define the VarCheckPolicyLib and SMM interface
OvmfPkg: Add VariablePolicy engine to OvmfPkg platform
EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform
ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform
UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform
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: Add a shell-based functional test for VariablePolicy

MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
| 320 +++
MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
| 396 ++++
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
| 46 +

MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDx
e.c | 85 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
| 816 +++++++

MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
licyUnitTest.c | 2440 ++++++++++++++++++++

MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
ncTestApp.c | 1978 ++++++++++++++++
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
| 53 +

MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequstToLock
.c | 71 +
MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c
| 642 +++++

MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.
c | 14 +
SecurityPkg/Library/AuthVariableLib/AuthService.c | 22
+-
ArmVirtPkg/ArmVirt.dsc.inc | 4 +
EmulatorPkg/EmulatorPkg.dsc | 3 +
MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h |
54 +
MdeModulePkg/Include/Library/VariablePolicyHelperLib.h
| 164 ++
MdeModulePkg/Include/Library/VariablePolicyLib.h |
207 ++
MdeModulePkg/Include/Protocol/VariablePolicy.h |
157 ++
MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf
| 42 +
MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni
| 12 +
MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf
| 35 +
MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni
| 12 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf
| 44 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni
| 12 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf
| 51 +

MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
licyUnitTest.inf | 40 +
MdeModulePkg/MdeModulePkg.ci.yaml | 4 +-
MdeModulePkg/MdeModulePkg.dec | 26 +-
MdeModulePkg/MdeModulePkg.dsc | 15 +
MdeModulePkg/MdeModulePkg.uni | 7 +
MdeModulePkg/Test/MdeModulePkgHostTest.dsc |
11 +
MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
| 55 +

MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
ncTestApp.inf | 42 +
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
| 5 +
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
| 4 +

MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.i
nf | 10 +

MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf
| 4 +
OvmfPkg/OvmfPkgIa32.dsc | 5 +
OvmfPkg/OvmfPkgIa32X64.dsc | 5 +
OvmfPkg/OvmfPkgX64.dsc | 5 +
OvmfPkg/OvmfXen.dsc | 4 +
SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf |
2 +
UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 +
UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 +
47 files changed, 8015 insertions(+), 78 deletions(-) create mode 100644
MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
create mode 100644
MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDx
e.c
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
licyUnitTest.c
create mode 100644
MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
ncTestApp.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/VariablePolicyLibRuntimeDxe.inf
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
licyUnitTest.inf
create mode 100644
MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
create mode 100644
MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
ncTestApp.inf

--
2.26.2.windows.1.8.g01c50adf56.20200515075929



Bret Barkelew <bret.barkelew@...>
 

Certainly do:
https://github.com/corthon/edk2/tree/var_policy_dev_submission_v6

 

I’ve already made a change from some of your feedback in that branch and will restructure the patches for v7 once all feedback is in.

Thanks!

 

- Bret

 

From: Dandan Bi via groups.io
Sent: Wednesday, July 1, 2020 7:13 PM
To: devel@edk2.groups.io; bret@...
Cc: Yao, Jiewen; Zhang, Chao B; Wang, Jian J; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Hi Bret,

Thanks for the contribution.

I have taken an overview of this patch series and have some small comments in the related patches, please check in sub-patch.

I will review the patch series more in details and bring more comments back if have. Do you have a branch for these patches in GitHub? Which should be easy for review.


Thanks,
Dandan

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Bret
> Barkelew
> Sent: Tuesday, June 23, 2020 2:41 PM
> To: devel@edk2.groups.io
> Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B
> <chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu, Hao
> A <hao.a.wu@...>; Gao, Liming <liming.gao@...>; Justen,
> Jordan L <jordan.l.justen@...>; Laszlo Ersek <lersek@...>;
> Ard Biesheuvel <ard.biesheuvel@...>; Andrew Fish
> <afish@...>; Ni, Ray <ray.ni@...>
> Subject: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature
>
> REF:https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D2522&amp;data=02%7C01%7Cbret.barkelew%40microsoft.com%7C3fb90fd337a24d2c965d08d81e2d9081%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637292528333631839&amp;sdata=7hyxOuoJb08Ncpj6Ww4ABCFx48tdOUKmGZq5uCxLHjo%3D&amp;reserved=0
>
> The 14 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.
>
> Platform porting instructions are described in this wiki entry:
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftianocore%2Ftianocore.github.io%2Fwiki%2FVariablePolicy-&amp;data=02%7C01%7Cbret.barkelew%40microsoft.com%7C3fb90fd337a24d2c965d08d81e2d9081%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637292528333631839&amp;sdata=B%2Bl%2F43l6xTTzvLw00gyXElHqUlu%2BfwhuUJOIEh%2BHN6g%3D&amp;reserved=0
> Protocol---Enhanced-Method-for-Managing-Variables#platform-porting
>
> 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://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F53712&amp;data=02%7C01%7Cbret.barkelew%40microsoft.com%7C3fb90fd337a24d2c965d08d81e2d9081%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637292528333631839&amp;sdata=UMEtJ5hxVBmvcWPSLRwDZ6P6bOaE8N3v5sEgdzyPffw%3D&amp;reserved=0
> (the code branches shared in that discussion are now out of date, but the
> whitepapers and discussion are relevant).
>
> Cc: Jiewen Yao <jiewen.yao@...>
> Cc: Chao Zhang <chao.b.zhang@...>
> Cc: Jian J Wang <jian.j.wang@...>
> Cc: Hao A Wu <hao.a.wu@...>
> Cc: Liming Gao <liming.gao@...>
> Cc: Jordan Justen <jordan.l.justen@...>
> Cc: Laszlo Ersek <lersek@...>
> Cc: Ard Biesheuvel <ard.biesheuvel@...>
> Cc: Andrew Fish <afish@...>
> Cc: Ray Ni <ray.ni@...>
> Cc: Bret Barkelew <brbarkel@...>
> Signed-off-by: Bret Barkelew <brbarkel@...>
>
> v6 changes:
> * Fix an issue with uninitialized Status in InitVariablePolicyLib() and
> DeinitVariablePolicyLib()
> * Fix GCC building in shell-based functional test
> * Rebase on latest origin/master
>
> v5 changes:
> * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c
> * Fix EFIAPI mismatches in the functional unittest
> * Rebase on latest origin/master
>
> v4 changes:
> * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from
> platforms
> * Rebase on master
> * Migrate to new MmCommunicate2 protocol
> * Fix an oversight in the default return value for
> InitMmCommonCommBuffer
> * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables
>
> V3 changes:
> * Address all non-unittest issues with ECC
> * Make additional style changes
> * Include section name in hunk headers in "ini-style" files
> * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable
> driver
>   (now allocates its own buffer)
> * Change names from VARIABLE_POLICY_PROTOCOL and
> gVariablePolicyProtocolGuid
>   to EDKII_VARIABLE_POLICY_PROTOCOL and
> gEdkiiVariablePolicyProtocolGuid
> * Fix GCC warning about initializing externs
> * Add UNI strings for new PCD
> * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg
> * Reorder patches according to Liming's feedback about adding to platforms
>   before changing variable driver
>
> V2 changes:
> * Fixed implementation for RuntimeDxe
> * Add PCD to block DisableVariablePolicy
> * Fix the DumpVariablePolicy pagination in SMM
>
> Bret Barkelew (14):
>   MdeModulePkg: Define the VariablePolicy protocol interface
>   MdeModulePkg: Define the VariablePolicyLib
>   MdeModulePkg: Define the VariablePolicyHelperLib
>   MdeModulePkg: Define the VarCheckPolicyLib and SMM interface
>   OvmfPkg: Add VariablePolicy engine to OvmfPkg platform
>   EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform
>   ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform
>   UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform
>   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: Add a shell-based functional test for VariablePolicy
>
>  MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
> |  320 +++
>  MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
> |  396 ++++
>  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
> |   46 +
>
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDx
> e.c               |   85 +
>  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
> |  816 +++++++
>
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
> licyUnitTest.c   | 2440 ++++++++++++++++++++
>
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> ncTestApp.c        | 1978 ++++++++++++++++
>  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
> |   53 +
>
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequstToLock
> .c                    |   71 +
>  MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c
> |  642 +++++
>
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.
> c                       |   14 +
>  SecurityPkg/Library/AuthVariableLib/AuthService.c                                        |   22
> +-
>  ArmVirtPkg/ArmVirt.dsc.inc                                                               |    4 +
>  EmulatorPkg/EmulatorPkg.dsc                                                              |    3 +
>  MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h                                            |
> 54 +
>  MdeModulePkg/Include/Library/VariablePolicyHelperLib.h
> |  164 ++
>  MdeModulePkg/Include/Library/VariablePolicyLib.h                                         |
> 207 ++
>  MdeModulePkg/Include/Protocol/VariablePolicy.h                                           |
> 157 ++
>  MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf
> |   42 +
>  MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni
> |   12 +
>  MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf
> |   35 +
>  MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni
> |   12 +
>  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf
> |   44 +
>  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni
> |   12 +
>  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf
> |   51 +
>
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
> licyUnitTest.inf |   40 +
>  MdeModulePkg/MdeModulePkg.ci.yaml                                                        |    4 +-
>  MdeModulePkg/MdeModulePkg.dec                                                            |   26 +-
>  MdeModulePkg/MdeModulePkg.dsc                                                            |   15 +
>  MdeModulePkg/MdeModulePkg.uni                                                            |    7 +
>  MdeModulePkg/Test/MdeModulePkgHostTest.dsc                                               |
> 11 +
>  MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
> |   55 +
>
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> ncTestApp.inf      |   42 +
>  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
> |    5 +
>  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
> |    4 +
>
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.i
> nf                     |   10 +
>
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf
> |    4 +
>  OvmfPkg/OvmfPkgIa32.dsc                                                                  |    5 +
>  OvmfPkg/OvmfPkgIa32X64.dsc                                                               |    5 +
>  OvmfPkg/OvmfPkgX64.dsc                                                                   |    5 +
>  OvmfPkg/OvmfXen.dsc                                                                      |    4 +
>  SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf                                  |
> 2 +
>  UefiPayloadPkg/UefiPayloadPkgIa32.dsc                                                    |    4 +
>  UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc                                                 |    4 +
>  47 files changed, 8015 insertions(+), 78 deletions(-)  create mode 100644
> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
>  create mode 100644
> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
>  create mode 100644
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
>  create mode 100644
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDx
> e.c
>  create mode 100644
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
>  create mode 100644
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
> licyUnitTest.c
>  create mode 100644
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> ncTestApp.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/VariablePolicyLibRuntimeDxe.inf
>  create mode 100644
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
> licyUnitTest.inf
>  create mode 100644
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
>  create mode 100644
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> ncTestApp.inf
>
> --
> 2.26.2.windows.1.8.g01c50adf56.20200515075929
>
>
>


 


Bret Barkelew <bret.barkelew@...>
 

Actually, if you want to leave feedback in the CI test PR that I made for this version, I’m happy to discuss there as well.

https://github.com/tianocore/edk2/pull/718/files

 

- Bret

 

From: Bret Barkelew via groups.io
Sent: Wednesday, July 1, 2020 11:46 PM
To: devel@edk2.groups.io; dandan.bi@...; bret@...
Cc: Yao, Jiewen; Zhang, Chao B; Wang, Jian J; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Certainly do:
https://github.com/corthon/edk2/tree/var_policy_dev_submission_v6

 

I’ve already made a change from some of your feedback in that branch and will restructure the patches for v7 once all feedback is in.

Thanks!

 

- Bret

 

From: Dandan Bi via groups.io
Sent: Wednesday, July 1, 2020 7:13 PM
To: devel@edk2.groups.io; bret@...
Cc: Yao, Jiewen; Zhang, Chao B; Wang, Jian J; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Hi Bret,

Thanks for the contribution.

I have taken an overview of this patch series and have some small comments in the related patches, please check in sub-patch.

I will review the patch series more in details and bring more comments back if have. Do you have a branch for these patches in GitHub? Which should be easy for review.


Thanks,
Dandan

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Bret
> Barkelew
> Sent: Tuesday, June 23, 2020 2:41 PM
> To: devel@edk2.groups.io
> Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B
> <chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu, Hao
> A <hao.a.wu@...>; Gao, Liming <liming.gao@...>; Justen,
> Jordan L <jordan.l.justen@...>; Laszlo Ersek <lersek@...>;
> Ard Biesheuvel <ard.biesheuvel@...>; Andrew Fish
> <afish@...>; Ni, Ray <ray.ni@...>
> Subject: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature
>
> REF:https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D2522&amp;data=02%7C01%7Cbret.barkelew%40microsoft.com%7C3fb90fd337a24d2c965d08d81e2d9081%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637292528333631839&amp;sdata=7hyxOuoJb08Ncpj6Ww4ABCFx48tdOUKmGZq5uCxLHjo%3D&amp;reserved=0
>
> The 14 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.
>
> Platform porting instructions are described in this wiki entry:
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftianocore%2Ftianocore.github.io%2Fwiki%2FVariablePolicy-&amp;data=02%7C01%7Cbret.barkelew%40microsoft.com%7C3fb90fd337a24d2c965d08d81e2d9081%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637292528333631839&amp;sdata=B%2Bl%2F43l6xTTzvLw00gyXElHqUlu%2BfwhuUJOIEh%2BHN6g%3D&amp;reserved=0
> Protocol---Enhanced-Method-for-Managing-Variables#platform-porting
>
> 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://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F53712&amp;data=02%7C01%7Cbret.barkelew%40microsoft.com%7C3fb90fd337a24d2c965d08d81e2d9081%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637292528333631839&amp;sdata=UMEtJ5hxVBmvcWPSLRwDZ6P6bOaE8N3v5sEgdzyPffw%3D&amp;reserved=0
> (the code branches shared in that discussion are now out of date, but the
> whitepapers and discussion are relevant).
>
> Cc: Jiewen Yao <jiewen.yao@...>
> Cc: Chao Zhang <chao.b.zhang@...>
> Cc: Jian J Wang <jian.j.wang@...>
> Cc: Hao A Wu <hao.a.wu@...>
> Cc: Liming Gao <liming.gao@...>
> Cc: Jordan Justen <jordan.l.justen@...>
> Cc: Laszlo Ersek <lersek@...>
> Cc: Ard Biesheuvel <ard.biesheuvel@...>
> Cc: Andrew Fish <afish@...>
> Cc: Ray Ni <ray.ni@...>
> Cc: Bret Barkelew <brbarkel@...>
> Signed-off-by: Bret Barkelew <brbarkel@...>
>
> v6 changes:
> * Fix an issue with uninitialized Status in InitVariablePolicyLib() and
> DeinitVariablePolicyLib()
> * Fix GCC building in shell-based functional test
> * Rebase on latest origin/master
>
> v5 changes:
> * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c
> * Fix EFIAPI mismatches in the functional unittest
> * Rebase on latest origin/master
>
> v4 changes:
> * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from
> platforms
> * Rebase on master
> * Migrate to new MmCommunicate2 protocol
> * Fix an oversight in the default return value for
> InitMmCommonCommBuffer
> * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables
>
> V3 changes:
> * Address all non-unittest issues with ECC
> * Make additional style changes
> * Include section name in hunk headers in "ini-style" files
> * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable
> driver
>   (now allocates its own buffer)
> * Change names from VARIABLE_POLICY_PROTOCOL and
> gVariablePolicyProtocolGuid
>   to EDKII_VARIABLE_POLICY_PROTOCOL and
> gEdkiiVariablePolicyProtocolGuid
> * Fix GCC warning about initializing externs
> * Add UNI strings for new PCD
> * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg
> * Reorder patches according to Liming's feedback about adding to platforms
>   before changing variable driver
>
> V2 changes:
> * Fixed implementation for RuntimeDxe
> * Add PCD to block DisableVariablePolicy
> * Fix the DumpVariablePolicy pagination in SMM
>
> Bret Barkelew (14):
>   MdeModulePkg: Define the VariablePolicy protocol interface
>   MdeModulePkg: Define the VariablePolicyLib
>   MdeModulePkg: Define the VariablePolicyHelperLib
>   MdeModulePkg: Define the VarCheckPolicyLib and SMM interface
>   OvmfPkg: Add VariablePolicy engine to OvmfPkg platform
>   EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform
>   ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform
>   UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform
>   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: Add a shell-based functional test for VariablePolicy
>
>  MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
> |  320 +++
>  MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
> |  396 ++++
>  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
> |   46 +
>
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDx
> e.c               |   85 +
>  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
> |  816 +++++++
>
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
> licyUnitTest.c   | 2440 ++++++++++++++++++++
>
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> ncTestApp.c        | 1978 ++++++++++++++++
>  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
> |   53 +
>
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequstToLock
> .c                    |   71 +
>  MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c
> |  642 +++++
>
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.
> c                       |   14 +
>  SecurityPkg/Library/AuthVariableLib/AuthService.c                                        |   22
> +-
>  ArmVirtPkg/ArmVirt.dsc.inc                                                               |    4 +
>  EmulatorPkg/EmulatorPkg.dsc                                                              |    3 +
>  MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h                                            |
> 54 +
>  MdeModulePkg/Include/Library/VariablePolicyHelperLib.h
> |  164 ++
>  MdeModulePkg/Include/Library/VariablePolicyLib.h                                         |
> 207 ++
>  MdeModulePkg/Include/Protocol/VariablePolicy.h                                           |
> 157 ++
>  MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf
> |   42 +
>  MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni
> |   12 +
>  MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf
> |   35 +
>  MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni
> |   12 +
>  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf
> |   44 +
>  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni
> |   12 +
>  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf
> |   51 +
>
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
> licyUnitTest.inf |   40 +
>  MdeModulePkg/MdeModulePkg.ci.yaml                                                        |    4 +-
>  MdeModulePkg/MdeModulePkg.dec                                                            |   26 +-
>  MdeModulePkg/MdeModulePkg.dsc                                                            |   15 +
>  MdeModulePkg/MdeModulePkg.uni                                                            |    7 +
>  MdeModulePkg/Test/MdeModulePkgHostTest.dsc                                               |
> 11 +
>  MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
> |   55 +
>
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> ncTestApp.inf      |   42 +
>  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
> |    5 +
>  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
> |    4 +
>
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.i
> nf                     |   10 +
>
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf
> |    4 +
>  OvmfPkg/OvmfPkgIa32.dsc                                                                  |    5 +
>  OvmfPkg/OvmfPkgIa32X64.dsc                                                               |    5 +
>  OvmfPkg/OvmfPkgX64.dsc                                                                   |    5 +
>  OvmfPkg/OvmfXen.dsc                                                                      |    4 +
>  SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf                                  |
> 2 +
>  UefiPayloadPkg/UefiPayloadPkgIa32.dsc                                                    |    4 +
>  UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc                                                 |    4 +
>  47 files changed, 8015 insertions(+), 78 deletions(-)  create mode 100644
> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
>  create mode 100644
> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
>  create mode 100644
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
>  create mode 100644
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDx
> e.c
>  create mode 100644
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
>  create mode 100644
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
> licyUnitTest.c
>  create mode 100644
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> ncTestApp.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/VariablePolicyLibRuntimeDxe.inf
>  create mode 100644
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
> licyUnitTest.inf
>  create mode 100644
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
>  create mode 100644
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> ncTestApp.inf
>
> --
> 2.26.2.windows.1.8.g01c50adf56.20200515075929
>
>
>

 

 


Laszlo Ersek
 

On 07/02/20 08:47, Bret Barkelew wrote:
Actually, if you want to leave feedback in the CI test PR that I made for this version, I’m happy to discuss there as well.
https://github.com/tianocore/edk2/pull/718/files
Please let's not do that just yet. Once we have a flag day, we should
have review discussions exclusively in github. Before that day, the
mailing list should carry the review comments however.

Thanks
Laszlo


Dandan Bi
 

Hi Bret,

Sorry for the delayed response.

Some more comments here:

1. Currently I see the LockVaribePolicy is called at ReadyToBoot by variable driver, could we update it to be called at EndOfDxe? We should prevent malicious code registering policy after EndOfDxe for security concern. And could we also add the test case to check the variable policy is locked at EndofDxe?

2. For patch 4, the SMM communication, some general guidelines for SMI handler:
a) Check whether the communication buffer is outside SMM and valid.
For this feature, please double check whether the communication buffer is checked, if all the range in communication buffer has already been checked within existing edk2 core infrastructure, please also add the comments in the code to mention that it has been checked.

b) Should copy the communication buffer to SMRAM before checking the data fields to avoid TOC/TOU attac
For this feature, for example, when dump variable policy, if malicious code updates the DumpParams->TotalSize in communication buffer to smaller one to allocate the PaginationCache buffer, and then update it the correct one and dump the variable policy data into the PaginationCache buffer, it will cause buffer overflow in this case. So please double check the code and copy the communication buffer into SMRAM to avoid such kind issue.

3. Did you do any security test for this feature?

4. Currently, LockVariablePolicy can prevent RegisterVariablePolicy and DisableVariablePolicy. So in SMI hander, could we check the variable policy is locked or not firstly and then decide whether need to check and execution for VAR_CHECK_POLICY_COMMAND_REGISTER and VAR_CHECK_POLICY_COMMAND_DISABLE?

5. Since there is the logic when variable policy is disabled, it will permit deletion of auth/protected variables. Could we add some comments in code to mention that variable policy should always be enabled for security concern to avoid giving bad example?


Thanks,
Dandan

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Dandan
Bi
Sent: Thursday, July 2, 2020 10:14 AM
To: devel@edk2.groups.io; bret@...
Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B
<chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu, Hao
A <hao.a.wu@...>; Gao, Liming <liming.gao@...>; Justen,
Jordan L <jordan.l.justen@...>; Laszlo Ersek <lersek@...>;
Ard Biesheuvel <ard.biesheuvel@...>; Andrew Fish
<afish@...>; Ni, Ray <ray.ni@...>
Subject: Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

Hi Bret,

Thanks for the contribution.

I have taken an overview of this patch series and have some small comments
in the related patches, please check in sub-patch.

I will review the patch series more in details and bring more comments back
if have. Do you have a branch for these patches in GitHub? Which should be
easy for review.


Thanks,
Dandan

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Bret
Barkelew
Sent: Tuesday, June 23, 2020 2:41 PM
To: devel@edk2.groups.io
Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B
<chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu,
Hao A <hao.a.wu@...>; Gao, Liming <liming.gao@...>;
Justen, Jordan L <jordan.l.justen@...>; Laszlo Ersek
<lersek@...>; Ard Biesheuvel <ard.biesheuvel@...>;
Andrew
Fish <afish@...>; Ni, Ray <ray.ni@...>
Subject: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2522

The 14 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.

Platform porting instructions are described in this wiki entry:
https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-
Protocol---Enhanced-Method-for-Managing-Variables#platform-porting

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).

Cc: Jiewen Yao <jiewen.yao@...>
Cc: Chao Zhang <chao.b.zhang@...>
Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Liming Gao <liming.gao@...>
Cc: Jordan Justen <jordan.l.justen@...>
Cc: Laszlo Ersek <lersek@...>
Cc: Ard Biesheuvel <ard.biesheuvel@...>
Cc: Andrew Fish <afish@...>
Cc: Ray Ni <ray.ni@...>
Cc: Bret Barkelew <brbarkel@...>
Signed-off-by: Bret Barkelew <brbarkel@...>

v6 changes:
* Fix an issue with uninitialized Status in InitVariablePolicyLib()
and
DeinitVariablePolicyLib()
* Fix GCC building in shell-based functional test
* Rebase on latest origin/master

v5 changes:
* Fix the CONST mismatch in VariablePolicy.h and
VariablePolicySmmDxe.c
* Fix EFIAPI mismatches in the functional unittest
* Rebase on latest origin/master

v4 changes:
* Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from
platforms
* Rebase on master
* Migrate to new MmCommunicate2 protocol
* Fix an oversight in the default return value for
InitMmCommonCommBuffer
* Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume
variables

V3 changes:
* Address all non-unittest issues with ECC
* Make additional style changes
* Include section name in hunk headers in "ini-style" files
* Remove requirement for the EdkiiPiSmmCommunicationsRegionTable
driver
(now allocates its own buffer)
* Change names from VARIABLE_POLICY_PROTOCOL and
gVariablePolicyProtocolGuid
to EDKII_VARIABLE_POLICY_PROTOCOL and
gEdkiiVariablePolicyProtocolGuid
* Fix GCC warning about initializing externs
* Add UNI strings for new PCD
* Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg
* Reorder patches according to Liming's feedback about adding to
platforms
before changing variable driver

V2 changes:
* Fixed implementation for RuntimeDxe
* Add PCD to block DisableVariablePolicy
* Fix the DumpVariablePolicy pagination in SMM

Bret Barkelew (14):
MdeModulePkg: Define the VariablePolicy protocol interface
MdeModulePkg: Define the VariablePolicyLib
MdeModulePkg: Define the VariablePolicyHelperLib
MdeModulePkg: Define the VarCheckPolicyLib and SMM interface
OvmfPkg: Add VariablePolicy engine to OvmfPkg platform
EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform
ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform
UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform
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: Add a shell-based functional test for VariablePolicy

MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
| 320 +++

MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
| 396 ++++
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
| 46 +

MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDx
e.c | 85 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
| 816 +++++++

MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
licyUnitTest.c | 2440 ++++++++++++++++++++

MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
ncTestApp.c | 1978 ++++++++++++++++
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
| 53 +

MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequstToLock
.c | 71 +
MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c
| 642 +++++

MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.
c | 14 +
SecurityPkg/Library/AuthVariableLib/AuthService.c |
22
+-
ArmVirtPkg/ArmVirt.dsc.inc | 4 +
EmulatorPkg/EmulatorPkg.dsc | 3 +
MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h
|
54 +
MdeModulePkg/Include/Library/VariablePolicyHelperLib.h
| 164 ++
MdeModulePkg/Include/Library/VariablePolicyLib.h |
207 ++
MdeModulePkg/Include/Protocol/VariablePolicy.h |
157 ++
MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf
| 42 +
MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni
| 12 +

MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.i
nf
| 35 +

MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.u
ni
| 12 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf
| 44 +
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni
| 12 +

MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf
| 51 +

MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
licyUnitTest.inf | 40 +
MdeModulePkg/MdeModulePkg.ci.yaml | 4
+-
MdeModulePkg/MdeModulePkg.dec | 26 +-
MdeModulePkg/MdeModulePkg.dsc | 15 +
MdeModulePkg/MdeModulePkg.uni | 7 +
MdeModulePkg/Test/MdeModulePkgHostTest.dsc
|
11 +
MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
| 55 +

MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
ncTestApp.inf | 42 +
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
| 5 +
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
| 4 +

MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.i
nf | 10 +

MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf
| 4 +
OvmfPkg/OvmfPkgIa32.dsc | 5 +
OvmfPkg/OvmfPkgIa32X64.dsc | 5 +
OvmfPkg/OvmfPkgX64.dsc | 5 +
OvmfPkg/OvmfXen.dsc | 4 +
SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf |
2 +
UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 +
UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 +
47 files changed, 8015 insertions(+), 78 deletions(-) create mode
100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
create mode 100644
MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeD
x
e.c
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/Variable
Po
licyUnitTest.c
create mode 100644
MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
ncTestApp.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.i
nf
create mode 100644
MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.u
ni
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf
create mode 100644
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/Variable
Po
licyUnitTest.inf
create mode 100644
MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
create mode 100644
MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
ncTestApp.inf

--
2.26.2.windows.1.8.g01c50adf56.20200515075929




Bret Barkelew <bret.barkelew@...>
 

Responses below…

 

- Bret

 

From: Dandan Bi via groups.io
Sent: Tuesday, August 11, 2020 6:52 AM
To: devel@edk2.groups.io; Bi, Dandan; bret@...
Cc: Yao, Jiewen; Zhang, Chao B; Wang, Jian J; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Hi Bret,

Sorry for the delayed response.

Some more comments here:

1. Currently I see the LockVaribePolicy is called at ReadyToBoot by variable driver, could we update it to be called at EndOfDxe? We should prevent malicious code registering policy after EndOfDxe for security concern. And could we also add the test case to check the variable policy is locked at EndofDxe?

We could. Right now it’s at ReadyToBoot because it’s just there as a safety net and the platform could lock it earlier. Would it work to have a PCD for which EventGroup GUID the platform should lock on?

2. For patch 4, the SMM communication,  some general guidelines for SMI handler:
a)  Check whether the communication buffer is outside SMM and valid.
For this feature, please double check whether the communication buffer is checked, if all the range in communication buffer has already been checked within existing edk2 core infrastructure, please also add the comments in the code to mention that it has been checked.

I checked this, but I will recheck (since there’ve been a few revisions in the patches) and update the comments.

b) Should copy the communication buffer to SMRAM before checking the data fields to avoid TOC/TOU attac
For this feature, for example, when dump variable policy, if malicious code updates the DumpParams->TotalSize in communication buffer to smaller one to allocate the PaginationCache buffer, and then update it the correct one and dump the variable policy data into the PaginationCache buffer, it will cause buffer overflow in this case.  So please double check the code and copy the communication buffer into SMRAM to avoid such kind issue.

Will also check for this.

3. Did you do any security test for this feature?

Such as? There are both unit tests and integration tests to ensure correct functionality and that the disable and lock interfaces work as expected. I haven’t fuzzed it or anything that involved.

4. Currently, LockVariablePolicy can prevent RegisterVariablePolicy and DisableVariablePolicy. So in SMI hander, could we check the variable policy is locked or not firstly and then decide whether need to check and execution for VAR_CHECK_POLICY_COMMAND_REGISTER and VAR_CHECK_POLICY_COMMAND_DISABLE?

I’ll take a look, but my gut says this may be an unnecessary complication.

5. Since there is the logic when variable policy is disabled, it will permit deletion of auth/protected variables. Could we add some comments in code to mention that variable policy should always be enabled for security concern to avoid giving bad example?

I’m happy to think about how to document this, but I’m not immediately inclined to outright say it shouldn’t be disabled. I’d be happy to say that it shouldn’t be disabled in “normal, production configuration”, but it’s entirely reasonable to be disabled in a Manufacturing or R&R environment and we would actually prefer this be used because it would at least be consistent across platforms, rather than being something done ad hoc by each platform that needs it. Would that be sufficient?

Thanks,
Dandan
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Dandan
> Bi
> Sent: Thursday, July 2, 2020 10:14 AM
> To: devel@edk2.groups.io; bret@...
> Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B
> <chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu, Hao
> A <hao.a.wu@...>; Gao, Liming <liming.gao@...>; Justen,
> Jordan L <jordan.l.justen@...>; Laszlo Ersek <lersek@...>;
> Ard Biesheuvel <ard.biesheuvel@...>; Andrew Fish
> <afish@...>; Ni, Ray <ray.ni@...>
> Subject: Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature
>
> Hi Bret,
>
> Thanks for the contribution.
>
> I have taken an overview of this patch series and have some small comments
> in the related patches, please check in sub-patch.
>
> I will review the patch series more in details and bring more comments back
> if have. Do you have a branch for these patches in GitHub? Which should be
> easy for review.
>
>
> Thanks,
> Dandan
>
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Bret
> > Barkelew
> > Sent: Tuesday, June 23, 2020 2:41 PM
> > To: devel@edk2.groups.io
> > Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B
> > <chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu,
> > Hao A <hao.a.wu@...>; Gao, Liming <liming.gao@...>;
> > Justen, Jordan L <jordan.l.justen@...>; Laszlo Ersek
> > <lersek@...>; Ard Biesheuvel <ard.biesheuvel@...>;
> Andrew
> > Fish <afish@...>; Ni, Ray <ray.ni@...>
> > Subject: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature
> >
> > REF:https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D2522&amp;data=02%7C01%7CBret.Barkelew%40microsoft.com%7C91eed7c4a0d54e2eff6008d83dfdc4ec%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637327507431539442&amp;sdata=cLpx7VZsG%2F6r6GCXmiCS4DmmgOH4iKfX3VSAAYUOU00%3D&amp;reserved=0
> >
> > The 14 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.
> >
> > Platform porting instructions are described in this wiki entry:
> > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftianocore%2Ftianocore.github.io%2Fwiki%2FVariablePolicy-&amp;data=02%7C01%7CBret.Barkelew%40microsoft.com%7C91eed7c4a0d54e2eff6008d83dfdc4ec%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637327507431539442&amp;sdata=%2FYNgK7yixA5Gi7E9bHw3LIUNAQpZMh9ykTUqCqv2SRY%3D&amp;reserved=0
> > Protocol---Enhanced-Method-for-Managing-Variables#platform-porting
> >
> > 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://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F53712&amp;data=02%7C01%7CBret.Barkelew%40microsoft.com%7C91eed7c4a0d54e2eff6008d83dfdc4ec%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637327507431539442&amp;sdata=i7qaO6eZT8%2BzCT0satTptMWwCNspDz%2BS05eJmGGR628%3D&amp;reserved=0
> > (the code branches shared in that discussion are now out of date, but
> > the whitepapers and discussion are relevant).
> >
> > Cc: Jiewen Yao <jiewen.yao@...>
> > Cc: Chao Zhang <chao.b.zhang@...>
> > Cc: Jian J Wang <jian.j.wang@...>
> > Cc: Hao A Wu <hao.a.wu@...>
> > Cc: Liming Gao <liming.gao@...>
> > Cc: Jordan Justen <jordan.l.justen@...>
> > Cc: Laszlo Ersek <lersek@...>
> > Cc: Ard Biesheuvel <ard.biesheuvel@...>
> > Cc: Andrew Fish <afish@...>
> > Cc: Ray Ni <ray.ni@...>
> > Cc: Bret Barkelew <brbarkel@...>
> > Signed-off-by: Bret Barkelew <brbarkel@...>
> >
> > v6 changes:
> > * Fix an issue with uninitialized Status in InitVariablePolicyLib()
> > and
> > DeinitVariablePolicyLib()
> > * Fix GCC building in shell-based functional test
> > * Rebase on latest origin/master
> >
> > v5 changes:
> > * Fix the CONST mismatch in VariablePolicy.h and
> > VariablePolicySmmDxe.c
> > * Fix EFIAPI mismatches in the functional unittest
> > * Rebase on latest origin/master
> >
> > v4 changes:
> > * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from
> > platforms
> > * Rebase on master
> > * Migrate to new MmCommunicate2 protocol
> > * Fix an oversight in the default return value for
> > InitMmCommonCommBuffer
> > * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume
> > variables
> >
> > V3 changes:
> > * Address all non-unittest issues with ECC
> > * Make additional style changes
> > * Include section name in hunk headers in "ini-style" files
> > * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable
> > driver
> >   (now allocates its own buffer)
> > * Change names from VARIABLE_POLICY_PROTOCOL and
> > gVariablePolicyProtocolGuid
> >   to EDKII_VARIABLE_POLICY_PROTOCOL and
> > gEdkiiVariablePolicyProtocolGuid
> > * Fix GCC warning about initializing externs
> > * Add UNI strings for new PCD
> > * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg
> > * Reorder patches according to Liming's feedback about adding to
> platforms
> >   before changing variable driver
> >
> > V2 changes:
> > * Fixed implementation for RuntimeDxe
> > * Add PCD to block DisableVariablePolicy
> > * Fix the DumpVariablePolicy pagination in SMM
> >
> > Bret Barkelew (14):
> >   MdeModulePkg: Define the VariablePolicy protocol interface
> >   MdeModulePkg: Define the VariablePolicyLib
> >   MdeModulePkg: Define the VariablePolicyHelperLib
> >   MdeModulePkg: Define the VarCheckPolicyLib and SMM interface
> >   OvmfPkg: Add VariablePolicy engine to OvmfPkg platform
> >   EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform
> >   ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform
> >   UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform
> >   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: Add a shell-based functional test for VariablePolicy
> >
> >  MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
> > |  320 +++
> >
> > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
> > |  396 ++++
> >  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
> > |   46 +
> >
> >
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDx
> > e.c               |   85 +
> >  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
> > |  816 +++++++
> >
> >
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
> > licyUnitTest.c   | 2440 ++++++++++++++++++++
> >
> >
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> > ncTestApp.c        | 1978 ++++++++++++++++
> >  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
> > |   53 +
> >
> >
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequstToLock
> > .c                    |   71 +
> >  MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c
> > |  642 +++++
> >
> >
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.
> > c                       |   14 +
> >  SecurityPkg/Library/AuthVariableLib/AuthService.c                                        |
> 22
> > +-
> >  ArmVirtPkg/ArmVirt.dsc.inc                                                               |    4 +
> >  EmulatorPkg/EmulatorPkg.dsc                                                              |    3 +
> >  MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h
> |
> > 54 +
> >  MdeModulePkg/Include/Library/VariablePolicyHelperLib.h
> > |  164 ++
> >  MdeModulePkg/Include/Library/VariablePolicyLib.h                                         |
> > 207 ++
> >  MdeModulePkg/Include/Protocol/VariablePolicy.h                                           |
> > 157 ++
> >  MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf
> > |   42 +
> >  MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni
> > |   12 +
> >
> > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.i
> > nf
> > |   35 +
> >
> > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.u
> > ni
> > |   12 +
> >  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf
> > |   44 +
> >  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni
> > |   12 +
> >
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf
> > |   51 +
> >
> >
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
> > licyUnitTest.inf |   40 +
> >  MdeModulePkg/MdeModulePkg.ci.yaml                                                        |    4
> +-
> >  MdeModulePkg/MdeModulePkg.dec                                                            |   26 +-
> >  MdeModulePkg/MdeModulePkg.dsc                                                            |   15 +
> >  MdeModulePkg/MdeModulePkg.uni                                                            |    7 +
> >  MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> |
> > 11 +
> >  MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
> > |   55 +
> >
> >
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> > ncTestApp.inf      |   42 +
> >  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
> > |    5 +
> >  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
> > |    4 +
> >
> >
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.i
> > nf                     |   10 +
> >
> >
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf
> > |    4 +
> >  OvmfPkg/OvmfPkgIa32.dsc                                                                  |    5 +
> >  OvmfPkg/OvmfPkgIa32X64.dsc                                                               |    5 +
> >  OvmfPkg/OvmfPkgX64.dsc                                                                   |    5 +
> >  OvmfPkg/OvmfXen.dsc                                                                      |    4 +
> >  SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf                                  |
> > 2 +
> >  UefiPayloadPkg/UefiPayloadPkgIa32.dsc                                                    |    4 +
> >  UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc                                                 |    4 +
> >  47 files changed, 8015 insertions(+), 78 deletions(-)  create mode
> > 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeD
> > x
> > e.c
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/Variable
> > Po
> > licyUnitTest.c
> >  create mode 100644
> >
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> > ncTestApp.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.i
> > nf
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.u
> > ni
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/Variable
> > Po
> > licyUnitTest.inf
> >  create mode 100644
> > MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
> >  create mode 100644
> >
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> > ncTestApp.inf
> >
> > --
> > 2.26.2.windows.1.8.g01c50adf56.20200515075929
> >
> >
> >
>
>
>


 


Bret Barkelew <bret.barkelew@...>
 

Dandan,

 

I’ve addressed points 1-3 in this commit:

https://github.com/corthon/edk2/tree/var_policy_dev_submission_v7

 

I’ve also added a note to the new ReadMe about point #6:

https://github.com/corthon/edk2/tree/var_policy_dev_submission_v7/MdeModulePkg/Library/VariablePolicyLib#disablevariablepolicy

 

Will put up a v7 of patches this week.

 

- Bret

 

From: Bret Barkelew via groups.io
Sent: Monday, August 17, 2020 10:24 PM
To: devel@edk2.groups.io; dandan.bi@...; bret@...
Cc: Yao, Jiewen; Zhang, Chao B; Wang, Jian J; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Responses below…

 

- Bret

 

From: Dandan Bi via groups.io
Sent: Tuesday, August 11, 2020 6:52 AM
To: devel@edk2.groups.io; Bi, Dandan; bret@...
Cc: Yao, Jiewen; Zhang, Chao B; Wang, Jian J; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Hi Bret,

Sorry for the delayed response.

Some more comments here:

1. Currently I see the LockVaribePolicy is called at ReadyToBoot by variable driver, could we update it to be called at EndOfDxe? We should prevent malicious code registering policy after EndOfDxe for security concern. And could we also add the test case to check the variable policy is locked at EndofDxe?

We could. Right now it’s at ReadyToBoot because it’s just there as a safety net and the platform could lock it earlier. Would it work to have a PCD for which EventGroup GUID the platform should lock on?

2. For patch 4, the SMM communication,  some general guidelines for SMI handler:
a)  Check whether the communication buffer is outside SMM and valid.
For this feature, please double check whether the communication buffer is checked, if all the range in communication buffer has already been checked within existing edk2 core infrastructure, please also add the comments in the code to mention that it has been checked.

I checked this, but I will recheck (since there’ve been a few revisions in the patches) and update the comments.

b) Should copy the communication buffer to SMRAM before checking the data fields to avoid TOC/TOU attac
For this feature, for example, when dump variable policy, if malicious code updates the DumpParams->TotalSize in communication buffer to smaller one to allocate the PaginationCache buffer, and then update it the correct one and dump the variable policy data into the PaginationCache buffer, it will cause buffer overflow in this case.  So please double check the code and copy the communication buffer into SMRAM to avoid such kind issue.

Will also check for this.

3. Did you do any security test for this feature?

Such as? There are both unit tests and integration tests to ensure correct functionality and that the disable and lock interfaces work as expected. I haven’t fuzzed it or anything that involved.

4. Currently, LockVariablePolicy can prevent RegisterVariablePolicy and DisableVariablePolicy. So in SMI hander, could we check the variable policy is locked or not firstly and then decide whether need to check and execution for VAR_CHECK_POLICY_COMMAND_REGISTER and VAR_CHECK_POLICY_COMMAND_DISABLE?

I’ll take a look, but my gut says this may be an unnecessary complication.

5. Since there is the logic when variable policy is disabled, it will permit deletion of auth/protected variables. Could we add some comments in code to mention that variable policy should always be enabled for security concern to avoid giving bad example?

I’m happy to think about how to document this, but I’m not immediately inclined to outright say it shouldn’t be disabled. I’d be happy to say that it shouldn’t be disabled in “normal, production configuration”, but it’s entirely reasonable to be disabled in a Manufacturing or R&R environment and we would actually prefer this be used because it would at least be consistent across platforms, rather than being something done ad hoc by each platform that needs it. Would that be sufficient?

Thanks,
Dandan
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Dandan
> Bi
> Sent: Thursday, July 2, 2020 10:14 AM
> To: devel@edk2.groups.io; bret@...
> Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B
> <chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu, Hao
> A <hao.a.wu@...>; Gao, Liming <liming.gao@...>; Justen,
> Jordan L <jordan.l.justen@...>; Laszlo Ersek <lersek@...>;
> Ard Biesheuvel <ard.biesheuvel@...>; Andrew Fish
> <afish@...>; Ni, Ray <ray.ni@...>
> Subject: Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature
>
> Hi Bret,
>
> Thanks for the contribution.
>
> I have taken an overview of this patch series and have some small comments
> in the related patches, please check in sub-patch.
>
> I will review the patch series more in details and bring more comments back
> if have. Do you have a branch for these patches in GitHub? Which should be
> easy for review.
>
>
> Thanks,
> Dandan
>
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Bret
> > Barkelew
> > Sent: Tuesday, June 23, 2020 2:41 PM
> > To: devel@edk2.groups.io
> > Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B
> > <chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu,
> > Hao A <hao.a.wu@...>; Gao, Liming <liming.gao@...>;
> > Justen, Jordan L <jordan.l.justen@...>; Laszlo Ersek
> > <lersek@...>; Ard Biesheuvel <ard.biesheuvel@...>;
> Andrew
> > Fish <afish@...>; Ni, Ray <ray.ni@...>
> > Subject: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature
> >
> > REF:https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D2522&amp;data=02%7C01%7CBret.Barkelew%40microsoft.com%7C91eed7c4a0d54e2eff6008d83dfdc4ec%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637327507431539442&amp;sdata=cLpx7VZsG%2F6r6GCXmiCS4DmmgOH4iKfX3VSAAYUOU00%3D&amp;reserved=0
> >
> > The 14 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.
> >
> > Platform porting instructions are described in this wiki entry:
> > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftianocore%2Ftianocore.github.io%2Fwiki%2FVariablePolicy-&amp;data=02%7C01%7CBret.Barkelew%40microsoft.com%7C91eed7c4a0d54e2eff6008d83dfdc4ec%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637327507431539442&amp;sdata=%2FYNgK7yixA5Gi7E9bHw3LIUNAQpZMh9ykTUqCqv2SRY%3D&amp;reserved=0
> > Protocol---Enhanced-Method-for-Managing-Variables#platform-porting
> >
> > 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://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F53712&amp;data=02%7C01%7CBret.Barkelew%40microsoft.com%7C91eed7c4a0d54e2eff6008d83dfdc4ec%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637327507431539442&amp;sdata=i7qaO6eZT8%2BzCT0satTptMWwCNspDz%2BS05eJmGGR628%3D&amp;reserved=0
> > (the code branches shared in that discussion are now out of date, but
> > the whitepapers and discussion are relevant).
> >
> > Cc: Jiewen Yao <jiewen.yao@...>
> > Cc: Chao Zhang <chao.b.zhang@...>
> > Cc: Jian J Wang <jian.j.wang@...>
> > Cc: Hao A Wu <hao.a.wu@...>
> > Cc: Liming Gao <liming.gao@...>
> > Cc: Jordan Justen <jordan.l.justen@...>
> > Cc: Laszlo Ersek <lersek@...>
> > Cc: Ard Biesheuvel <ard.biesheuvel@...>
> > Cc: Andrew Fish <afish@...>
> > Cc: Ray Ni <ray.ni@...>
> > Cc: Bret Barkelew <brbarkel@...>
> > Signed-off-by: Bret Barkelew <brbarkel@...>
> >
> > v6 changes:
> > * Fix an issue with uninitialized Status in InitVariablePolicyLib()
> > and
> > DeinitVariablePolicyLib()
> > * Fix GCC building in shell-based functional test
> > * Rebase on latest origin/master
> >
> > v5 changes:
> > * Fix the CONST mismatch in VariablePolicy.h and
> > VariablePolicySmmDxe.c
> > * Fix EFIAPI mismatches in the functional unittest
> > * Rebase on latest origin/master
> >
> > v4 changes:
> > * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from
> > platforms
> > * Rebase on master
> > * Migrate to new MmCommunicate2 protocol
> > * Fix an oversight in the default return value for
> > InitMmCommonCommBuffer
> > * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume
> > variables
> >
> > V3 changes:
> > * Address all non-unittest issues with ECC
> > * Make additional style changes
> > * Include section name in hunk headers in "ini-style" files
> > * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable
> > driver
> >   (now allocates its own buffer)
> > * Change names from VARIABLE_POLICY_PROTOCOL and
> > gVariablePolicyProtocolGuid
> >   to EDKII_VARIABLE_POLICY_PROTOCOL and
> > gEdkiiVariablePolicyProtocolGuid
> > * Fix GCC warning about initializing externs
> > * Add UNI strings for new PCD
> > * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg
> > * Reorder patches according to Liming's feedback about adding to
> platforms
> >   before changing variable driver
> >
> > V2 changes:
> > * Fixed implementation for RuntimeDxe
> > * Add PCD to block DisableVariablePolicy
> > * Fix the DumpVariablePolicy pagination in SMM
> >
> > Bret Barkelew (14):
> >   MdeModulePkg: Define the VariablePolicy protocol interface
> >   MdeModulePkg: Define the VariablePolicyLib
> >   MdeModulePkg: Define the VariablePolicyHelperLib
> >   MdeModulePkg: Define the VarCheckPolicyLib and SMM interface
> >   OvmfPkg: Add VariablePolicy engine to OvmfPkg platform
> >   EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform
> >   ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform
> >   UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform
> >   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: Add a shell-based functional test for VariablePolicy
> >
> >  MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
> > |  320 +++
> >
> > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
> > |  396 ++++
> >  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
> > |   46 +
> >
> >
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDx
> > e.c               |   85 +
> >  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
> > |  816 +++++++
> >
> >
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
> > licyUnitTest.c   | 2440 ++++++++++++++++++++
> >
> >
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> > ncTestApp.c        | 1978 ++++++++++++++++
> >  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
> > |   53 +
> >
> >
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequstToLock
> > .c                    |   71 +
> >  MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c
> > |  642 +++++
> >
> >
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.
> > c                       |   14 +
> >  SecurityPkg/Library/AuthVariableLib/AuthService.c                                        |
> 22
> > +-
> >  ArmVirtPkg/ArmVirt.dsc.inc                                                               |    4 +
> >  EmulatorPkg/EmulatorPkg.dsc                                                              |    3 +
> >  MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h
> |
> > 54 +
> >  MdeModulePkg/Include/Library/VariablePolicyHelperLib.h
> > |  164 ++
> >  MdeModulePkg/Include/Library/VariablePolicyLib.h                                         |
> > 207 ++
> >  MdeModulePkg/Include/Protocol/VariablePolicy.h                                           |
> > 157 ++
> >  MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf
> > |   42 +
> >  MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni
> > |   12 +
> >
> > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.i
> > nf
> > |   35 +
> >
> > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.u
> > ni
> > |   12 +
> >  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf
> > |   44 +
> >  MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni
> > |   12 +
> >
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf
> > |   51 +
> >
> >
> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePo
> > licyUnitTest.inf |   40 +
> >  MdeModulePkg/MdeModulePkg.ci.yaml                                                        |    4
> +-
> >  MdeModulePkg/MdeModulePkg.dec                                                            |   26 +-
> >  MdeModulePkg/MdeModulePkg.dsc                                                            |   15 +
> >  MdeModulePkg/MdeModulePkg.uni                                                            |    7 +
> >  MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> |
> > 11 +
> >  MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
> > |   55 +
> >
> >
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> > ncTestApp.inf      |   42 +
> >  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
> > |    5 +
> >  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
> > |    4 +
> >
> >
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.i
> > nf                     |   10 +
> >
> >
> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf
> > |    4 +
> >  OvmfPkg/OvmfPkgIa32.dsc                                                                  |    5 +
> >  OvmfPkg/OvmfPkgIa32X64.dsc                                                               |    5 +
> >  OvmfPkg/OvmfPkgX64.dsc                                                                   |    5 +
> >  OvmfPkg/OvmfXen.dsc                                                                      |    4 +
> >  SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf                                  |
> > 2 +
> >  UefiPayloadPkg/UefiPayloadPkgIa32.dsc                                                    |    4 +
> >  UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc                                                 |    4 +
> >  47 files changed, 8015 insertions(+), 78 deletions(-)  create mode
> > 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeD
> > x
> > e.c
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/Variable
> > Po
> > licyUnitTest.c
> >  create mode 100644
> >
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> > ncTestApp.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.i
> > nf
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.u
> > ni
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf
> >  create mode 100644
> > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/Variable
> > Po
> > licyUnitTest.inf
> >  create mode 100644
> > MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/Readme.md
> >  create mode 100644
> >
> MdeModulePkg/Test/ShellTest/VariablePolicyFuncTestApp/VariablePolicyFu
> > ncTestApp.inf
> >
> > --
> > 2.26.2.windows.1.8.g01c50adf56.20200515075929
> >
> >
> >
>
>
>

 

 


Bret Barkelew <bret.barkelew@...>
 

Now that 2008 is labelled and everyone can take a breather… I still need reviews on the following patches (v7)…

Patch(es) 01, 02, 03,06,09,10,11,12,13,14

 

As such, the following email addresses may or may not be subscribed to CatFacts™ within the next 14 days if I get no responses:

Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Liming Gao <liming.gao@...>

Cc: Jordan Justen <jordan.l.justen@...>
Cc: Andrew Fish <afish@...>
Cc: Ray Ni <ray.ni@...>

Cc: Jiewen Yao <jiewen.yao@...>

Cc: Chao Zhang <chao.b.zhang@...>

 

May God have mercy on your inboxes.

 

- Bret

 


Bret Barkelew <bret.barkelew@...>
 

11 Days to go. I will single out an email every day…

 

Jian, today is your day.

How’s it going? Life good? Yeah, I know. Things are crazy here, too. Seattle is covered in smoke.

You know what would brighten things up, though? A nice “reviewed by”.

 

- Bret

 

From: Bret Barkelew via groups.io
Sent: Tuesday, September 8, 2020 3:20 PM
To: devel@edk2.groups.io; bret@...
Cc: Yao, Jiewen; Zhang, Chao B; Wang, Jian J; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray; liming.gao
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Now that 2008 is labelled and everyone can take a breather… I still need reviews on the following patches (v7)…

Patch(es) 01, 02, 03,06,09,10,11,12,13,14

 

As such, the following email addresses may or may not be subscribed to CatFacts™ within the next 14 days if I get no responses:

Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Liming Gao <liming.gao@...>

Cc: Jordan Justen <jordan.l.justen@...>
Cc: Andrew Fish <afish@...>
Cc: Ray Ni <ray.ni@...>

Cc: Jiewen Yao <jiewen.yao@...>

Cc: Chao Zhang <chao.b.zhang@...>

 

May God have mercy on your inboxes.

 

- Bret

 

 


Laszlo Ersek
 

On 09/11/20 17:18, Bret Barkelew wrote:
11 Days to go. I will single out an email every day…

 

Jian, today is your day.
How’s it going? Life good? Yeah, I know. Things are crazy here, too.
Seattle is covered in smoke.
You know what would brighten things up, though? A nice “reviewed by�.
I think we should discuss the review / maintenance status of core
subsystems in edk2 on the next stewards' call (in October).

A maintainer has power to block contributions by simply doing nothing.
Because of this, maintainership is a big responsibility, and
responsiveness is critical. If there is regularly no maintainer
feedback, then the affected subsystem should be considered orphaned,
and/or new co-maintainers should be added. It is not pleasant, but it
does occur over time. In particular, with a fine-grained
"Maintainers.txt", it's possible to assign reviewership / maintenance to
feature areas / groups of subsystems.

The edk2 project has to decide whether it encourages / values
contributions, or if it prefers contributors to fork and go their own
way. We should be clear and open about this. Whoever is willing to pony
up the resources needed for maintenance gets to be maintainer. Maybe not
in the orginal project but in a fork; but that's not a huge difference
from this perspective -- over time, the old project can wither and the
fork can take over.

I'm not sure if that was the original intent with Project Mu, but when
Project Mu was launched (as I perceived it), the edk2-devel list used to
be *way* more lively than it is now. Displacing upstream edk2 looked
unthinkable -- and like a really bad idea -- back then. But now this
list, if it's not dead, smells funny.

I would support adding Microsoft engineers as reviewers to core
subsystems. We could do that gradually. And until we switch over to
github.com completely, I'd be happy to help with merging patch sets for
core subsystems that have been reviewed. (Assuming the project does not
want to hand out more push access rights, in the time remaining until we
switch over to github.com.)

Bret, I'm really sorry it's taking so long; I know first hand it's
maddening. I'm especially embarrassed, on behalf of the project, because
there have been several Microsoft contributions lately, all using the
mailing list based workflow correctly and natively -- and such efforts
*deserve* timely feedback from maintainers.

Laszlo


Wang, Jian J
 

Hi Bret,

 

Sorry to hear the Seattle’s situation. I’ve been there for several times and love the city very much. Hope everything goes back normal soon.

 

And sorry for slow response. This patch series have been delegated to Dandan to review by Liming. She has completed security review from Intel perspective, and given back comments to you. It seems that you forgot to include her in the CC-list. Sorry I didn’t notice it and told her to do review in time. She’ll give comments ASAP.

 

Since MdeModulePkg is a huge package, I cannot do detail review for each patch for this package. And we have already modules reviewers designated . I think, usually, they should do the detailed review first. The package maintainer will do gate-keeper works as the last step. Correct me if any misunderstanding here.

 

Removed Chao from cc-list (his email is not valid) and added Dandan in loop.

 

Regards,

Jian

 

From: Bret Barkelew <Bret.Barkelew@...>
Sent: Friday, September 11, 2020 11:18 PM
To: devel@edk2.groups.io; bret@...; Wang, Jian J <jian.j.wang@...>
Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B <chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu, Hao A <hao.a.wu@...>; Gao, Liming <liming.gao@...>; Justen, Jordan L <jordan.l.justen@...>; Laszlo Ersek <lersek@...>; Ard Biesheuvel <ard.biesheuvel@...>; Andrew Fish <afish@...>; Ni, Ray <ray.ni@...>
Subject: RE: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

11 Days to go. I will single out an email every day…

 

Jian, today is your day.

How’s it going? Life good? Yeah, I know. Things are crazy here, too. Seattle is covered in smoke.

You know what would brighten things up, though? A nice “reviewed by”.

 

- Bret

 

From: Bret Barkelew via groups.io
Sent: Tuesday, September 8, 2020 3:20 PM
To: devel@edk2.groups.io; bret@...
Cc: Yao, Jiewen; Zhang, Chao B; Wang, Jian J; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray; liming.gao
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Now that 2008 is labelled and everyone can take a breather… I still need reviews on the following patches (v7)…

Patch(es) 01, 02, 03,06,09,10,11,12,13,14

 

As such, the following email addresses may or may not be subscribed to CatFacts™ within the next 14 days if I get no responses:

Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Liming Gao <liming.gao@...>

Cc: Jordan Justen <jordan.l.justen@...>
Cc: Andrew Fish <afish@...>
Cc: Ray Ni <ray.ni@...>

Cc: Jiewen Yao <jiewen.yao@...>

Cc: Chao Zhang <chao.b.zhang@...>

 

May God have mercy on your inboxes.

 

- Bret

 

 


Bret Barkelew <bret.barkelew@...>
 

Thanks for the update, Jian. Dandan has submitted RBs on another thread.

 

That leaves patches 06 and 11.

 

Next up, Jordan Justen. How’s it going, Jordan. We’ve never spoken directly (to my knowledge) and that’s a shame.

If you had to eat a single food for the rest of your life, what would it be and can I have a Reviewed-by?

Keep in mind that you probably don’t want it to be particularly strong flavors; it’s going to get disgusting eventually.

I’d probably go with some simple red beans and rice or something.

 

- Bret

 

From: Wang, Jian J
Sent: Sunday, September 13, 2020 11:42 PM
To: Bret Barkelew; devel@edk2.groups.io; bret@...; Bi, Dandan
Cc: Yao, Jiewen; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray
Subject: [EXTERNAL] RE: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Hi Bret,

 

Sorry to hear the Seattle’s situation. I’ve been there for several times and love the city very much. Hope everything goes back normal soon.

 

And sorry for slow response. This patch series have been delegated to Dandan to review by Liming. She has completed security review from Intel perspective, and given back comments to you. It seems that you forgot to include her in the CC-list. Sorry I didn’t notice it and told her to do review in time. She’ll give comments ASAP.

 

Since MdeModulePkg is a huge package, I cannot do detail review for each patch for this package. And we have already modules reviewers designated . I think, usually, they should do the detailed review first. The package maintainer will do gate-keeper works as the last step. Correct me if any misunderstanding here.

 

Removed Chao from cc-list (his email is not valid) and added Dandan in loop.

 

Regards,

Jian

 

From: Bret Barkelew <Bret.Barkelew@...>
Sent: Friday, September 11, 2020 11:18 PM
To: devel@edk2.groups.io; bret@...; Wang, Jian J <jian.j.wang@...>
Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B <chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu, Hao A <hao.a.wu@...>; Gao, Liming <liming.gao@...>; Justen, Jordan L <jordan.l.justen@...>; Laszlo Ersek <lersek@...>; Ard Biesheuvel <ard.biesheuvel@...>; Andrew Fish <afish@...>; Ni, Ray <ray.ni@...>
Subject: RE: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

11 Days to go. I will single out an email every day…

 

Jian, today is your day.

How’s it going? Life good? Yeah, I know. Things are crazy here, too. Seattle is covered in smoke.

You know what would brighten things up, though? A nice “reviewed by”.

 

- Bret

 

From: Bret Barkelew via groups.io
Sent: Tuesday, September 8, 2020 3:20 PM
To: devel@edk2.groups.io; bret@...
Cc: Yao, Jiewen; Zhang, Chao B; Wang, Jian J; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray; liming.gao
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Now that 2008 is labelled and everyone can take a breather… I still need reviews on the following patches (v7)…

Patch(es) 01, 02, 03,06,09,10,11,12,13,14

 

As such, the following email addresses may or may not be subscribed to CatFacts™ within the next 14 days if I get no responses:

Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Liming Gao <liming.gao@...>

Cc: Jordan Justen <jordan.l.justen@...>
Cc: Andrew Fish <afish@...>
Cc: Ray Ni <ray.ni@...>

Cc: Jiewen Yao <jiewen.yao@...>

Cc: Chao Zhang <chao.b.zhang@...>

 

May God have mercy on your inboxes.

 

- Bret

 

 

 


Bret Barkelew <bret.barkelew@...>
 

Hmmm…. no response from Jordan. Maybe he’s still trying dishes to see what he doesn’t get sick of. It’s good to be thorough.

 

So, I’ll turn to you, Mr. Fish – if that is your real name and not your supervillain pseudonym.

While you’ve always struck me as a gentle soul, and likely not resistant to learning more about anything, let alone our feline cohabitants, do you REALLY want to deal with a CatFacts subscription? Over a small, teensy, little code review? Reaaaaaaally?

 

- Bret

 

From: Bret Barkelew via groups.io
Sent: Tuesday, September 15, 2020 1:51 PM
To: Wang, Jian J; devel@edk2.groups.io; bret@...; Bi, Dandan
Cc: Yao, Jiewen; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Thanks for the update, Jian. Dandan has submitted RBs on another thread.

 

That leaves patches 06 and 11.

 

Next up, Jordan Justen. How’s it going, Jordan. We’ve never spoken directly (to my knowledge) and that’s a shame.

If you had to eat a single food for the rest of your life, what would it be and can I have a Reviewed-by?

Keep in mind that you probably don’t want it to be particularly strong flavors; it’s going to get disgusting eventually.

I’d probably go with some simple red beans and rice or something.

 

- Bret

 

From: Wang, Jian J
Sent: Sunday, September 13, 2020 11:42 PM
To: Bret Barkelew; devel@edk2.groups.io; bret@...; Bi, Dandan
Cc: Yao, Jiewen; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray
Subject: [EXTERNAL] RE: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Hi Bret,

 

Sorry to hear the Seattle’s situation. I’ve been there for several times and love the city very much. Hope everything goes back normal soon.

 

And sorry for slow response. This patch series have been delegated to Dandan to review by Liming. She has completed security review from Intel perspective, and given back comments to you. It seems that you forgot to include her in the CC-list. Sorry I didn’t notice it and told her to do review in time. She’ll give comments ASAP.

 

Since MdeModulePkg is a huge package, I cannot do detail review for each patch for this package. And we have already modules reviewers designated . I think, usually, they should do the detailed review first. The package maintainer will do gate-keeper works as the last step. Correct me if any misunderstanding here.

 

Removed Chao from cc-list (his email is not valid) and added Dandan in loop.

 

Regards,

Jian

 

From: Bret Barkelew <Bret.Barkelew@...>
Sent: Friday, September 11, 2020 11:18 PM
To: devel@edk2.groups.io; bret@...; Wang, Jian J <jian.j.wang@...>
Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B <chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu, Hao A <hao.a.wu@...>; Gao, Liming <liming.gao@...>; Justen, Jordan L <jordan.l.justen@...>; Laszlo Ersek <lersek@...>; Ard Biesheuvel <ard.biesheuvel@...>; Andrew Fish <afish@...>; Ni, Ray <ray.ni@...>
Subject: RE: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

11 Days to go. I will single out an email every day…

 

Jian, today is your day.

How’s it going? Life good? Yeah, I know. Things are crazy here, too. Seattle is covered in smoke.

You know what would brighten things up, though? A nice “reviewed by”.

 

- Bret

 

From: Bret Barkelew via groups.io
Sent: Tuesday, September 8, 2020 3:20 PM
To: devel@edk2.groups.io; bret@...
Cc: Yao, Jiewen; Zhang, Chao B; Wang, Jian J; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray; liming.gao
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Now that 2008 is labelled and everyone can take a breather… I still need reviews on the following patches (v7)…

Patch(es) 01, 02, 03,06,09,10,11,12,13,14

 

As such, the following email addresses may or may not be subscribed to CatFacts™ within the next 14 days if I get no responses:

Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Liming Gao <liming.gao@...>

Cc: Jordan Justen <jordan.l.justen@...>
Cc: Andrew Fish <afish@...>
Cc: Ray Ni <ray.ni@...>

Cc: Jiewen Yao <jiewen.yao@...>

Cc: Chao Zhang <chao.b.zhang@...>

 

May God have mercy on your inboxes.

 

- Bret

 

 

 

 


Bret Barkelew <bret.barkelew@...>
 

24 hours before Andrew Fish, Jordan Justen, and Ray Ni are enrolled in CatFacts.

You’ll learn things you never knew! (That’s the definition of learning.)

 

- Bret

 

From: Bret Barkelew via groups.io
Sent: Thursday, September 17, 2020 11:55 PM
To: devel@edk2.groups.io; Wang, Jian J; bret@...; Bi, Dandan
Cc: Yao, Jiewen; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Hmmm…. no response from Jordan. Maybe he’s still trying dishes to see what he doesn’t get sick of. It’s good to be thorough.

 

So, I’ll turn to you, Mr. Fish – if that is your real name and not your supervillain pseudonym.

While you’ve always struck me as a gentle soul, and likely not resistant to learning more about anything, let alone our feline cohabitants, do you REALLY want to deal with a CatFacts subscription? Over a small, teensy, little code review? Reaaaaaaally?

 

- Bret

 

From: Bret Barkelew via groups.io
Sent: Tuesday, September 15, 2020 1:51 PM
To: Wang, Jian J; devel@edk2.groups.io; bret@...; Bi, Dandan
Cc: Yao, Jiewen; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Thanks for the update, Jian. Dandan has submitted RBs on another thread.

 

That leaves patches 06 and 11.

 

Next up, Jordan Justen. How’s it going, Jordan. We’ve never spoken directly (to my knowledge) and that’s a shame.

If you had to eat a single food for the rest of your life, what would it be and can I have a Reviewed-by?

Keep in mind that you probably don’t want it to be particularly strong flavors; it’s going to get disgusting eventually.

I’d probably go with some simple red beans and rice or something.

 

- Bret

 

From: Wang, Jian J
Sent: Sunday, September 13, 2020 11:42 PM
To: Bret Barkelew; devel@edk2.groups.io; bret@...; Bi, Dandan
Cc: Yao, Jiewen; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray
Subject: [EXTERNAL] RE: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Hi Bret,

 

Sorry to hear the Seattle’s situation. I’ve been there for several times and love the city very much. Hope everything goes back normal soon.

 

And sorry for slow response. This patch series have been delegated to Dandan to review by Liming. She has completed security review from Intel perspective, and given back comments to you. It seems that you forgot to include her in the CC-list. Sorry I didn’t notice it and told her to do review in time. She’ll give comments ASAP.

 

Since MdeModulePkg is a huge package, I cannot do detail review for each patch for this package. And we have already modules reviewers designated . I think, usually, they should do the detailed review first. The package maintainer will do gate-keeper works as the last step. Correct me if any misunderstanding here.

 

Removed Chao from cc-list (his email is not valid) and added Dandan in loop.

 

Regards,

Jian

 

From: Bret Barkelew <Bret.Barkelew@...>
Sent: Friday, September 11, 2020 11:18 PM
To: devel@edk2.groups.io; bret@...; Wang, Jian J <jian.j.wang@...>
Cc: Yao, Jiewen <jiewen.yao@...>; Zhang, Chao B <chao.b.zhang@...>; Wang, Jian J <jian.j.wang@...>; Wu, Hao A <hao.a.wu@...>; Gao, Liming <liming.gao@...>; Justen, Jordan L <jordan.l.justen@...>; Laszlo Ersek <lersek@...>; Ard Biesheuvel <ard.biesheuvel@...>; Andrew Fish <afish@...>; Ni, Ray <ray.ni@...>
Subject: RE: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

11 Days to go. I will single out an email every day…

 

Jian, today is your day.

How’s it going? Life good? Yeah, I know. Things are crazy here, too. Seattle is covered in smoke.

You know what would brighten things up, though? A nice “reviewed by”.

 

- Bret

 

From: Bret Barkelew via groups.io
Sent: Tuesday, September 8, 2020 3:20 PM
To: devel@edk2.groups.io; bret@...
Cc: Yao, Jiewen; Zhang, Chao B; Wang, Jian J; Wu, Hao A; liming.gao; Justen, Jordan L; Laszlo Ersek; Ard Biesheuvel; Andrew Fish; Ni, Ray; liming.gao
Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v6 00/14] Add the VariablePolicy feature

 

Now that 2008 is labelled and everyone can take a breather… I still need reviews on the following patches (v7)…

Patch(es) 01, 02, 03,06,09,10,11,12,13,14

 

As such, the following email addresses may or may not be subscribed to CatFacts™ within the next 14 days if I get no responses:

Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Liming Gao <liming.gao@...>

Cc: Jordan Justen <jordan.l.justen@...>
Cc: Andrew Fish <afish@...>
Cc: Ray Ni <ray.ni@...>

Cc: Jiewen Yao <jiewen.yao@...>

Cc: Chao Zhang <chao.b.zhang@...>

 

May God have mercy on your inboxes.

 

- Bret