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
    +关注

    关注

    88

    文章

    11854

    浏览量

    219822
  • 源代码
    +关注

    关注

    96

    文章

    2953

    浏览量

    70858
  • 应用程序
    +关注

    关注

    38

    文章

    3347

    浏览量

    60501

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Microchip ATSHA204A:高安全性硬件认证设备的深度解析

    Microchip ATSHA204A:高安全性硬件认证设备的深度解析 在当今数字化时代,数据安全至关重要。Microchip的ATSHA204A作为CryptoAuthentication™家族
    的头像 发表于 04-06 14:55 794次阅读

    从 M0 到 M3丨笙泉32 位 MCU:高效能、安全性与多元应用兼具

    从 M0 到 M3丨笙泉32 位 MCU:高效能、安全性与多元应用兼具 笙泉32位MCU打造多元应用控制方案 32 位 MCU(单片机 / 微控制器),如 Arm® Cortex®-M0
    发表于 03-10 15:29

    请问VisionFive 2 的热安全性如何?

    我的 VisionFive 2 目前没有风扇。如果我开始以 100% 的速度使用 CPU,我应该担心它过热吗? 为了安全起见,它会进行热节流吗? 如果是这样,如何查看它是否处于热节流状态?
    发表于 02-27 06:31

    储能EMS控制器(8) — 储能柜项目调试如何提升安全性

    当储能柜的项目需求变化比较大,或者对于新手调试运维工程师来说,在本地EMS能量管理系统的运行时直接调试有风险。那么,如何给储能柜调试提升安全性?简介当储能柜的项目需求变化比较大,或者对于新手调试运维
    的头像 发表于 01-28 11:50 504次阅读
    储能EMS控制器(8) — 储能柜项目调试如何<b class='flag-5'>提升</b><b class='flag-5'>安全性</b>?

    机器人用霍尔电流传感器,能提升操作安全性么?

    安全。霍尔电流传感器作为机器人电力系统的“感知核心”,通过实时监测电流信号、精准反馈运行状态,为机器人构建全链路安全防护体系,成为提升操作安全性的关键器件。一、机
    的头像 发表于 12-22 09:04 1593次阅读
    机器人用霍尔电流传感器,能<b class='flag-5'>提升</b>操作<b class='flag-5'>安全性</b>么?

    请问CW32L052C8T6这种安全性低功耗MCU的安全固件部分怎么实现?

    请问,CW32L052C8T6这种安全性低功耗MCU的安全固件部分怎么实现?
    发表于 12-05 07:19

    叠层固态铝电解电容:无漏液风险,提升产品安全性

    叠层固态铝电解电容通过采用导电聚合物替代液态电解液,从根本上杜绝了漏液风险,显著提升了产品安全性,尤其在新能源汽车等振动频繁、环境严苛的场景中表现突出。以下从技术原理、安全优势、应用场景及行业实践
    的头像 发表于 11-26 10:17 802次阅读

    车规级与消费级芯片的可靠安全性与成本差异

    引言在汽车电子和消费电子领域,"车规级"与"消费级"芯片代表了两种截然不同的设计理念和技术标准。车规级芯片专为汽车应用设计,强调在极端环境下的可靠安全性
    的头像 发表于 11-18 17:27 1773次阅读
    车规级与消费级芯片的可靠<b class='flag-5'>性</b>、<b class='flag-5'>安全性</b>与成本差异

    如何利用X-Ray技术提升锂电池安全性与稳定性

    非破坏、高分辨率的优势,成为提升锂电池品质和安全性能的重要工具。本文将深入探讨如何利用X-Ray技术提升锂电池安全性与稳定性,帮助企业优化
    的头像 发表于 10-13 14:22 931次阅读

    有哪些技术可以提高边缘计算设备的安全性

    设备自身安全、数据安全、网络安全、身份认证、安全管理、新兴技术赋能六大核心维度,梳理可提升边缘计算设备
    的头像 发表于 09-05 15:44 1949次阅读
    有哪些技术可以提高边缘计算设备的<b class='flag-5'>安全性</b>?

    如何验证硬件加速是否真正提升了通信协议的安全性

    验证硬件加速是否真正提升通信协议的安全性,需从 安全功能正确、抗攻击能力增强、安全性能适配、合规一致
    的头像 发表于 08-27 10:16 1428次阅读
    如何验证硬件加速是否真正<b class='flag-5'>提升</b>了通信协议的<b class='flag-5'>安全性</b>?

    如何利用硬件加速提升通信协议的安全性

    特性增强安全性(而非仅依赖软件防护)。其本质是 “将安全计算从通用 CPU 卸载到专用硬件”,既解决软件处理安全操作的性能瓶颈,又规避软件层可能存在的漏洞(如内存泄露、侧信道攻击风险)
    的头像 发表于 08-27 09:59 1262次阅读
    如何利用硬件加速<b class='flag-5'>提升</b>通信协议的<b class='flag-5'>安全性</b>?

    宏集分享 | 集中告警管理如何提升设施安全性

    提高团队响应速度,优化维护运营在工业或商业建筑中,集中告警管理已成为确保安全性或检测故障的必备工具。通过将所有安全系统集中管理,企业能够将所有告警统一在一个HMI界面中,大幅提升响应速度。关键要点
    的头像 发表于 08-08 18:25 673次阅读
    宏集分享 | 集中告警管理如何<b class='flag-5'>提升</b>设施<b class='flag-5'>安全性</b>?

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

    DM平台访问安全性如何控制?
    发表于 08-06 06:01

    SD-WAN供应商在安全性方面有哪些差异?服务商安全性排行

    市场报告,2022年该市场增长达25%,预计2027年规模将突破75亿美元,而**安全性差异**成为企业选型的首要考量。以下从技术架构、行业适配等维度解析头部服务商
    的头像 发表于 07-29 10:14 345次阅读
    SD-WAN供应商在<b class='flag-5'>安全性</b>方面有哪些差异?服务商<b class='flag-5'>安全性</b>排行