Commit Graph
101 Commits
Author SHA1 Message Date
Laukik Hase ab5b29e52c Merge branch 'fix/tee_reentrant_svc_and_non_det_sign_v6.0' into 'release/v6.0'
feat(esp_tee): Backports to v6.0

See merge request espressif/esp-idf!52290
2026-09-07 10:10:44 +05:30
Alexey Gerenkov 2007a7c8db Merge branch 'feature/update-openocd-to-v0.12.0-esp32-20260831_v6.0' into 'release/v6.0'
feat(tools): update openocd version to v0.12.0-esp32-20260831 (v6.0)

See merge request espressif/esp-idf!52392
2026-09-04 17:32:14 +08:00
Laukik Hase e5c3063dee fix(esp_tee): Snapshot input arguments in TEE memory before secure service execution
- Also fix the `tee_cli_app` build failure due to TEE heap size overflow
2026-09-04 10:23:25 +05:30
Laukik Hase 8e34cc16cc 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-09-04 10:23:24 +05:30
Laukik Hase e01f93eec4 fix(esp_tee): Reject re-entrant secure service calls from the REE 2026-09-04 10:23:23 +05:30
Jiang Jiang Jian be34361782 Merge branch 'fix/newlib_builds_v6.0' into 'release/v6.0'
Fix: newlib compatibility with libraries built with picolibc headers (v6.0)

See merge request espressif/esp-idf!51524
2026-09-03 19:52:05 +08:00
Erhan Kurubas 1c397699b2 feat(system): add OCD stub bin support for more targets
Add SOC_DEBUG_HAVE_OCD_STUB_BINS for esp32c5, esp32c61, esp32h4,
esp32h21 and esp32p4. Update TEE linker scripts with
correct esp_tee_app_config offsets for the 0x3000 stub reservation
2026-09-03 13:04:45 +02:00
Erhan Kurubas 8a1336523a change(system): increase OCD stub memory reservation from 8K to 12K 2026-09-03 13:04:40 +02:00
Alexey Lapshin 0c28bbe3f8 feat(libc): pass __PICOLIBC_ERRNO_FUNCTION to picolibc builds 2026-08-05 16:45:09 +07:00
Laukik Hase 47cabb21e8 fix(esp_tee): Validate REE-supplied memory bounds (esp_tee_app_config) before use 2026-08-04 12:11:43 +05:30
Laukik Hase b85a7b0e14 fix(esp_tee): Validate the stack pointer at the privilege switch boundary 2026-08-04 12:11:42 +05:30
Jiang Jiang Jian 7bcd65c9be Merge branch 'fix/fix_esp_tee_iv_length_check_v6.0' into 'release/v6.0'
feat(esp_tee): ESP-TEE Security Audit fixes (v6.0)

See merge request espressif/esp-idf!50851
2026-07-22 10:37:48 +08:00
Laukik Hase 3fd876dffa feat(esp_tee): Restrict REE access to TEE-owned secure storage keys 2026-07-17 18:15:37 +05:30
Laukik Hase c0b1a5a71c fix(esp_tee): Miscellaneous optimizations and fixes
Closes https://github.com/espressif/esp-idf/issues/18591
2026-07-17 18:15:37 +05:30
Ashish Sharma 8dc04e5fda fix(esp_tee): ensure hal assert is enabled for tee builds 2026-07-17 18:15:37 +05:30
Ashish Sharma dc44ca9a86 fix(esp_tee): enforce MMU-map vaddr validity at the REE->TEE boundary 2026-07-17 18:15:36 +05:30
Ashish Sharma d85cb8d7cc fix(esp_tee): fix DS-lock leak, intr-matrix OOB, calloc overflow, attestation leak 2026-07-16 18:24:47 +08:00
Ashish Sharma 2c26dfc51b fix(esp_tee): fixes double panic when ESP-TEE panics 2026-07-10 10:32:32 +05:30
Ashish Sharma dc48cc5059 fix(esp_tee): release SHA held by HMAC after crypto peripheral reset 2026-07-10 10:32:32 +05:30
Mahavir Jain ce7b803aac Merge branch 'fix/esp_tee_heap_poison_v6.0' into 'release/v6.0'
fix(esp_tee): Prevent TEE from dispatching the REE heap poisoning callback (v6.0)

See merge request espressif/esp-idf!49911
2026-06-29 11:21:31 +05:30
Mahavir Jain 732111f75a Merge branch 'feat/esp_tee_backports_v6.0' into 'release/v6.0'
feat(esp_tee): Feature/fixes backports to `release/v6.0`

See merge request espressif/esp-idf!48486
2026-06-29 11:21:13 +05:30
Laukik Hase 9ce63d8dfa fix(esp_tee): Add additional input validation checks for TEE service calls 2026-06-26 17:59:26 +05:30
Laukik Hase 00cff977c6 fix(esp_tee): Avoid crypto peripherals reset with esp_restart() from REE
- Reset the crypto peripherals during TEE initialization
2026-06-26 15:07:23 +05:30
Laukik Hase e1bbb70278 fix(esp_tee): Prevent TEE from dispatching the REE heap poisoning callback 2026-06-26 15:07:22 +05:30
Laukik Hase e32bf61924 Merge branch 'fix/esp_tee_bbp_v6.0' into 'release/v6.0'
fix(esp_tee): Harden TEE secure services against REE manipulation (v6.0)

See merge request espressif/esp-idf!49369
2026-06-18 12:36:20 +05:30
Laukik Hase 39a4cf5e56 feat(esp_tee): Clear out all sensitive buffers explicitly after TEE crypto operations 2026-06-12 10:04:07 +05:30
Laukik Hase 6af1af7d99 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:06:26 +05:30
harshal.patil 6b8f830991 fix(esp_tee): Reset crypto peripherals before the panic-induced reset 2026-06-09 15:07:55 +05:30
Xiao Xufeng 475ec39cb4 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-15 17:31:37 +08:00
Aditya Patwardhan 0e1e1e79aa 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-30 10:17:53 +05:30
Laukik Hase 440a5d1906 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-17 17:33:11 +05:30
Laukik Hase 7867f4a575 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-08 14:05:28 +05:30
harshal.patil fe3b5ca898 fix(esp_security): Add more validation checks 2026-03-23 10:46:23 +05:30
harshal.patil 45d5ef45a5 feat(esp_ds): Support using the AES key used by DS peripheral for encrypting params 2026-03-23 10:46:22 +05:30
Laukik Hase 83e2777a3b 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-20 10:54:14 +05:30
Laukik Hase 68d31180f0 fix(esp_tee): Prevent IV reuse in the TEE secure storage AES-GCM service 2026-02-11 12:29:52 +05:30
Jiang Jiang Jian 31056d5db9 Merge branch 'refactor/spi_flash_private_v6.0' into 'release/v6.0'
refactor(spi_flash): reorganize header files, improve encapsulation and simplify ROM implementation (v6.0)

See merge request espressif/esp-idf!45488
2026-02-02 10:57:34 +08:00
Mahavir Jain 78464dfab7 Merge branch 'refactor/create_esp_hal_security_v6.0' into 'release/v6.0'
refactor: Created esp_hal_security component (v6.0)

See merge request espressif/esp-idf!45349
2026-01-31 10:28:48 +05:30
Aditya Patwardhan e26b33cc3a fix(esp_tee): Update linker scripts for apm_hal move to esp_hal_security 2026-01-30 17:12:55 +05:30
Aditya Patwardhan 4d3cfefc2e refactor(esp_hal_security): Updated esp_hal_security build and includes 2026-01-30 17:12:54 +05:30
Laukik Hase 1752290f02 feat(esp_tee): Migrate TEE attestation to the PSA interface 2026-01-29 11:49:15 +05:30
Laukik Hase 304adb120b refactor(esp_tee): Adopt Picolibc as the default LibC for ESP-TEE build
- Also fixed an issue where NewLib ROM APIs, when called from TEE, were
  using the syscall table located in the REE SRAM. This could be abused
  as an attack vector to invoke illegal functions from the TEE.
  To prevent this, the syscall table is now switched to the TEE-specific
  copy during every M-U mode transition.
2026-01-29 11:49:15 +05:30
Laukik Hase 421246323a feat(esp_tee): Add support for the RISC-V H/W stack guard mechanism 2026-01-29 11:49:14 +05:30
Xiao Xufeng 3411286544 refactor(spi_flash): reorganize header files and improve API encapsulation
This commit reorganizes SPI flash header files to better reflect their
visibility and intended usage:

1. Rename `esp_flash_port/` to `esp_flash_chips/`:
   - Better reflects that these headers are for chip driver implementations
   - All chip driver headers moved to `esp_flash_chips/` directory
   - Added README.md explaining semi-public nature of these headers

2. Move internal headers to `esp_private/`:
   - `esp_flash_internal.h` -> `esp_private/esp_flash_internal.h`
   - `memspi_host_driver.h` -> `esp_private/memspi_host_driver.h`

3. Move chip driver related headers to `esp_flash_chips/`:
   - `esp_private/esp_flash_types.h` -> `esp_flash_chips/esp_flash_types.h`
   - `spi_flash/spi_flash_defs.h` -> `esp_flash_chips/spi_flash_defs.h`
   - `spi_flash_override.h` -> `esp_flash_chips/spi_flash_override.h`
   - All `spi_flash_chip_*.h` headers moved to `esp_flash_chips/`

4. Code improvements:
   - Remove unused includes (e.g., `spi_flash_override.h` from `cache_utils.c`)
   - Use public API `esp_flash_get_size()` instead of direct member access
   - Add `esp_flash_is_quad_mode` to linker.lf for IRAM placement

5. Documentation updates:
   - Add README.md in `esp_flash_chips/` explaining semi-public headers
   - Update programming guide with warnings about internal headers
   - Update both English and Chinese documentation

6. Update all references across the codebase:
   - Update includes in `spi_flash` component
   - Update `bootloader_support`, `app_update`, `esp_tee`, `espcoredump`
   - Update example projects

Breaking changes:
- Headers moved to new locations require include path updates
- `custom_flash_driver` example temporarily disabled until external
  components are updated
2026-01-29 03:28:30 +08:00
Ashish Sharma b02538834c fix: resolves MR comments 2025-12-20 23:02:25 +08:00
Ashish Sharma 76287081ea feat: code cleanup 2025-12-19 07:29:43 +08:00
Ashish Sharma f306dbea84 feat(mbedtls): migrates ESP-TEE with PSA APIs 2025-12-19 07:28:33 +08:00
Alexey Lapshin 068fefad68 fix(esp_tee): build esp_tee only with CONFIG_LIBC_NEWLIB to reduce size 2025-12-06 00:08:35 +07:00
Laukik Hase 2394e9451d feat(esp_tee): Support for ESP32-C61 - the esp_tee component 2025-11-19 10:57:42 +05:30
Laukik Hase f307e80fe2 feat(esp_tee): Enable MSPI tuning for Flash and PSRAM 2025-11-13 15:38:13 +05:30