Procházet zdrojové kódy

system/security: Memprot bypassing mitigation

Check Memprot lock bit(s) during the system startup, abort/reset on any Memprot parts found locked during this phase.
There is no legal reason to disallow the Memprot configuration by the system, so it's either a critical bug in the
application or an malicious attempt to bypass the system security.
Error message is printed before digital system reset.

Closes IDF-2700
Martin Vychodil před 4 roky
rodič
revize
b04705cfe2
1 změnil soubory, kde provedl 6 přidání a 0 odebrání
  1. 6 0
      components/esp_system/port/cpu_start.c

+ 6 - 0
components/esp_system/port/cpu_start.c

@@ -467,6 +467,12 @@ void IRAM_ATTR call_start_cpu0(void)
     esp_cache_err_int_init();
 
 #if CONFIG_ESP_SYSTEM_MEMPROT_FEATURE
+    // Memprot cannot be locked during OS startup as the lock-on prevents any PMS changes until a next reboot
+    // If such a situation appears, it is likely an malicious attempt to bypass the system safety setup -> print error & reset
+    if ( esp_memprot_is_locked_any() ) {
+        ESP_EARLY_LOGE(TAG, "Memprot feature locked after the system reset! Potential safety corruption, rebooting.");
+        esp_restart_noos_dig();
+    }
 #if CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK
     esp_memprot_set_prot(true, true, NULL);
 #else