当前位置:主页 > 查看内容

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

发布时间:2021-07-29 00:00| 位朋友查看

简介:0x01 背景介绍 如果攻击者具有任意的读/写原语,那么防御者基本上无能为力,由于内存损坏漏洞总是可以构造这些原语,导致我可以以最可靠的方式利用漏洞。 在这篇文章中,我将分析和利用 CVE-2018-1000810 ,这是Scott McMurray在Rust的标准库中发现的漏洞。……

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

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

  1. fn main() { let _s = "AAAA".repeat(0x4000000000000001); } 

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


本文转载自网络,原文链接:https://www.4hou.com/posts/kDRX
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:腾讯 iOA 零信任安全技术实践 下一篇:没有了

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐