【问题标题】:Why is executing callback functions in kernel mode bad?为什么在内核模式下执行回调函数不好?
【发布时间】:2017-03-05 01:52:42
【问题描述】:

为什么从用户空间调用内核空间中的回调函数被认为是“坏”而不是从用户空间调用用户空间中的回调函数?

【问题讨论】:

  • 上一个问题的答案很模糊。
  • 你能详细说明你的意思吗?您是说从用户空间调用内核空间中的回调函数还是从用户空间调用用户空间中的回调函数?或者您的意思是从内核空间调用内核空间中的回调函数与从用户空间调用用户空间中的回调函数?
  • 内核代码使用了很多回调,因为它是使用 OOP 编写的。
  • @gluxosdever 我已经更新了这个问题。我正在学习操作系统中的回调函数,并阅读到在内核模式下运行回调函数会产生负面影响,尤其是安全性,但没有详细说明。

标签: c linux-kernel operating-system kernel


【解决方案1】:

有些系统支持此类回调。例如:

http://h41379.www4.hpe.com/doc/732final/4527/4527pro_001.html#index_x_190

在这种情况下,您的进程必须具有适当的权限才能在内核模式下执行。

允许代码在内核模式下执行会使系统面临崩溃和安全漏洞。

【讨论】:

    【解决方案2】:

    允许用户在内核模式下执行代码会带来巨大的安全风险。也就是说,如果用户空间程序在内核模式下执行,则没有安全性:游戏完全丢失,用户可以完全访问所有人和所有内容。

    考虑一下,如果您在内核模式下执行,则虚拟内存查找不再受特权级别保护。在 x86 中,当处于内核模式时,您的权限级别为 0;这意味着您可以访问物理内存中的任何内容。所以,如果一个进程的回调在内核空间中执行,它就可以在机器上做它想做的任何事情。

    想要清除每个人的页表? K. 想要查看那些页表中的内容?你说对了。想要将内核内存归零并导致整个系统崩溃? lz好主意。想要破解机器上的另一个进程以记录其 I/O 流量?似乎合法。

    不要让用户在内核空间中运行代码。

    【讨论】:

      猜你喜欢
      • 2015-10-15
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 2020-01-06
      • 2021-07-31
      • 2014-01-25
      相关资源
      最近更新 更多