微软工程师提出改善Linux安全性的“Trampfd”

2020-07-30 16:52:08

我们依赖您的支持:本网站主要由广告支持。广告使这个网站在过去的16年里得以维持。我们尽最大努力确保只显示干净、相关的广告,当检测到任何令人讨厌的广告时,我们会尽快将其删除。如果您想浏览没有广告的网站,同时仍然支持我们的工作,请考虑我们的无广告Phoronix溢价。你也可以考虑通过贝宝支付小费。一位微软工程师提议将蹦床文件描述符TRAMPFD&34;作为一种新的内核API,用于安全地处理系统上的蹦床代码。已经有人担心潜在的性能影响,但似乎确实有人对此方法感兴趣。TRAMPFD的目标是更好地保护GCC嵌套函数和外部函数接口库(LIBFI)等人使用的蹦床代码,在这些库中,包含指令的页面往往被映射到EXECUTE权限。虽然有Linux安全模块和SELinux试图保护同时具有写入和执行权限的页面,但微软的Madhavan Venkatarama的目标是提供一种安全执行蹦床的方法,而不会造成任何安全异常,并进一步减少潜在的攻击面。TRAMPFD的目标是提供一个由匿名文件描述符支持的内核API,可用于创建和执行蹦床。内核在没有任何权限的情况下创建蹦床映射。当用户代码执行蹦床时,会发生页面错误,内核会获得控制权。内核识别出这是一个蹦床调用。它基于指定的寄存器上下文设置用户寄存器,和/或基于指定的堆栈上下文推送用户堆栈上的值,并将用户PC设置为所请求的目标PC。当内核返回时,在目标PC上继续执行。因此,内核代表应用程序执行蹦床的工作。在这种情况下,攻击面是上下文缓冲区。黑客可能会攻击具有漏洞的应用程序,并且可能能够修改上下文缓冲区。因此,当为蹦床设置寄存器或堆栈上下文时,这些值可能已被篡改。从攻击面的角度来看,这类似于蹦床仿真。但使用trampfd,用户代码可以从内核检索蹦床的上下文,并添加防御性检查以查看上下文是否被篡改。

蹦床文件描述符旨在可定制,为将来的蹦床类型提供一个框架,并提供其他内核功能。到目前为止,通过这个内核邮件列表线程,可以了解更多关于这项建议的TRAMPFD内核工作和随后的内核讨论的详细信息。