diff --git a/Changelog.md b/Changelog.md
index 15fe5a454f4..3c41a2253e7 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -13,6 +13,7 @@ OpenCore Changelog
- Removed `ConsoleBehaviourOs` and `ConsoleBehaviourUi`
- Fixed providing ConsoleOutHandle GOP when running from Shell
- Added `PickerAttributes` option to colour picker
+- Added `ProtectSecureBoot` option through FwRuntimeServices
#### v0.5.5
- Fixed CPU bus ratio calculation for Nehalem and Westmere
diff --git a/Docs/Configuration.pdf b/Docs/Configuration.pdf
index 8d333205fe8..5a8b0370fb6 100644
Binary files a/Docs/Configuration.pdf and b/Docs/Configuration.pdf differ
diff --git a/Docs/Configuration.tex b/Docs/Configuration.tex
index fe94a90a27b..e02b1ca0f7f 100755
--- a/Docs/Configuration.tex
+++ b/Docs/Configuration.tex
@@ -1303,6 +1303,18 @@ \subsection{Quirks Properties}\label{booterpropsquirks}
As \texttt{AvoidRuntimeDefrag} resolves a similar problem, no known firmwares should need
this quirk. Do not use this unless you fully understand the consequences.
+\item
+ \texttt{ProtectSecureBoot}\\
+ \textbf{Type}: \texttt{plist\ boolean}\\
+ \textbf{Failsafe}: \texttt{false}\\
+ \textbf{Description}: Protect UEFI Secure Boot variables from being written.
+
+ Reports security violation during attempts to write to \texttt{db}, \texttt{dbx},
+ \texttt{PK}, and \texttt{KEK} variables from the operating system.
+
+ \emph{Note}: This quirk mainly attempts to avoid issues with NVRAM implementations
+ with problematic defragmentation, such as select Insyde or \texttt{MacPro5,1}.
+
\item
\texttt{ProvideCustomSlide}\\
\textbf{Type}: \texttt{plist\ boolean}\\
diff --git a/Docs/Differences/Differences.pdf b/Docs/Differences/Differences.pdf
index fb87729db4e..0b384a68967 100644
Binary files a/Docs/Differences/Differences.pdf and b/Docs/Differences/Differences.pdf differ
diff --git a/Docs/Differences/Differences.tex b/Docs/Differences/Differences.tex
index b2c77b8c046..5a885ce1628 100644
--- a/Docs/Differences/Differences.tex
+++ b/Docs/Differences/Differences.tex
@@ -1,7 +1,7 @@
\documentclass[]{article}
%DIF LATEXDIFF DIFFERENCE FILE
%DIF DEL PreviousConfiguration.tex Thu Feb 6 00:43:28 2020
-%DIF ADD ../Configuration.tex Sat Feb 8 22:43:16 2020
+%DIF ADD ../Configuration.tex Sat Feb 8 23:35:07 2020
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
@@ -1364,7 +1364,22 @@ \subsection{Quirks Properties}\label{booterpropsquirks}
this quirk. Do not use this unless you fully understand the consequences.
\item
- \texttt{ProvideCustomSlide}\\
+ \DIFaddbegin \texttt{\DIFadd{ProtectSecureBoot}}\\
+ \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\
+ \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\
+ \textbf{\DIFadd{Description}}\DIFadd{: Protect UEFI Secure Boot variables from being written.
+}
+
+ \DIFadd{Reports security violation during attempts to write to }\texttt{\DIFadd{db}}\DIFadd{, }\texttt{\DIFadd{dbx}}\DIFadd{,
+ }\texttt{\DIFadd{PK}}\DIFadd{, and }\texttt{\DIFadd{KEK}} \DIFadd{variables from the operating system.
+}
+
+ \emph{\DIFadd{Note}}\DIFadd{: This quirk mainly attempts to avoid issues with NVRAM implementations
+ with problematic defragmentation, such as select Insyde or }\texttt{\DIFadd{MacPro5,1}}\DIFadd{.
+}
+
+\item
+ \DIFaddend \texttt{ProvideCustomSlide}\\
\textbf{Type}: \texttt{plist\ boolean}\\
\textbf{Failsafe}: \texttt{false}\\
\textbf{Description}: Provide custom KASLR slide on low memory.
diff --git a/Docs/Sample.plist b/Docs/Sample.plist
index 42305a863ac..ecf5343da2b 100644
--- a/Docs/Sample.plist
+++ b/Docs/Sample.plist
@@ -254,6 +254,8 @@
ProtectCsmRegion
+ ProtectSecureBoot
+
ProvideCustomSlide
SetupVirtualMap
diff --git a/Docs/SampleFull.plist b/Docs/SampleFull.plist
index ed39cde27be..0517a9177b8 100644
--- a/Docs/SampleFull.plist
+++ b/Docs/SampleFull.plist
@@ -254,6 +254,8 @@
ProtectCsmRegion
+ ProtectSecureBoot
+
ProvideCustomSlide
SetupVirtualMap
diff --git a/Platform/OpenCore/OpenCoreUefi.c b/Platform/OpenCore/OpenCoreUefi.c
index 36e0deb5da4..5e1aac46b4b 100644
--- a/Platform/OpenCore/OpenCoreUefi.c
+++ b/Platform/OpenCore/OpenCoreUefi.c
@@ -517,6 +517,7 @@ OcLoadBooterUefiSupport (
AbcSettings.DevirtualiseMmio = Config->Booter.Quirks.DevirtualiseMmio;
AbcSettings.DisableSingleUser = Config->Booter.Quirks.DisableSingleUser;
AbcSettings.DisableVariableWrite = Config->Booter.Quirks.DisableVariableWrite;
+ AbcSettings.ProtectSecureBoot = Config->Booter.Quirks.ProtectSecureBoot;
AbcSettings.DiscardHibernateMap = Config->Booter.Quirks.DiscardHibernateMap;
AbcSettings.EnableSafeModeSlide = Config->Booter.Quirks.EnableSafeModeSlide;
AbcSettings.EnableWriteUnprotector = Config->Booter.Quirks.EnableWriteUnprotector;