Rust标准库漏洞从分析到漏洞利用研究

番茄系统家园 · 2022-05-17 08:02:32

Rust标准库漏洞从分析到漏洞利用研究

0x01 背景介绍

如果攻击者具有任意的读/写原语,那么防御者基本上无能为力,由于内存损坏漏洞总是可以构造这些原语,导致我可以以最可靠的方式利用漏洞。

在这篇文章中,我将分析和利用CVE-2018-1000810,这是ScottMcMurray在Rust的标准库中发现的漏洞。我将分析该漏洞的根本原因,如何触发该漏洞以及使用该漏洞构造一组强大的原语进而利用。

 https://github.com/rust-lang/rust/pull/54397

Rust这种语言非常适合开发需要安全性高的应用程序。此漏洞已在最新版本中修复,切勿将单个漏洞作为整体安全性的指标,我之所以分析这个漏洞,是因为我喜欢这种语言和漏洞,而且我想了解更多。

该漏洞是一个64位的通配符。我有机会在WSL中利用其他通配符,因此,如果你对更多的通配符感兴趣,或者只是想在阅读此文章之前快速介绍该概念,可以观看我的演讲“Linux漏洞利用,Windows漏洞利用”。这是可靠地利用内核空间中的通配符的一个很好的漏洞例子。

 https://github.com/saaramar/execve_exploit

对于此Rust漏洞,我会分析用户空间,并且将使用非常简单且稳定的Wildcopy漏洞。我将编写一个简单的Rust程序,利用该漏洞执行本机代码,这意味着:

· 没有“不安全”的代码块

· 我唯一使用的crates是thread,time和sync :: mpsc :: channel(即只有两行带有“ use”的行使用std:: {thread,time};使用std :: sync :: mpsc :: channel;)

我在Ubuntu 19.10上开发了该漏洞利用程序,这应该适用于其他版本的Ubuntu,我也在WSL v1 / v2和Debian10上进行了测试。可以100%稳定利用:)

0x02 漏洞分析

2018年9月21日,该漏洞发布了公告。此公告中已对其进行了修复,该漏洞是在1.26.0版中引入的,并在1.29.0版之后进行了修复。这些版本之间的所有稳定版本都会受到影响,因此我将在本文章中使用Rust1.29.0。

 https://blog.rust-lang.org/2018/09/21/Security-advisory-for-std.html  https://github.com/rust-lang/rust/pull/54398/files

我将从以下代码开始分析:

如果使用Rust编译器1.29.0进行编译,可以清楚地看到函数中的乘法:

免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/dngz/332473EeEvXA.html
猜你喜欢
最新应用
热门应用