日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ASLR in optee

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASLR in optee 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

        • 1、overview
        • 2、ASLR for OP-TEE Core
        • 3、Random seed
        • 4、Building
        • 5、Relocate
        • 6、Mappings
        • 7、Possible locations
        • 8、TA load

思考:
1、什么是ALSR?
2、在OPTEE Core中如何開啟ALSR?
3、在TAs中如何開啟ALSR?

1、overview

Address space layout randomization (ASLR) 是一種在運行代碼時隨機化虛擬地址的安全技術

ASLR has been supported since OP-TEE version 3.8.0.

主要目標是使利用內存損壞漏洞變得更加困難

2、ASLR for OP-TEE Core

  • 二進制文件鏈接到與物理加載地址相同的地址
  • 二進制文件加載到內存中的指定物理地址
  • 內存被映射到一個隨機的虛擬基地址

3、Random seed

  • 隨機種子(random seed)用于選擇隨機基地址
  • 如果提供,可以從dts的“/secure-chosen/kaslr-seed”節點獲取, 或者通過平臺特定于的方法提供
  • 提供值為 0 的種子將禁用 OP-TEE core的 ASLR
/* * get_aslr_seed() - return a random * seed for core ASLR * @fdt: Pointer to a device tree if * CFG_DT_ADDR=y * * This function has a __weak default * implementation. */ unsigned long get_aslr_seed(void *fdt);

4、Building

  • relocation:二進制鏈接做為與位置無關二進制
  • 僅接受相對relocations(R_ARM_RELATIVE 或 R_AARCH64_RELATIVE)
  • relocation entries被解析并簡化為添加在二進制文件末尾的地址列表
    簡化匯編代碼
    提供針對unexpected relocation類型的構建時間測試

5、Relocate

  • 二進制鏈接仍與load地址相關聯
  • load的二進制文件必須重新定位才能從新的虛擬地址執行
  • Relocation原則上很簡單:
uint32_t *rel = address_of_relocations; uintptr_t load_offset = new_address - link_address; for (n = 0; n < rel_count; n++) {uintptr_t *p = (uintptr_t *)(rel[n] + load_offset);(*p) += load_offset; }

6、Mappings

  • 基于種子創建映射
  • 還增加了一個身份映射部分
  • 僅在啟用 MMU 時才需要標識映射內存,但為了簡單起見保留

7、Possible locations

  • 虛擬位置選擇為 4KiB 的倍數
  • 可以使用整個虛擬地址范圍
  • 這在 4GiB 虛擬內存范圍的虛擬地址中提供了近 20 個隨機位
  • 如果無法使用生成的位置,則會生成新位置而不是移位

8、TA load

  • TA 始終作為位置無關的可執行文件進行編譯和鏈接
  • OP-TEE Core 在啟動時為 TA 選擇合適的虛擬內存范圍
    取決于 OP-TEE Core 使用的當前內存映射
  • TA 鏈接到地址 0
  • TA 使用 ldelf 加載(ELF loader)
  • Ldelf 將TA 重定位到第一次輸入之前已經加載的地址
  • Ldelf 與 TA 共享地址空間

ASLR for TAs

  • 地址隨機化由 ldelf 處理
  • OP-TEE Core 提供 API
  • 加載地址為每個被加載的 ELF 隨機化
  • 有效地址范圍受限于轉換表被分配到映射中的漏洞,改進空間

總結

以上是生活随笔為你收集整理的ASLR in optee的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。