Commit Graph
134 Commits
Author SHA1 Message Date
Laukik Hase 906aefadb0 change(esp_tee): Limit the TEE secure storage AEAD operation input buffer length 2026-09-02 11:49:23 +05:30
Laukik Hase dc0fadf1d4 feat(esp_tee): Disable the MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS option for TEE build 2026-09-02 11:49:22 +05:30
Laukik Hase 1fbeea3393 fix(esp_tee): Snapshot input arguments in TEE memory before secure service execution 2026-08-28 10:20:55 +05:30
Laukik Hase 427dc875b9 change(esp_tee): Force non-deterministic ECDSA signing for TEE secure storage keys 2026-08-28 10:20:55 +05:30
Laukik Hase 4812dbd2d8 feat(esp_tee): Use CTR-DRBG for assisting random number generation in TEE
- For ESP-TEE, fault-assert in `esp_random()` if the RNG is held in a
  freeze state
2026-08-28 10:20:54 +05:30
Laukik Hase fd73878204 fix(esp_tee): Reject re-entrant secure service calls from the REE 2026-08-19 16:36:16 +05:30
Stefan Stipanovic d0ae774d59 fix(esp_system): enable linking with LLD on RISC-V targets 2026-08-13 21:23:36 +02:00
Ashish Sharma e7af5c69d9 feat(esp_image_verify): split image verification out of bootloader_support 2026-08-12 08:39:18 +05:30
Alexey Lapshin 36586b15d6 Merge branch 'fix/newlib_builds' into 'master'
Fix: newlib compatibility with libraries built with picolibc headers

Closes IDF-15962

See merge request espressif/esp-idf!51013
2026-08-04 14:41:32 +04:00
Alexey Lapshin df1b1dea29 feat(libc): pass __PICOLIBC_ERRNO_FUNCTION to picolibc builds 2026-07-29 16:12:02 +07:00
Erhan Kurubas e21ab7e724 feat(system): add OCD stub bin support for more targets
Add SOC_DEBUG_HAVE_OCD_STUB_BINS for esp32c5, esp32c61, esp32h4,
esp32h21, esp32p4, and esp32s31. Update TEE linker scripts with
correct esp_tee_app_config offsets for the 0x3000 stub reservation
2026-07-28 08:34:02 +03:00
Erhan Kurubas 6e5b4febf8 change(system): increase OCD stub memory reservation from 8K to 12K 2026-07-28 07:45:39 +03:00
Laukik Hase b77016e350 fix(esp_tee): Validate REE-supplied memory bounds (esp_tee_app_config) before use 2026-07-23 11:29:57 +05:30
Laukik Hase acb7d996b0 fix(esp_tee): Validate the stack pointer at the privilege switch boundary 2026-07-23 11:29:55 +05:30
Laukik Hase ec08423276 Merge branch 'feat/esp_tee_misc_optim' into 'master'
feat(esp_tee): Restrict REE access to TEE-owned secure storage keys

Closes IDF-15938 and IDFGH-17659

See merge request espressif/esp-idf!50307
2026-07-16 14:00:51 +05:30
Laukik Hase 710d964505 feat(esp_tee): Restrict REE access to TEE-owned secure storage keys 2026-07-15 09:56:26 +05:30
Laukik Hase 5c7d20d80c fix(esp_tee): Miscellaneous optimizations and fixes
Closes https://github.com/espressif/esp-idf/issues/18591
2026-07-15 09:56:25 +05:30
Ashish Sharma 9a99613f1b fix(esp_tee): ensure hal assert is enabled for tee builds 2026-07-13 13:44:56 +08:00
Ashish Sharma 133c1c6f6d fix(esp_tee): enforce MMU-map vaddr validity at the REE->TEE boundary 2026-07-13 13:42:58 +08:00
Ashish Sharma 15d9f9f0bc fix(esp_tee): fixes IV length check for TEE AEAD operations 2026-07-13 13:42:58 +08:00
morris 651d6a283f refactor(esp_common): centralize ALIGN_UP/ALIGN_DOWN into esp_macros.h
Remove ~50 duplicate local definitions of ALIGN_UP/ALIGN_DOWN/ALIGN_UP_BY/
ALIGN_DOWN_BY across the codebase and replace them with canonical
ESP_ALIGN_UP/ESP_ALIGN_DOWN from esp_macros.h.
2026-07-06 13:36:06 +08:00
Ashish Sharma 7842b5170f fix(esp_tee): fix DS-lock leak, intr-matrix OOB, calloc overflow, attestation leak 2026-07-03 17:20:49 +08:00
Mahavir Jain bd250902b8 Merge branch 'fix/fix_esp_tee_failing_deterministic_ecdsa_sign' into 'master'
fix(esp_tee): release SHA held by HMAC after crypto peripheral reset

See merge request espressif/esp-idf!50286
2026-07-02 13:46:59 +05:30
Ashish Sharma 2cbd0afed8 fix(esp_tee): fixes double panic when ESP-TEE panics 2026-07-02 14:52:53 +08:00
Ashish Sharma 2458c81d7d fix(esp_tee): release SHA held by HMAC after crypto peripheral reset 2026-07-02 14:52:53 +08:00
Laukik Hase f055d2a454 fix(esp_tee): Add additional input validation checks for TEE service calls 2026-06-30 12:14:34 +05:30
Laukik Hase c7a73cb8d3 fix(esp_tee): Avoid crypto peripherals reset with esp_restart() from REE
- Reset the crypto peripherals during TEE initialization
2026-06-22 11:18:32 +05:30
Laukik Hase da36354af9 fix(esp_tee): Prevent TEE from dispatching the REE heap poisoning callback 2026-06-22 11:18:30 +05:30
Laukik Hase c9f6efb976 fix(esp_tee): Harden the TEE secure services against REE manipulation
- `bootloader_flash_execute_command_common`: whitelist the flash command
   opcodes the REE actually uses; reject the rest
- `spi_flash_hal_* services`: a forged `host->driver` could hijack TEE
   control flow since the HAL dispatches through it, so swap
   `host->driver` to a TEE-rodata vtable around each HAL call
- Deny partition table and bootloader writes by default and permit
  bootloader writes only when explicitly enabled via
  `CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED` option
- Protect the TEE-assigned interrupt pin configuration against REE
- Validate nested DS context pointers in start/finish_sign and bound
  the result copy to the SoC max signature size
- Fix the stack usage in service dispatcher argument parsing
2026-06-10 12:02:34 +05:30
harshal.patil dec9ce8263 fix(esp_tee): Reset crypto peripherals before the panic-induced reset 2026-06-09 10:59:12 +05:30
Alexey Lapshin 321c7677ca fix(esp_tee): fix buffer overflow 2026-06-04 16:02:36 +07:00
Sudeep Mohanty 5cfd7b9f96 fix(esp_tee): Stop esp_tee subproject to be built with build system v2
- Unset IDF_BUILD_V2 in subproject/CMakeLists.txt before including
  project.cmake so the nested esp_tee ExternalProject cmake stays on
  cmakev1.
- Read PARTITION_TABLE_BIN_PATH as a generator expression under
  IDF_BUILD_V2 to defer the lookup to CMake's generate phase.
2026-05-25 15:24:25 +02:00
Michael (XIAO Xufeng) 636f56f6ce Merge branch 'fix/s3_xip_opt_os_startup' into 'master'
fix(mspi): fixed possible boot failure in some builds when psram is enabled

Closes IDF-15634 and IDF-15637

See merge request espressif/esp-idf!48258
2026-05-13 18:55:35 +08:00
Xiao Xufeng a671c83b0b fix(mspi): fixed possible boot failure in some builds when psram is enabled
A typical scenario is: when XIP on PSRAM enabled, compiler optimization level is Os. Under certain binary layout, boot hangs and backtrace points to `esp_sleep_config_gpio_isolate`.

The root cause is that, during PSRAM initialization, it calls esp_gpio_reserve, which happens to place before the reported function. However, after call, there is no barrier before the clock adjustment in `mspi_timing_enter_low_speed_mode`. The clock gets changed when the cache is still fetching data, resulting in the corrupted data in the end of the cache line.

This commits add spi_flash_disable_cache as a barrier to make sure the cache transactions is finished before the clock switch.
2026-05-13 16:46:20 +08:00
Laukik Hase 281d219fac feat(esp_tee): Clear out all sensitive buffers explicitly after TEE crypto operations 2026-05-12 13:56:28 +05:30
Laukik Hase 4f3f1dff5a feat(esp_tee): Add some required fields in the attestation token
- Chip ID from the ROM
- Device MAC address from eFuse BLK1
- Device Optional Unique ID from eFuse BLK2
2026-05-11 16:29:19 +05:30
Guillaume Souchere a56354e9ab feat(heap): move TLSF ROM patches and related files from esp_rom to heap
The TLSF ROM patch code (rom_patch_tlsf.c, rom_patch_multi_heap.c),
their headers, and the per-target *.rom.heap.ld linker scripts are
semantically owned by the heap component, not esp_rom. Move them
accordingly:

- components/esp_rom/patches/esp_rom_tlsf.c
  → components/heap/rom_patches/rom_patch_tlsf.c
- components/esp_rom/patches/esp_rom_multi_heap.c
  → components/heap/rom_patches/rom_patch_multi_heap.c
- components/esp_rom/include/esp_rom_tlsf.h
  → components/heap/rom_patches/include/rom_patch_tlsf.h
- components/esp_rom/include/esp_rom_multi_heap.h
  → components/heap/rom_patches/include/rom_patch_multi_heap.h
- components/esp_rom/<target>/ld/<target>.rom.heap.ld (×8)
  → components/heap/port/<target>/ld/<target>.rom.heap.ld

Update heap/CMakeLists.txt to:
- use target_linker_script() directly for *.rom.heap.ld
- guard post-registration ROM patch setup with NOT BOOTLOADER_BUILD
- drop stale CONFIG_HEAP_TLSF_CHECK_PATCH symbol reference
- drop esp_rom_include_multi_heap_patch from TLSF_CHECK_PATCH guard

Remove the corresponding entries from esp_rom/CMakeLists.txt.
2026-04-23 12:21:31 +02:00
Mahavir Jain 96194f19a6 Merge branch 'fix/esp-tee-validation-clobber-and-deref-before-check' into 'master'
fix(esp_tee): prevent validation clobbering and deref-before-check in secure services

See merge request espressif/esp-idf!47589
2026-04-21 11:17:31 +05:30
Aditya Patwardhan 2de0ed6a2b fix(esp_tee): prevent validation clobbering and deref-before-check
TEE secure-service handlers had two bugs letting REE bypass
pointer-region validation:

1. valid_addr = instead of valid_addr &= in AEAD encrypt/decrypt
   and DS sign handlers, clobbering prior failed checks.
   Impact: REE writes to TEE DRAM via DS signature output, or reads
   TEE DRAM via AEAD output.

2. data->rsa_length dereferenced before data is validated in DS sign
   and DS start_sign handlers.

Fix: use &= for subsequent checks, add early return after initial
data pointer check in DS handlers.
2026-04-14 14:41:59 +05:30
Laukik Hase 764626a1b7 change(esp_tee): Move the internal memory secure service call table to IRAM
- Using PMA, the TEE IRAM is marked as R/X while TEE DRAM is marked as R/W.
  Moving the internal memory secure service call table from DRAM to IRAM
  makes it immutable.
2026-04-13 12:43:26 +05:30
Laukik Hase 145ba4c42d fix(esp_tee): Add missing input validation checks for TEE service calls
- MULTI_HEAP_ASSERT for TEE now aborts on failure, instead of ignoring the condition
- Prevent potential TEE OTA write bounds overflow
2026-04-07 10:05:06 +05:30
harshal.patil 398d9ea9cd fix(esp_security): Add more validation checks 2026-03-20 11:15:23 +05:30
harshal.patil 0db717b9ec feat(esp_ds): Support using the AES key used by DS peripheral for encrypting params 2026-03-20 11:15:23 +05:30
Laukik Hase 250d757bb9 feat(esp_tee): Miscellaneous fixes and improvements
- Fix intermittent TEE stack underflow test failures
- Fix out-of-bounds access Coverity report from the attestation
  component
- Add appropriate checks and asserts for TEE flash memory regions'
  sizes
2026-03-16 10:46:11 +05:30
harshal.patil 8036017951 feat(mbedtls/esp_mac): Support Key Manager key using the ESP-HMAC PSA interface 2026-03-03 18:40:31 +05:30
harshal.patil 163e0974b3 change(mbedtls/psa_driver_esp_hmac): Use efuse key block instead of efuse block
- Maintains compatibility of the older esp_hmac_ APIs and the PSA driver
2026-03-03 18:36:18 +05:30
Laukik Hase 3593995a43 refactor(esp_tee): Remove leftover references to the secure storage AES-GCM IV 2026-02-14 16:19:57 +05:30
Laukik Hase 85e66d726d fix(esp_tee): Prevent IV reuse in the TEE secure storage AES-GCM service 2026-02-05 14:53:21 +05:30
harshal.patil 0c8fbdcc83 feat(esp_tee/tee_sec_storage): Use PSA interface internally 2026-01-31 13:30:58 +05:30
Mahavir Jain 14f0185000 Merge branch 'fix/tee_apm_hal_linker_placement' into 'master'
fix(esp_tee): Fix incorrect path of APM HAL in the TEE linker scripts

See merge request espressif/esp-idf!45459
2026-01-29 09:48:59 +05:30