- 博客(116)
- 收藏
- 关注
原创 《SmashEx: Smashing SGX Enclaves Using Exceptions(CCS 2021)》阅读笔记
《SmashEx: Smashing SGX Enclaves Using Exceptions(CCS 2021)》阅读笔记
2022-04-13 12:36:02
550
原创 【LLVM】Dynamic Alloca及Prologue/Epilogue Insertion & Frame Finalization Pass
【LLVM】Dynamic Alloca及Prologue/Epilogue Insertion & Frame Finalization Pass
2022-03-30 22:34:49
1554
原创 ASAN Pass源码分析(六)——全局变量插桩
插桩功能由ModuleAddressSanitizer::instrumentModule实现。这是个模块插桩,主要以全局变量插桩为主,也包括ASAN其它功能中所需的模块插桩功能。这里主要关注全局变量的处理。主要步骤包括:将原来的全局变量转变成一个结构体,内部包含了原来的全局变量和一个右Redzone,将原来被使用的全局变量替换(replaceAllUsesWith)成新的结构体内的全局变量,之后将所有的新全局变量结构体通过调用__asan_register_globals进行poison构建asa
2022-02-12 17:53:34
1256
原创 SGX Enclave TLS (Thread Local Storage)
TLS支持情况Enclave目前部分支持Thread Local Storage,即支持__thread限定符,但不支持thread_lcoal限定符。__thread相比thread_lcoal,只支持将变量在TLS区域分配内存,不能进行初始化等操作。为什么不能支持thread_lcoal?Enclave TLS的配置编译时,TLS的变量的常量表达式结果(如果有,若没有,用0填充)按照指定的偏移存储到.tbss Section(在ELF文件的08 Segment中)。$ readelf encl
2021-12-03 23:29:23
1169
原创 SGX问答
前言有些问题比较常见,在这里直接将问答内容贴出来,方便大家搜索。有空再重新组织文字。(我会避免泄露私人信息)内存地址翻译全部交给os,那中间经过cache也是全部交给os是嘛?这个cache这部分,enclave中是怎么处理的呢?page walk依旧是os来做,但是SGX特有的EPCM会确保这个page walk的结果是正确未被篡改的。cache属于cpu内的微架构,cpu内的数据流都是明文的。将要流向epc的数据流在离开cpu时,进入总线前,被mee加密。当epc evict时,会由指令里的
2021-11-21 19:00:05
5130
13
原创 ASAN Runtime源码分析(二)——注册全局变量
__asan_register_globals也在asan.module_ctor中调用__asan_register_globals将栈帧中的返回地址依次存入trace_buffer,当前内容只有__sanitizer::StackTrace::GetCurrentPc()和__asan_register_globals()的返回地址。
2021-10-11 21:13:26
858
原创 《Graphene-SGX: A Practical Library OS for UnmodifiedApplications on SGX (ATC‘17)》笔记
2.2 SGX Software Design SpaceSGX应用及Graphene-SGX等Shielding Framework的开发过程中面临的一个问题是把多少功能给塞进Enclave中。两个重要的考量是:由于Enclave切换环境开销大,如何尽量减少进出Enclave?由于Enclave物理内存(EPC)有限,如何避免使用内存过大导致EPC出现Swap并影响性能的情况?Shielding complexity 应用放到Enclave中有时候必须要一些内核功能,对此需要开放接口使用不可信
2021-10-03 15:46:06
867
4
原创 Kernel Double-Fetch Bug检测论文
《Precise and Scalable Detection of Double-Fetch Bugs in OS Kernels (SP’18)》(YouTube,GitHub)(它给自己取了个名叫“Deadline”)总结了前人对Double Fetch的刻画,形式化地描述了Double-Fetch Bug。作者列表中有内核安全大佬Kangjie Lu和SGX大佬Taesoo Kim。前人在Double Fetch方面的工作包括:《Bochspwn: Identifying 0-days via
2021-08-25 21:46:19
362
原创 《SGXBOUNDS: Memory Safety for Shielded Execution(EuroSys‘17)》笔记
简介在检查Enclave的内存安全问题时基于Intel MPX的方案会额外造成100倍的虚拟内存开销,当原始工作集消耗内存60M时,Enclave会因为没有空闲虚拟内存而崩溃。基于ASAN的方案会额外造成3.1倍的性能开销和3.1倍的虚拟内存开销,当原始工作集消耗700-800M时,Enclave会因为没有空闲虚拟内存而崩溃。SGXBounds利用SGX Enclave内指针高32位空闲的特点,将Tag放置其中表示内存对象的Upper Bound值(内存对象后紧跟其Lower Bound值,万一M
2021-08-19 20:56:01
474
原创 SGXRay笔记
百度XLab的SGXRay在BlackHat2021上演讲了,目前还没有相关YouTube视频。相关链接如BlackHat官网链接、Github和“百度安全实验室”公众号SGXRay提到了针对Enclave内存建模,关注跨越Enclave边界的数据流,基于SMACK进行程序验证。应该可以将其归为静态方法,在此之前有COIN Attack和TeeRex两篇使用符号执行技术进行SGX漏洞自动化挖掘的工作,TeeRex关注了Enclave输入产生的危害。...
2021-08-06 00:48:51
302
原创 Win+Ubuntu20.04双系统安装
前言Ubuntu21.04有键盘输入延迟的问题,因此我还是换回20.04吧,顺带贴一下双系统怎么装,其实很简单,网上的教程太麻烦了。Windows安装很简单请看这里Ubuntu20.04安装很简单准备—BIOS查看BIOS里SATA模式,如果为Raid On,请改为AHCI,Ubuntu不支持物理Raid。准备—分区可以用Windows磁盘管理工具,也可以用其他分区工具或者Ubuntu(PE镜像)的分区工具磁盘Disk。可以压缩卷来获得空闲分区,也可以把某个硬盘删除卷获得空间分区。准备
2021-08-05 21:28:13
497
1
原创 《SoK: Sanitizing for Security (S&P‘19)》笔记
该文强调sanitizer(动态程序分析工具)的重要性。分类已有的sanitizer,分析其发现安全问题的方法,分析其如何权衡性能、兼容性和其它细节。总结sanitizer可行的部署方法和研究方向。
2021-07-09 20:25:44
884
3
原创 内存安全概念杂记
代码重用攻击(code-reuse attack)和data-only attack的区别代码重用攻击如Jump Oriented Programming(包括指令粒度的攻击、gadgets粒度的Return Oriented Programming和函数粒度的return-to-libc)破坏control data以劫持控制流。Data-only attack如Data Oriented Programming破坏non-control data以发动攻击。内存安全破坏是破坏control dat
2021-07-06 23:56:38
936
原创 《SoK: Eternal War in Memory (S&P‘13)》笔记
简介该文针对Memory Corruption进行了系统性的分析。主要贡献包括:针对Memory Corruption攻击构建了通用模型,基于此模型定义了多种可实施的安全策略。通过对比安全策略的设计和漏洞利用各阶段的特征,发现部分攻击向量未被现有防御机制保护。从性能、兼容性和鲁棒性评估及比较现有防御方案。讨论现有方案未被实际应用的原因(缺点),及一个新方案所需要满足的要求。Memory Corruption攻击模型图1前两步①使指针Invalid(Out-of-Bounds、Deallo
2021-07-02 17:40:47
1306
原创 0xbadc0de备忘录
0xbadc0de包含针对SGX软件栈的若干漏洞利用POC。SGX-LKLSignal HandlerSample OutSample output../../build/sgx-lkl-run sgxlkl-disk.img app/helloworldsgx.c: ubase = 0x7feed8000000, size = 5d7f -> end = 0x7feed8005d7eubase = 0x7feed8000000enclave: super secret string
2021-06-22 18:21:58
295
9
原创 Ubuntu20.04安装Qemu-SGX
基本参考Here.安装kvm-sgx安装kvm-sgx,也就是安装包含了支持SGX特性的KVM的内核。但内核编译过程中会遇到关于debian/canonical-certs.pem的错误,对此可以参考Here创建一对密钥,并将公钥注册到机器上。安装qemu-sgx安装qemu-sgx前,为了支持usb-redir,需要安装一些apt包sudo apt-get install libusb-dev libusbredirparser-dev和pip包sudo pip3 install meson n
2021-06-19 22:53:33
1792
5
原创 《A Tale of Two Worlds (CCS‘19)》笔记
介绍Jo Van Bulck针对接口消毒代码( Sanitization)从ABI、API层面寻找漏洞,即 Enclave Interface Sanitization Vulnerabilities。漏洞涉及Intel SGX-SDK(Edger8r)、Microsoft OpenEnclave(Deep Copy Marshalling)、Google Asylo和Rust Compiler等项目。DarkROP、Guard‘s Dilemma更关注在Enclave利用传统内存安全漏洞,而A Tal
2021-06-08 00:15:50
613
原创 OpenEnclave简单分析
简介OpenEnclave(缩写为OE)是微软开发的TEE软件栈,它支持Intel SGX和OP-TEE OS on ARM TrustZone,【OpenEnclave提供的SGX软件栈有别于Intel SGX软件栈(如linux-sgx),两者互为替代关系】。OpenEnclave支持C/C++运行时。OpenEnclave主要的一个用途是在微软Azure云上保护目标安全。架构OpenEnclave和linux-sgx在SGX软件栈方面架构上非常相近,但实现细节有些区别。OpenEnclave
2021-06-07 15:46:27
1658
原创 《TeeRex (Sec‘20)》笔记
Introduce《TeeRex: Discovery and Exploitation of Memory Corruption Vulnerabilities in SGX Enclaves》是Tobias Cloosters、Michael Rodler、Lucas Davi发表在USENIX Security 2020的论文。主要讨论了使用符号执行技术挖掘SGX软件层内存破坏(Memory Corruption)漏洞,这一类漏洞的特征包括跨越Host-to-Enclave Boundary(这是内
2021-06-06 18:03:05
1000
6
原创 Google Asylo简单分析
简单分析了一下Google Asylo介绍Asylo 是一个开源框架,助力Enclave应用程序开发。Asylo 能够帮助Enclave开发者使用一系列新兴的可信执行环境 (TEE),包括采用软件和硬件隔离技术实现的TEE,更具体来说包括如Intel SGX、ARM TrustZone提供的Enclave。⋆ Google Asylo大量运用了ABSL库。Google Asylo与Intel SGX PSW&SDK的关系Google Asylo和linux-sgx(linux平
2021-06-02 23:33:58
854
原创 Intel CET endbr64
哪些CPU支持Intel CET?Intel CET技术在最近的Tiger Lake架构CPU上受到了支持(here)。比如至强中的Intel® Xeon® W-11955M Processor、酷睿中的英特尔® 酷睿™ i7-1185G7E 处理器。Intel CET的作用及endbr64指令Intel CET提供了影子栈及间接跳转指令追踪功能,保护控制流完整性(wiki: here)。Intel CET相关的指令如endbr64是后向(backward)兼容的。在Intel CET中,间接跳
2021-06-01 16:55:21
4859
4
原创 Linux调度器笔记
CPU核上进程调度的标识时期和真正调度时期硬件定时器触发时间中断(如针对使用时间片的SCHED_RR场景)、进程唤醒、进程创建、进程迁移时会设置进程调度标志位(TIF_NEED_RESCHED),此时相当于检查哪些进程需要被调度,但并没有实际进行调度操作。,检查是否需要调度和调度具体时机分离,因为中断中不能直接进行调度。在中断上下文返回时或系统调用返回等时候(会调用schedule函数的地方等,schedule函数包含了切出A进程及切回A进程)被动调度 系统调用返回到用户空间 中
2021-04-24 16:19:57
725
原创 修改linux-sgx软件栈时节省无关模块编译时间
在修改linux-sgx之后往往需要重新linux-sgx来验证所修改代码的效果,但是重新编译会耗费大量时间,所以可以考虑手动地单独地将所修改代码重新编译成库并拷贝到SGX安装时的路径。举例来说,如果修改了linux-sgx/sdk/trts目录下的源文件的代码,那么可以简单地对trts目录里的内容重新编译,然后将生成的库文件拷贝到${SGX安装目录}(如/opt/intel/sgxsdk)/lib中,如果是修改了linux-sgx/common/inc/里的向外暴露的头文件,可以将修改后的头文件直接拷
2021-04-22 17:18:05
225
原创 PMI Group assignment model中Direct group naming和Group role naming的区别
Group Attribute Certificate定义了一个组具备的属性、权限。GAC会被分配给组内的成员。组成员主要通过如下两个方式被分配属性、权限。Direct group naming。Group Attribute Certificate的Holder域的entityName选项中设置目录名,Attributes域设置好对应的属性,目录名在Directory Information Tree中构建起一棵子树。子树中每一项(组成员)都被赋予组属性证书中的属性权限。所以说是直接命名了一个组,每次
2021-03-03 16:05:17
175
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人