(在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
0x01 背景介绍
如果攻击者具有任意的读/写原语,那么防御者基本上无能为力,由于内存损坏漏洞总是可以构造这些原语,导致我可以以最可靠的方式利用漏洞。
在这篇文章中,我将分析和利用CVE-2018-1000810,这是Scott McMurray在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和Debian 10上进行了测试。可以100%稳定利用:)
0x02 漏洞分析
2018年9月21日,该漏洞发布了公告。此公告中已对其进行了修复,该漏洞是在1.26.0版中引入的,并在1.29.0版之后进行了修复。这些版本之间的所有稳定版本都会受到影响,因此我将在本文章中使用Rust 1.29.0。
https://blog.rust-lang.org/2018/09/21/Security-advisory-for-std.html
https://github.com/rust-lang/rust/pull/54398/files
我将从以下代码开始分析:
- fn main() { let _s = "AAAA".repeat(0x4000000000000001); }
如果使用Rust编译器1.29.0进行编译,可以清楚地看到函数中的乘法:
本文转载自网络,原文链接:https://www.4hou.com/posts/kDRX
版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除
-
Rust标准库漏洞从分析到漏洞利用研究
-
腾讯 iOA 零信任安全技术实践
-
研究人性弱点的Hacker?聊聊社会工程学
-
一个核心、九大任务 奇安信总裁吴云坤