如何使用SGXRay自動化檢測SGX應用中的安全漏洞
VSole2022-08-18 16:55:29
關于SGXRay
Intel SGX采用基于應鍵的內存加密技術來保護獨立應用程序邏輯和敏感數據。要使用這種基于硬件的安全機制,需要嚴格的內存使用編程模型,開發者需要應用謹慎的編程實踐來確保程序的安全。
SGXRay是一種基于SMACK驗證器的自動推理工具,可以幫助廣大研究人員自動檢測SGX安全漏洞。目前,SGXRay基于兩個SGX SDK實現其功能,即Intel SGX SDK和OpenInclave SDK,用戶可以選擇使用SDK代碼來進行更加詳細的安全分析。
工具使用
下圖顯示的是SGXRay的工作流程:

運行SGXRay需要兩個步驟,第一步就是獲取目標應用程序的LLVM IR文件,而第二部就是調用SGXRay的命令行接口來進行安全性驗證。
針對第一步,我們為每一個SDK都提供了對應的Docker鏡像:
docker pull baiduxlab/sgx-ray-frontend-intel docker pull baiduxlab/sgx-ray-frontend-oe
針對第二部,我們同樣提供了一個Docker鏡像:
docker pull baiduxlab/sgx-ray-distro:latest
Docker構建
我們提供了一個Dockerfile,它可以幫助在驗證過程構建鏡像文件:
git clone https://github.com/baiduxlab/sgxray.git && cd sgxray docker build . -t sgx-ray-distro-local --build-arg hostuid=$UID -f Dockerfiles/Dockerfile-CLI
成功完成上述操作之后,我們將生成一個名為sgx-ray-distro-local的鏡像文件,其中提供了一個跟主機賬號相同用戶ID的“user”用戶可供我們使用。
安全驗證
當前,驗證步驟只能在我們所提供的Docker鏡像中執行,我們建議大家使用下列命令在我們的設備上執行驗證:
cd <project/enclave> # go to the enclave directory that contains the bc file generated in the last step docker run --rm -it -v $(pwd):/sgx -w /sgx --user $UID baiduxlab/sgx-ray-distro
在容器中,你將能夠直接調用SGXRay的命令行接口“sgx-ray”。
VSole
網絡安全專家