Apple近几年软硬件协同防护技术总结

最近我阅读了一些参考资料, 学习了Apple近几年的软硬件协同的漏洞防护技术, 特此总结如下, 希望是正确的:

RoRgn: 若干MMIO寄存器, 存储了一个物理地址范围, 该范围内的物理地址不可被写入。

KTRR: 处理器核里面的若干控制寄存器, 存储了一个物理地址范围, 在开启MMU的情况下, EL1 (内核态)仅能执行该范围内的代码, 即使其他页在页表中有执行权限。一般这个范围是RoRgn的范围的子集。

APRR: 页表项中的权限位不再被看成是权限位, 而是一个索引号。处理器核中引入若干控制寄存器, 指定每个索引对应的真实的页权限是什么, 同时还有寄存器可以消去每个索引的特定权限。似乎有点类似于Intel MPK技术。

PPL: 将页表等敏感数据放置在特定内存页(PPL数据), 同时, 将访问页表等敏感数据的内核代码独立出来, 放在特定内存页(PPL代码)。利用APRR机制, 通过在进出PPL代码时修改权限, 仅允许内核在进入PPL代码后且在退出PPL代码前, 访问这些PPL数据, 或者执行PPL代码。为了使得内核其他部分能够调用这些PPL代码, 该机制设置了蹦床, 这是PPL代码的唯一入口点。

ARM PA: 略。

此外, 据了解, 这些方案都能够被绕过, 我需要进一步学习。

参考资料:

  1. https://siguza.github.io/KTRR/
  2. https://siguza.github.io/APRR/
  3. https://xerub.github.io/ios/kpp/2017/04/13/tick-tock.html
  4. http://newosxbook.com/articles/CasaDePPL.html
  5. https://i.blackhat.com/USA-19/Thursday/us-19-Krstic-Behind-The-Scenes-Of-IOS-And-Mas-Security.pdf
  6. https://github.com/ssd-secure-disclosure/typhooncon2019/blob/master/Siguza%20-%20Mitigations.pdf
  7. https://googleprojectzero.blogspot.com/2019/02/examining-pointer-authentication-on.html

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/16101QrCode