利用分支预测器绕过ASLR的安全研究

0 下载量 36 浏览量 更新于2024-08-25 收藏 896KB PDF 举报
"Jump Over ASLR - Attacking Branch Predictors to Bypass ASLR - 2016 (micro16)" 是一篇关于计算机安全的研究论文,由Dmitry Evtyushkin、Dmitry Ponomarev和Nael Abu-Ghazaleh共同撰写。这篇论文探讨了如何利用分支预测器来绕过地址空间布局随机化(ASLR)这一广泛使用的安全防御技术。 地址空间布局随机化(ASLR,Address Space Layout Randomization)是操作系统为了防止恶意攻击而采用的一种方法,它通过随机化程序在虚拟内存中的位置,使得攻击者难以确定特定代码对象的地址,从而难以控制程序流程。ASLR主要针对缓冲区溢出、返回导向编程(ROP)等类型的攻击提供保护。 论文中,作者提出了一种新的攻击策略,称为“Jump Over ASLR”。这种攻击利用了分支目标缓冲区(BTB,Branch Target Buffer)的侧信道攻击。BTB是现代处理器中用于优化分支指令执行的一种硬件结构,它存储了最近的分支目标地址,以提高预测分支目标的准确性。攻击者通过创建其进程中的分支指令与受害者用户级程序或代表内核执行的分支指令之间的BTB冲突。这些冲突允许攻击者获取内核和用户级ASLR的偏移量,即使ASLR已经启用,也能有效地破坏其安全性。 具体来说,攻击过程包括以下步骤: 1. 创建BTB碰撞:攻击者精心设计并执行特定的分支序列,使得它们的分支目标与受害者程序或内核的分支目标在BTB中发生冲突。 2. 监测和分析:通过监控这些碰撞,攻击者可以推断出受害者程序或内核的某些部分在内存中的相对位置。 3. 利用信息:一旦获得了足够的信息,攻击者就能精确地定位关键代码的位置,从而绕过ASLR,执行恶意代码。 这项研究揭示了ASLR并非无懈可击,硬件级别的优化如分支预测器也可能成为攻击的入口。因此,对于系统安全研究人员和开发者而言,理解并防范这类攻击至关重要,可能需要对ASLR的实现进行改进,或者寻找新的防御机制来应对这种新型攻击。 此外,该论文还可能讨论了防御此类攻击的方法,如增强BTB的安全性,限制对BTB的访问,或者使用更复杂的随机化策略来增加攻击的难度。这样的研究对于提高软件和系统的整体安全性具有深远的意义。

"/pkg/qct/software/llvm/release/arm/14.0.0/bin/clang" -g -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -funsigned-char -ffunction-sections -fdata-sections -fno-builtin -Wno-address -fno-asynchronous-unwind-tables -target aarch64-linux-gnu -fcolor-diagnostics -fdiagnostics-format=vi -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unknown-warning-option -Wno-unused-function -Wno-bitwise-op-parentheses -mcmodel=small -ffixed-x18 -mstrict-align -fstack-protector -Wno-nonportable-include-path -Wno-misleading-indentation -fno-common -mtune=cortex-a53 -I/home/chen-docker/bin/boot/boot_images/BuildLogs/QcomPkg/SocPkg/LeMans/AU/Include -include /home/chen-docker/bin/boot/boot_images/boot/QcomPkg/Include/Library/DebugLib.h -DQCOM_EDK2_PATCH -DDISABLE_DEP -DENABLE_XN -DENABLE_ASLR -DENABLE_DEP_64 -DENABLE_EXEC_CODE_READY_TO_BOOT -DENABLE_AUTO_PLAT -DMAX_DDR_REGIONS=6 -mstrict-align -mcpu=cortex-a53 -DPRODMODE -c -o /home/chen-docker/bin/boot/boot_images/Build/LeMansAU/Core/RELEASE_CLANG140LINUX/AARCH64/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib/OUTPUT/./HiiLib.obj @/home/chen-docker/bin/boot/boot_images/Build/LeMansAU/Core/RELEASE_CLANG140LINUX/AARCH64/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib/OUTPUT/inc.lst /home/chen-docker/bin/boot/boot_images/edk2/MdeModulePkg/Library/UefiHiiLib/HiiLib.c /pkg/qct/software/llvm/release/arm/14.0.0/bin/clang: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory GNUmakefile:373: recipe for target '/home/chen-docker/bin/boot/boot_images/Build/LeMansAU/Core/RELEASE_CLANG140LINUX/AARCH64/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib/OUTPUT/HiiLib.obj' failed Building ... /home/chen-docker/bin/boot/boot_images/edk2/MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf [AARCH64] make: *** [/home/chen-docker/bin/boot/boot_images/Build/LeMansAU/Core/RELEASE_CLANG140LINUX/AARCH64/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib/OUTPUT/HiiLib.obj] Error 127 make: Nothing to be done for 'tbuild'. build.py... : error 7000: Failed to execute command make tbuild [/home/chen-docker/bin/boot/boot_images/Build/LeMansAU/Core/RELEASE_CLANG140LINUX/AARCH64/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib]错误在哪里?

2023-07-20 上传