From: "Jason A. Donenfeld" Date: Mon, 15 Jun 2020 04:43:32 -0600 Subject: ACPI: configfs: Disallow loading ACPI tables when locked down Origin: https://git.kernel.org/linus/75b0cea7bf307f362057cc778efe89af4c615354 Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2020-15780 Like other vectors already patched, this one here allows the root user to load ACPI tables, which enables arbitrary physical address writes, which in turn makes it possible to disable lockdown. Prevents this by checking the lockdown status before allowing a new ACPI table to be installed. The link in the trailer shows a PoC of how this might be used. Link: https://git.zx2c4.com/american-unsigned-language/tree/american-unsigned-language-2.sh Cc: 5.4+ # 5.4+ Signed-off-by: Jason A. Donenfeld Signed-off-by: Rafael J. Wysocki [Salvatore Bonaccorso: Backport to v4.19.y: Use kernel_is_locked_down instead of security_locked_down] --- drivers/acpi/acpi_configfs.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) --- a/drivers/acpi/acpi_configfs.c +++ b/drivers/acpi/acpi_configfs.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "acpica/accommon.h" #include "acpica/actables.h" @@ -33,6 +34,9 @@ static ssize_t acpi_table_aml_write(stru struct acpi_table *table; int ret; + if (kernel_is_locked_down("Modifying ACPI tables")) + return -EPERM; + table = container_of(cfg, struct acpi_table, cfg); if (table->header) {