自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 收藏
  • 关注

原创 SGXFuzz软件栈

SGXFuzz软件栈

2022-12-20 16:17:19 542 3

原创 OCaml实用工具

Ocaml入门

2022-09-25 00:17:51 1179

原创 使用Intel Vtune分析SGX应用性能

使用Intel Vtune分析SGX应用性能

2022-06-24 11:41:11 375

原创 Gramine(原graphene-sgx)软件栈

Gramine(原graphene-sgx)软件栈

2022-06-05 19:02:30 1261 2

原创 《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】Ocall Proxy处调用Ocall出现异常的解决办法

【SGX】Ocall Proxy处调用Ocall出现异常的解决办法

2021-12-18 17:13:46 335

原创 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

原创 SGX_SQLite【源码分析】

SGX_SQLite【源码分析】

2021-11-04 21:30:46 722 9

原创 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

原创 ASAN Runtime【源码分析】(一)——初始化

ASAN Runtime【源码分析】(一)——初始化

2021-10-08 00:07:05 2693

原创 《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

原创 LLVM Pass

LLVM Pass

2021-08-14 13:52:48 781

原创 ASAN Pass【源码分析】(五)——插桩

ASAN Pass【源码分析】(五)——插桩

2021-08-12 18:13:05 1973

原创 ASAN Pass【源码分析】(四)——运行

ASAN Pass【源码分析】(四)——运行

2021-08-08 14:41:43 624

原创 ASAN Pass【源码分析】(三)——初始化

ASAN Pass【源码分析】(三)——初始化

2021-08-06 23:56:08 1258

原创 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

原创 ASAN Pass【源码分析】(二)——调试环境准备

ASAN Pass【源码分析】(二)——调试环境准备

2021-08-04 19:23:05 943 2

原创 ASAN Pass(一)——简单分析

ASAN Pass(一)——简单分析

2021-08-01 22:43:13 1262

原创 《COIN Attack (ASPLOS‘20)》笔记

《COIN Attack (ASPLOS‘20)》笔记

2021-07-19 22:45:44 332

原创 COIN Attacks【源码分析】

COIN Attacks【源码分析】

2021-07-16 17:32:13 343

原创 《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

原创 找资料之程序分析

符号执行简单理解符号执行技术污点传播简单理解污点分析技术

2021-05-30 23:05:17 223

原创 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关注的人

提示
确定要删除当前文章?
取消 删除