update info more accurate

This commit is contained in:
fanfuqiang 2019-09-30 23:08:35 +08:00
parent 88ae21a33c
commit 9d10e90565
2 changed files with 5 additions and 5 deletions

View File

@ -25,7 +25,7 @@ Control-flow integrity(CFI)是针对这种攻击进行防御的。此外常规
自从CFI[@Abadi05]提出以来各种实现层出不群包括gcc upstream里的vtv以及LLVM cfi。不过这些实现有明显的硬伤vtv防御
virtual tableLLVM cfi只是一个forward cfi实现没有backward部分。比较而言PaX/Grsecurity RAP[@PaX18]对于kernel级别的
防护是最理想的选择不经包括forward而且包括backward实现backward cfi的实现应该是业界第一个也是唯一一个可以进入生产环境
防护是最理想的选择不经包括forward而且包括backward实现backward cfi的实现应该是业界第一个也是为数不多的可以进入生产环境
的。
### 贡献
@ -139,7 +139,7 @@ insertHashValueCheckBeforeCurrentIndirectCall(currentPointer, hashValue);
1) 因为RAP没有使用pointer analysis所以会对全部函数都输出hash值。
2) 上面的伪代码在RAP的实现上是在tree-ssa表示层所以其实是几条gimple等效的伪代码但是RAP的实现上这些gimple代码是作为一个整体插入gcc的而且插入的位置是gcc的所有tree-ssa优化pass之后也就是gcc根本不会感知到这些代码的存在也就是说gcc不会去分析这些代码也不会去优化这些代码。
3) 安全上的考虑RAP的实现是针对函数类型编码hash所有函数类型都是同一个hash值所以这是一个可能的漏洞。
3) 安全上的考虑RAP的实现是针对函数类型编码hash所有函数类型都是同一个hash值所以这是一个可能的漏洞利用平面
基于以上的三个问题所以我们给出了Hardenedlinux hl-cfi的实现(hl的意思high level)。
@ -223,7 +223,7 @@ for all gimple code of all function
### RAP backward cfi
为了解决 __ret__ 的问题PaX Team提出了世界上大概唯一一个backward cfi的软件实现方案。
为了解决 __ret__ 的问题PaX Team提出了backward cfi的软件实现方案。
```
for all rtl code of all function
@ -243,8 +243,8 @@ insertRetCheck(retAddress, hashValue)
catchAttack();
```
对于backward cfi来说这大概是业界唯一的实现而且跟RAP forward cfi的一样也是一串没有经过编译器优化的代码直接出现在输出
的object里不过这是唯一的算法,实在想不到优化的方案只能期待硬件更新支持backward cfi比如类似ARM PA[@zet17]。
对于backward cfi来说这大概是业界仅有的几个的实现而且跟RAP forward cfi的一样也是一串没有经过编译器优化的代码直接出现
在输出的object里不过想不到优化的方案只能期待硬件更新支持backward cfi比如类似ARM PA[@zet17]以及intel SGX等
## 4 结论