已经确定了三个漏洞,这些漏洞使没有特权的攻击者可以提升他们在系统上的特权 并以root身份在负责登录systemd的systemd-journald中运行代码。
漏洞 体现在所有使用systemd的发行版中, 除了SUSE Linux Enterprise 15,openSUSE Leap 15.0和Fedora 28/29, 其中系统组件通过“ -fstack-clash-protection”进行组装。
什么是漏洞?
漏洞 已经在 CVE-2018-16864 y CVE-2018-16865 允许您创建条件以在分配的存储块的限制之外写入数据, 虽然脆弱 CVE-2018-16866 使您可以读取外部存储区的内容。
研究人员准备了该漏洞利用的工作原型 使用漏洞CVE-2018-16865和CVE-2018-16866。
研究人员对这些漏洞的详细情况 他们告诉我们,这允许在具有i10架构的系统上受到大约386分钟的攻击,而在amd70系统上受到64分钟的攻击后,获得root特权。
该漏洞已经在Debian 9.5上进行了测试。
他们还解释说:
编写漏洞利用程序后, 使用堆栈Сlash技术,其实质是在溢出堆的内容位于堆栈区域中时创建条件,或者相反,堆栈可以重写堆区域。
这在堆栈和堆彼此相邻放置(堆栈区域紧随为堆分配的内存之后)的情况下表现出来。
提出的漏洞利用证实了以下假设:仅在Linux内核级别对StackСlash类攻击进行防护是不够的。
同时,通过启用“ -fstack-clash-protection”选项重建GCC可以成功阻止攻击。
关于漏洞
脆弱性 CVE-2018-16864是在分析了通过调用syslog()将保存数据的应用程序传输到日志的情况后发现的,大量的命令行参数(几兆字节)会导致systemd-journald进程崩溃。
分析表明,通过使用命令行参数处理字符串,可以将受控制的堆栈队列放置在堆栈的开头。
但是,要成功进行攻击,必须绕过内核中使用的堆栈保护页面的保护技术。,其实质是替换限制的内存页。 引发异常(页面错误)。
要在并行“ systemd-journald”中以“竞赛条件”开始绕过此保护”,由于页存储器的输入,留出时间来捕获控制进程崩溃,这是只读的。
在研究第一个漏洞的过程中,又出现了两个问题。
第二个漏洞 CVE-2018-16865可让您创建StackСlash叠加条件 通过将非常大的消息写入文件run / systemd / journal / socket类似。
第三个漏洞 如果您发送带有最后一个“:”字符的系统日志消息,则会显示CVE-2018-16866。
由于字符串解析错误,终止字符串'\ 0'将被丢弃,并且记录将包含'\ 0'之外的缓冲区部分,从而使您可以找到堆栈和mmap的地址。
- CVE-2018-16864漏洞自2013年203月以来就已经显而易见(它出现在systemd 230中),但仅在2016年XNUMX月更改为systemd XNUMX之后才适合运行。
- CVE-2018-16865漏洞自2011年38月(系统2013)以来就很明显,并且可以从201年XNUMX月(系统XNUMX)开始运行。
- CVE-2018-16864和CVE-2018-16865问题已于几个小时前在systemd的master分支中修复。
CVE-2018-16866漏洞于2015年221月(系统2018)出现,并于240年XNUMX月修复(在系统XNUMX中未显示)。
有效漏洞利用程序的发布已被推迟,直到发行版发布补丁为止。
当前,尚未修补的漏洞分布是最受欢迎的,例如Debian,Ubuntu,RHEL,Fedora,SUSE及其衍生版本。
2条评论,留下您的评论
systemd很烂!
初始化自由……是的!