首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Linux内核安全的几个基本问题

关于Linux内核安全的几个基本问题
EN

Unix & Linux用户
提问于 2014-12-15 07:46:15
回答 1查看 571关注 0票数 8

我对Linux内核不太了解,我也有一些问题。

  1. 将内核内存与用户空间内存分离的主要目的是什么?以确保用户应用程序不能对内核做任何坏事?
  2. 对于一个用户级应用程序,有多少种方法可以将控制转移到内核?我想出的内容包括:(1)调用系统调用;(2)将内存映射到内核(但我认为mmap()也是一个系统调用);(3)加载内核模块(但我猜lsmod也会调用某些系统调用)。我说的对吗?还有其他我错过的方式吗?
  3. 攻击内核的方法有多少种?能告诉我一些关于他们的简短细节吗?
  4. 如果我获得根特权,是否意味着我完全控制了内核?也就是说,我可以用内核和硬件做我想做的任何事情?还是我在内核上的力量还是有限的?

如果有人能帮我找出这些问题的答案,我会非常感激的。

EN

回答 1

Unix & Linux用户

发布于 2014-12-15 09:00:04

我将尽量简短地回答问题。你提出的问题通常是在大学的操作系统入门课程中提到的,但我假设你没有上过这样的课程。

  1. 用户空间进程的内存隔离是非常可取的--不仅是为了保护内核免受恶意用户空间程序的攻击,而且也是为了保护用户空间程序之间的相互保护。这通常被称为虚拟存储器。它还使实现分页变得更容易,这也是出于其他原因(更简单的碎片、更简单的链接器/加载器等)所需要的。
  2. 中断(并不是所有的中断都控制在用户级应用程序中)。放弃处理器也会将“控制”从进程(例如,wait等也是系统调用)中拿走。内核本身可能决定取消应用程序的调度。
  3. 这是一个非常广泛的问题。执行不力的系统调用的内核易受攻击。写到物理内存的能力将是另一种方式。还有一些其他漏洞可能是由于执行不当的指令而产生的(例如,Intel处理器中的sysret漏洞)。
  4. 根权限与内核权限不一样。作为根用户运行的应用程序仍在使用虚拟内存,仍然需要进行系统调用,仍然必须遵守任何用户级应用程序必须遵守的其他规则。

如果你想让我提供更多关于一些答案的细节,请告诉我。

如果有人可以改进其中的一些答案,请随时指出它。

票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/174297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档