如何增强Linux内核中的访问控制安全
副问题[/!--empirenews.page--]
配景 前段时刻,我们的项目组在帮客户办理一些操纵体系安详规模的题目,涉及到windows,Linux,macOS三大操纵体系平台。无论什么操纵体系,本质上都是一个软件,任何软件在一开始计划的时辰,都不能百分之百的满意人们的需求,以是操纵体系也是一样,为了尽也许的满意人们需求,不得不提供一些供人们定制操纵体系的机制。虽然除了官方提供的一些机制,也有一些黑邪术,这些黑邪术不被保举行使,可是偶然辰面临详细的营业场景,可以作为一个参考的思绪。 Linux中常见的拦截过滤 本文着重先容Linux平台上常见的拦截:
动态库挟制 Linux上的动态库挟制首要是基于LD_PRELOAD情形变量,这个情形变量的首要浸染是改变换态库的加载次序,让用户有选择的载入差异动态库中的沟通函数。可是行使不妥就会引起严峻的安详题目,我们可以通过它在主措施和动态毗连库中加载此外动态函数,这就给我们提供了一个机遇,向别人的措施注入恶意的代码。 假设有以下用户名暗码验证的函数:
我们再写一段hookStrcmp的措施,让这个较量永久正确。
依次执行以下呼吁,就会使我们的hook措施先执行。
功效会发明,我们本身写的strcmp函数优先被挪用了。这是一个最简朴的挟制 ,可是假如挟制了相同于geteuid/getuid/getgid,让其返回0,就相等于袒露了root权限。所觉得了安详起见,一样平常将LD_PRELOAD情形变量禁用掉。 Linux体系挪用挟制 最近发此刻4.4.0的内核中有513多个体系挪用(许多都没用过),体系挪用挟制的目标是改变体系华夏有的体系挪用,,用我们本身的措施替代原有的体系挪用。Linux内核中全部的体系挪用都是放在一个叫做sys_call_table的内核数组中,数组的值就暗示这个体系挪用处事措施的进口地点。整个体系挪用的流程如下: 当用户态提倡一个体系挪用时,会通过80软间断进入到syscall hander,进而进入全局的体系挪用表sys_call_table去查找详细的体系挪用,那么假如我们将这个数组中的地点改成我们本身的措施地点,就可以实现体系挪用挟制。可是内核为了安详,对这种操纵做了一些限定:
对付以上两个题目,办理方案如下(要领不止一种):
1. 开始替代体系挪用 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |