“优雅”的Linux漏洞:用罕见方式绕过ASLR和DEP保护机制

简介:

最近国外研究人员公布的一段exp代码能够在打完补丁的Fedora等Linux系统上进行drive-by攻击,从而安装键盘记录器、后门和其他恶意软件。

这次的exp针对的是GStreamer框架中的一个内存损坏漏洞,GStreamer是个开源多媒体框架,存在于主流的Linux发行版中。我们都知道,地址空间布局随机化(ASLR)和数据执行保护(DEP)是linux系统中两个安全措施,目的是为了让软件exp更难执行。但新公布的exp通过一种罕见的办法绕过了这两种安全措施——国外媒体还专门强调了这个漏洞的“优雅”特色。研究人员写了个flac多媒体文件,就能达成漏洞利用!

ASLR是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一种技术。而DEP则能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。

无脚本exp

与传统的ASLR和DEP绕过方法不同的是,这个exp没有通过代码来篡改内存布局和其他的环境变量。而是通过更难的字节码排序彻底关闭保护。由于不需要JavaScript也不需要其他与内存通信的代码,所以其他攻击不行的时候,这种攻击可能依然可行。

“这个exp很可笑”,研究员Chris Evans在周一的博文中写道,“但是它证明了无脚本的exp也是可行的,即便开启了64位的ASLR还是有办法能够进行读写内存等操作,并且能够稳扎稳打地一步一步进行攻击然后获得控制权。”

Azimuth Security高级研究院Dan Rosenberg特别擅长Linux漏洞的防御。在一封邮件中他同意了Chris Evans的观点:

这个exp相当厉害,因为它成功绕过了ASLR和NX等先进的保护措施,而且不需要与目标软件进行程序交互。

详细来说,当要攻击浏览器漏洞的时候,exp会用JavaScript影响内存布局。类似地,当要攻击本地内核漏洞时,exp会发起系统调用来影响目标环境。但在现在的场景差别很大,由于exp是一个单独的媒体文件,黑客没有机会在攻击的过程中作调整。

Evans随后发布了一个FLAC媒体文件,它能够运行在默认版本的Fedora 24上(其中预装了最新版的GStreamer)。Evans说,写Ubuntu的exp更容易些,因为他没有ASLR, RELRO等防御措施,即使是在最新的16.04 LTS版本中也没有。不过他的exp仍然需要改写才能在除Fedora 24的其他linux版本中运行。虽然攻击针对的是GStreamer对FLIC文件格式的解码器,Evans说攻击目标是Rhythmbox媒体播放器的二进制代码。Totem播放器也可以用类似的方法攻击。

漏洞利用较麻烦

这个exp的学术研究价值要比实用价值来得高,因为如果要在其他linux版本上运行就需要重写。并且由于在linux上播放媒体软件的用户本身就少,漏洞可利用的范围就更少了。周二的时候,Ubuntu发布了补丁,之后几天应该会有更多的厂商跟进。这个漏洞究竟优雅与否,有兴趣的可移步点击下面的原文链接。

本文转自d1net(转载)

目录
相关文章
|
1月前
|
消息中间件 Unix Linux
Linux进程间通信(IPC)介绍:详细解析IPC的执行流程、状态和通信机制
Linux进程间通信(IPC)介绍:详细解析IPC的执行流程、状态和通信机制
48 1
|
4月前
|
存储 缓存 Linux
哇~~真的是你呀!今天是LInux安装方法和systemd管理机制。
Linux服务安装和systemd管理机制是Linux操作系统中重要的服务管理机制。systemd是Linux下一种基本的系统服务管理器,负责管理Linux中的各种服务,如进程管理、启动和停止服务、日志记录、挂载文件系统等等。在systemd中,每个服务都以一个Unit的形式存在,Unit定义了该服务相关的一些属性,如服务名称、启动脚本的路径、依赖关系等。
82 0
哇~~真的是你呀!今天是LInux安装方法和systemd管理机制。
|
5月前
|
Linux 编译器 API
深度剖析Linux内核同步机制:实现高效可靠的并发编程
深度剖析Linux内核同步机制:实现高效可靠的并发编程
|
6月前
|
Linux
Linux多线程同步机制(下)
Linux多线程同步机制(下)
34 0
|
6月前
|
Linux
Linux 多线程同步机制(上)
Linux 多线程同步机制(上)
31 0
|
1月前
|
资源调度 算法 Linux
Linux进程/线程的调度机制介绍:详细解析Linux系统中进程/线程的调度优先级规则
Linux进程/线程的调度机制介绍:详细解析Linux系统中进程/线程的调度优先级规则
66 0
|
6天前
|
算法 Linux 调度
深入理解Linux内核的进程调度机制
【4月更文挑战第17天】在多任务操作系统中,进程调度是核心功能之一,它决定了处理机资源的分配。本文旨在剖析Linux操作系统内核的进程调度机制,详细讨论其调度策略、调度算法及实现原理,并探讨了其对系统性能的影响。通过分析CFS(完全公平调度器)和实时调度策略,揭示了Linux如何在保证响应速度与公平性之间取得平衡。文章还将评估最新的调度技术趋势,如容器化和云计算环境下的调度优化。
|
11天前
|
算法 Linux 调度
深度解析:Linux内核的进程调度机制
【4月更文挑战第12天】 在多任务操作系统如Linux中,进程调度机制是系统的核心组成部分之一,它决定了处理器资源如何分配给多个竞争的进程。本文深入探讨了Linux内核中的进程调度策略和相关算法,包括其设计哲学、实现原理及对系统性能的影响。通过分析进程调度器的工作原理,我们能够理解操作系统如何平衡效率、公平性和响应性,进而优化系统表现和用户体验。
20 3
|
28天前
|
监控 算法 Unix
【Linux 异步操作】深入理解 Linux 异步通知机制:原理、应用与实例解析
【Linux 异步操作】深入理解 Linux 异步通知机制:原理、应用与实例解析
59 0
|
28天前
|
开发框架 算法 Linux
【知识点回顾 】Qt信号槽与Linux信号处理 的处理机制 深入探讨
【知识点回顾 】Qt信号槽与Linux信号处理 的处理机制 深入探讨
33 0