0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

设计LSM钩子提升Linux漏洞安全性

Linux阅码场 来源:Linux阅码场 作者:Linux阅码场 2022-07-11 10:55 次阅读

Tracee是一个用于Linux的运行时安全性和取证的开源项目,用于解决常见的Linux安全性问题。通过利用Linux扩展的Berkeley Packet Filter (eBPF)的技术优势,在内核运行时跟踪系统和应用程序,以便获取相应的数据信息。Tracee分析收集的事件可以用来检测可疑的行为模式,在本文中,我将分享从使用eBPF和Linux安全模块(LSM)钩子的角度,来分析在解决Linux漏洞(如TOCTOU类型)中学到的经验教训。

设计LSM钩子来提升安全性

在正在运行的应用程序中,通常是通过系统调用与操作系统进行交互。出于这个原因,安全从业者会使用系统调用来分析运行中的应用程序的行为。重点在于选择收集系统调用的方法,因为获取到的参数值和操作系统实际使用的参数值之间可能存在差距。

eBPF允许在无需更改内核源代码或加载内核模的情况下,在Linux内核中运行沙盒程序。通过使用kprobes附加到Linux Security Module (LSM)挂钩上,我们可以收集内核实际使用的参数值。下面是具体使用LSM钩子需要克服的一些问题:

准确理解相对路径

在Linux中,当从用户程序中读取信息时,path参数可以包含一个相对路径。

例如,当调用一个程序时,Tracee可以使用以下参数获取一个系统调用:

·open(“。./。./directory/file”, O_RDONLY)

·open(“。/test/。./。./directory/file”, O_RDONLY)

这些系统调用中的路径可能指向相同的位置,但问题来了,根据给定的参数,很难精确定位绝对且始终唯一的规范路径。在构建安全策略时,规范路径的重要性变得更加明显,因为相对路径的意图和效果可能太过模糊。

找出链接文件

例如,用户程序给出的某个文件的参数值可能会包含指向其他文件的链接。在Linux中,我们可以创建到一个文件的符号链接,其方式是一个文件充当另一个文件或目录的引用。操作系统使用符号链接到达被链接的文件,并执行给定的命令。请看下面的例子,创建了一个名为python的文件,并将其链接到一个恶意的二进制文件my_malware:

1b2be154-00c1-11ed-ba43-dac502259ad0.png

当运行python时,我们可以看到Tracee跟踪了两个事件。其一是带有参数值的系统调用 。/python。但实际上,python是象征性地链接到~/bin/my_malware,第二个就是被Tracee捕获的security_bprm_check事件返回了实际执行的文件的路径名。

1b406f3e-00c1-11ed-ba43-dac502259ad0.png

TOCTOU分析

当试图获取用户程序的参数值时,如果只分析系统调用参数,结果可能会受到条件竞争的影响而错过关键细节。这是因为在获取信息后,用户程序可以基于另一个并发线程,来进行更改系统调用参数。

例如,当调用一个程序时,Tracee可以使用以下参数获取一个系统调用:

execve(“/bin/ls”, NULL, 0)

1b54634a-00c1-11ed-ba43-dac502259ad0.png

在进程中某一线程和内核调用执行Syscall之间会存在同一时间点。在这个时间点开始阶段,通过使用指向进程地址空间中内存位置的指针,pathname参数被传递给内核。在这个期间,进程的另一个线程可以快速更改路径名,最后内核来更新路径名。

继续我们的例子,另一个线程可以将第一个参数从/bin/ls更改为/bin/malicious,后者将由内核执行,而前者将由Tracee记录。这个场景被称为TOCTOU竞态。攻击者可以利用它来影响检查和真正使用之间的记录值,这样会导致收集到的数据不准确,并误导安全研究人员或自动检测工具。

基于上面的原因,决定在Tracee中连同Syscall数据一起使用LSM钩子来进行追踪。像security_file_open这样的事件,包含内核实际使用的路径名,并与上报的常规Syscall事件交叉引用。

简化分析过程

我们都知道在Linux中,Everything is a file这句著名的口号(https://en.wikipedia.org/wiki/Everything_is_a_file),是的,所有东西都是文件,需要使用文件描述符才能与之交互。当打开一个文件时(例如使用open),你会收到一个文件描述符。使用这些系统调用openat, unlinkat, execveat, accept, connect, bind, listen等等来与打开的文件进行交互。由于这个原因,如果我们想要分析在一个文件上执行的操作,那就必须跟踪其打开的文件描述符,而Socket允许在不同的程序之间传递打开的文件描述符,这样就会使分析更加困难。

对于使用Tracee的LSM钩子事件,跟踪文件描述符变得无关重要,因为LSM事件已经包含了相关的数据,比如完整的路径名。这使得在分析问题时可以避免上述的影响,更加简化分析流程。

结论

Tracee是一个易于使用的Linux运行时安全和取证工具,采用了目前最为火热功能更为强大的eBPF技术,可以让我们更好地理解程序的运行时行为,并打破对类似安全软件构成困难和挑战的桎梏,为安全分析人员提供进一步深入分析的方案。

原文标题:利用LSM钩子打破系统调用跟踪桎梏

文章出处:【微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11225

    浏览量

    208903
  • 源代码
    +关注

    关注

    96

    文章

    2944

    浏览量

    66663
  • 应用程序
    +关注

    关注

    37

    文章

    3240

    浏览量

    57599

原文标题:利用LSM钩子打破系统调用跟踪桎梏

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    socket编程的安全性考虑

    在Socket编程中,安全性是一个至关重要的考虑因素。以下是一些关键的安全性考虑和措施: 1. 数据加密 使用TLS/SSL协议 :TLS/SSL(传输层安全性/安全套接层)是网络
    的头像 发表于 11-01 16:46 188次阅读

    UWB模块的安全性评估

    UWB(超宽带)模块的安全性评估是一个复杂而关键的过程,涉及多个方面,包括技术特性、加密机制、抗干扰能力、物理层安全等。以下是对UWB模块安全性评估的分析: 一、技术特性带来的安全性
    的头像 发表于 10-31 14:17 133次阅读

    智能系统的安全性分析

    智能系统的安全性分析是一个至关重要的过程,它涉及多个层面和维度,以确保系统在各种情况下都能保持安全、稳定和可靠。以下是对智能系统安全性的分析: 一、数据安全性 数据加密 : 采用对称加
    的头像 发表于 10-29 09:56 201次阅读

    如何提升SoC的安全性

    安全启动确保SoC从可信的固件开始启动,防止未授权或恶意软件加载。SoC内置一个只读存储器(ROM)中的Bootloader,这段代码不可更改,用于执行初始启动。固件镜像在编译完成后使用开发者的私钥
    的头像 发表于 10-21 14:19 146次阅读

    固态电池安全性怎么样

    固态电池在安全性方面表现出显著的优势,这主要得益于其独特的固态电解质结构。以下是对固态电池安全性的详细分析:
    的头像 发表于 09-15 11:47 528次阅读

    楼宇自控系统:提升建筑安全性的隐形盾牌

    楼宇自控系统:提升建筑安全性的隐形盾牌 在城市的钢铁森林中,每一座建筑都是人类智慧与创造力的结晶。然而,随着建筑规模的不断扩大和复杂的增加,其安全性问题也日益凸显。在这个背景下,楼宇
    的头像 发表于 08-22 13:43 194次阅读

    请问DM平台访问安全性如何控制?

    DM平台访问安全性如何控制?
    发表于 07-25 06:10

    工业以太网安全性分析及防护措施

    。因此,对工业以太网的安全性进行深入分析和采取相应的防护措施至关重要。本文将从工业以太网面临的安全威胁、漏洞入手,探讨相应的防护措施。
    的头像 发表于 06-28 16:58 470次阅读

    蓝牙模块的安全性与隐私保护

    蓝牙模块作为现代无线通信的重要组成部分,在智能家居、可穿戴设备、健康监测等多个领域得到了广泛应用。然而,随着蓝牙技术的普及,其安全性和隐私保护问题也日益凸显。本文将探讨蓝牙模块在数
    的头像 发表于 06-14 16:06 501次阅读

    艾体宝方案 | 管理开源软件包更新,提升开源安全性

    文章介绍了Mend.io如何通过其Smart Merge Control功能增强开源软件的安全性。现代应用程序高度依赖开源软件,但这也增加了潜在的安全漏洞。Mend SCA的增强功能允许开发者
    的头像 发表于 05-31 17:03 287次阅读

    锐明技术计划海外设厂,以提升供应链安全性

    根据战略目标及关税影响等多重考量,锐明技术坚信在海外设厂具有可行,不仅能有效避开关税,还能提升客户信心,增强供应链稳定性与安全性
    的头像 发表于 05-10 09:28 295次阅读

    沃尔沃利用英伟达的SoC和AI来提升自动驾驶的安全性

    在2024年英伟达GPU技术大会(NVIDIA GTC 2024)上,沃尔沃介绍了如何利用人工智能和日益提升的算力来提升自动驾驶的安全性
    的头像 发表于 05-08 14:38 1125次阅读

    KVM矩阵的智能化管理:提升运维效率与安全性

    随着信息技术的飞速发展,KVM矩阵作为数据中心运维的重要工具,正逐渐融入智能化管理的理念。智能化管理不仅提升了KVM矩阵的运维效率,更在保障系统安全性方面发挥了重要作用。本文将探讨KVM矩阵的智能化
    的头像 发表于 02-18 14:51 503次阅读

    使用融合CDN同时提升网站效能及安全性

    现在许多企业的服务都依靠网站营运,维持稳定的网站效能及安全性变得相当重要。事实上,当网站载入时间超过 3 秒钟,超过 40% 的使用者会直接跳出,由此可见网站效能的重要;而当网站受到 DDoS
    的头像 发表于 02-02 14:39 276次阅读

    为工业应用选择高安全性功率继电器

    为工业应用选择高安全性功率继电器
    的头像 发表于 12-05 15:11 433次阅读
    为工业应用选择高<b class='flag-5'>安全性</b>功率继电器