寻找 Linux 内核中的远程代码执行错误

admin 2024年3月30日23:19:35评论5 views字数 1272阅读4分14秒阅读模式

寻找 Linux 内核中的远程代码执行错误

文章前言内容

攻击者如何远程接管个人 Linux 或 Android 设备?发送恶意链接并通过浏览器获取代码执行?或者以信使或电子邮件客户端为目标?好吧,发送一系列网络数据包并直接拥有内核怎么样😋

本文介绍了我通过网络从外部模糊 Linux 内核的经验。我将解释如何为此目的扩展一个名为syzkaller的内核模糊器,并展示发现的错误。本文还介绍了 syzkaller 及其高级功能——伪系统调用。

可悲的是,要找到一个可以接管互联网的漏洞——我失败了。但我确实设法在非公开内核版本中找到了一次性 RCE。

远程错误。每当 Linux 机器通过网络接收到数据包时,它都需要了解如何处理它。例如,对于 TCP 数据包,机器需要知道该数据包应传递到哪个应用程序。这是由内核完成的:它解析数据包并进行相应的处理。对于 TCP 数据包,内核将其路由到侦听数据包内指定端口的应用程序。

如果解析网络数据包的内核代码中存在错误,则远程攻击者可能会触发该错误。它可以像向机器发送特制的数据包一样简单。

远程攻击。如果远程错误是内存损坏,熟练的攻击者可以利用它使内核执行任意代码。从而超越机器。至少有一个这样的远程代码执行错误被公开利用:十多年前发现的SCTP 中的缓冲区溢出。

当然,进行远程利用需要首先找到可远程利用的错误。这就是我想做的。

模糊测试。我寻找此类远程漏洞的方法是使用模糊测试。

模糊测试是一种通过输入随机输入来查找程序中的错误的方法。如果程序在处理输入时崩溃或出现其他错误,则存在错误。内核是一个程序,因此它也可以作为模糊测试的目标。

如果在外部对网络子系统进行模糊测试,模糊器将生成一个随机数据包,以某种方式将其输入内核,并检查内核是否行为不当。例如,崩溃或打印KASAN报告。这意味着模糊器发现了一个错误。

为了简洁起见,我将跳过描述覆盖引导模糊测试的工作原理并详细介绍内核模糊测试的细节。一定要检查激怒企鹅!如何模糊 Linux 内核来了解这些东西。

syzkaller。对于模糊测试,我想使用syzkaller——谷歌开发的生产级覆盖引导内核模糊测试器。syzkaller 可以模糊许多不同的内核,但其主要目标是 Linux 内核。

与从头开始制作的模糊器相比,syzkaller 提供了一个随时可用的框架并自动报告错误。作为权衡,您必须处理 syzkaller 的复杂性:添加功能需要了解 syzkaller 架构的内部结构。

当我开始从事这个项目时,syzkaller 已经有了对网络子系统模糊测试的基本支持。但只有部分代码可以通过系统调用在本地访问。我想定位解析外部接收的数据包的代码。

当我开始这个项目时,我已经有了制作错误查找工具和运行现成的 USB 模糊器的经验。然而,我自己从未实现过模糊器。我对syzkaller和 Linux 内核网络子系统的内部结构 也一无所知。

(以上内容只是介绍此文内容方向)原文地址:

https://xairy.io/articles/syzkaller-external-network#-background

寻找 Linux 内核中的远程代码执行错误

原文始发于微信公众号(Ots安全):寻找 Linux 内核中的远程代码执行错误

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月30日23:19:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   寻找 Linux 内核中的远程代码执行错误http://cn-sec.com/archives/2615540.html

发表评论

匿名网友 填写信息