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

    文章

    11628

    浏览量

    217966
  • 源代码
    +关注

    关注

    96

    文章

    2953

    浏览量

    69654
  • 应用程序
    +关注

    关注

    38

    文章

    3342

    浏览量

    59924

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    如何维护i.MX6ULL的安全内核?

    为 5.15.158。 因此,我们想知道:是否有可能基于这个 BSP 平台实现安全的 i.MX 6ULL 系统?您会推荐上游的 linux-fslc 还是 linux-imx (BSP) 内核树?显然,
    发表于 04-01 08:28

    【版本控制安全简报】Perforce Helix Core安全更新:漏洞修复与国内用户支持

    Perforce Helix Core近日发布安全补丁,解决高危DoS漏洞安全性进一步增强!获取支持,可咨询Perforce授权代理商龙智,我们提供咨询、试用、安装部署、培训、技术支持等本地化服务,确保您的系统
    的头像 发表于 02-27 17:12 889次阅读
    【版本控制<b class='flag-5'>安全</b>简报】Perforce Helix Core<b class='flag-5'>安全</b>更新:<b class='flag-5'>漏洞</b>修复与国内用户支持

    意法半导体与HighTec合作提升汽车软件安全性

    意法半导体与HighTec EDV-Systeme公司携手合作,共同开发了一套先进的汽车功能安全整体解决方案。该方案旨在加速安全关键的汽车系统开发进程,同时提升软件定义汽车的安全性和经
    的头像 发表于 02-18 09:52 843次阅读

    微软Outlook曝高危安全漏洞

    近日,美国网络安全和基础设施安全局(CISA)发布了一项紧急安全公告,揭示了微软Outlook中存在的一个高危远程代码执行漏洞(CVE-2024-21413)。该
    的头像 发表于 02-10 09:17 822次阅读

    智能点焊电流监测仪:提升焊接效率与安全性

    决这些问题,智能点焊电流监测仪应运而生,它通过实时监测焊接过程中的电流变化,确保焊接参数始终处于最佳状态,从而显著提升了焊接效率和安全性。 智能点焊电流监测仪的核心
    的头像 发表于 01-04 08:20 715次阅读

    AGV在工作时如何保持高强度安全性

    AGV实现高效低成本物料运输,安全性高,通过安全装置、交通管制避免碰撞。区域控制、传感器控制、综合控制等方式实现交通管理。AGV提升企业技术进步,有望在更多领域发挥广泛作用。
    的头像 发表于 01-02 11:46 682次阅读
    AGV在工作时如何保持高强度<b class='flag-5'>安全性</b>

    如何实现 HTTP 协议的安全性

    协议的安全性,可以采取以下几种方法: 1. 使用HTTPS HTTPS(安全超文本传输协议)是HTTP的安全版本,它在HTTP的基础上通过SSL/TLS协议提供了数据加密、数据完整
    的头像 发表于 12-30 09:22 1486次阅读

    集中告警管理如何提升设施安全性

    在工业或商业建筑中,集中告警管理已成为确保安全性或检测故障的必备工具。它是如何提升设施安全性的?欢迎大家阅读文章了解~
    的头像 发表于 12-13 15:51 785次阅读
    集中告警管理如何<b class='flag-5'>提升</b>设施<b class='flag-5'>安全性</b>?