RUST 编程语言使构建更安全的软件变得更加容易。RUST ALL THE THINGS 需要什么?

人不走空

                                                                      

      🌈个人主页:人不走空      

💖系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

目录

      🌈个人主页:人不走空      

💖系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

“内存安全不仅仅是一个技术问题,也是一个社会问题。

“基本上,我们在后端所做的所有新工作都是用 Rust 编写的。”

所以的东西都会生锈

我们专注于几乎每个人都使用的关键组件。

作者其他作品:


给各位分享一篇关于GitHub上的rust风格的开发人员如何可以使开发更加安全的博客,我已经帮大家翻译了 

设您正在使用 C++ 构建电子邮件客户端。您的新应用程序将在每天由多个不同人员使用的工作站上运行。但是在某个地方,你犯了一个错误。通过向自己发送特制的电子邮件,他们可以溢出应用程序的内存缓冲区,并发送应用程序命令以从其他用户的收件箱中检索电子邮件。

此缓冲区溢出错误是内存安全问题的典型示例,也是软件中最常见的安全问题类型之一。根据微软安全响应中心的Matt Miller的演讲,在2004年至2018年期间,Microsoft产品中修复的所有安全问题中约有70%是内存安全问题,该中心对公司报告的所有安全问题进行了分类。

内存安全是一个大问题。操作系统需要确保各个应用程序不会相互泄漏数据。Web 浏览器需要确保在一个选项卡中打开的 Web 应用无法从另一个选项卡抓取数据。云计算平台需要确保一个用户无法从另一个用户那里读取数据。

“内存安全不仅仅是一个技术问题,也是一个社会问题,”互联网安全研究小组执行董事Joshua Aas说。“内存安全问题不仅会产生有缺陷的软件。它们可能会破坏人们赖以谋生或找工作的服务。安全漏洞会剥夺我们的隐私。软件可以而且应该以更好的方式构建。

“内存安全不仅仅是一个技术问题,也是一个社会问题。

2020 年 10 月,互联网安全研究小组启动了一项名为 Prossimo 的计划,致力于促进互联网上的内存安全。到目前为止,他们的主要举措是使用 Rust 编程语言,该语言于 2010 年由 Mozilla 开源,可以更轻松地编写内存安全代码。

C、C++ 和其他需要开发人员编写代码来管理其软件内存的编程语言被认为是“内存不安全”,因为即使是很小的错误也会造成内存安全问题。“无论你的开发人员多么有才华,他们都会犯错误,”Aas说。“世界上最伟大、最有能力的系统编程团队经常会制造内存安全问题。只要看看几乎任何重大项目的安全补丁说明,你就会看到一个又一个的例子。

正如云边缘计算公司 Fastly 的工程副总裁 Laura Thomson 所说:“编写 C 就像在没有帮助的情况下进行脑部手术。

长期以来,用“内存安全”语言编写自动管理内存的软件已被证明可以减少整个安全漏洞。尽管如此,C和C++代码仍然无处不在。操作系统、网络软件、Web 浏览器和硬件驱动程序传统上都是用 C 或其面向对象的后继者 C++ 编写的。无论您使用的是 Android、iOS、Windows、Linux 还是 Mac,尽管在许多应用程序中使用了 C#、Java 和 Swift 等内存安全语言,但后台还是有很多 C/C++。

这是有充分理由的。C 和 C++ 速度很快。他们很可靠。程序员已经知道如何使用它们,其中编写了数千个开源库,并且他们几乎为每个可以想象的芯片组提供了编译器。

双手在笔记本电脑的键盘上打字

Prossimo 专注于整体内存安全,而不仅仅是 Rust。但 Rust 可能比任何其他语言都更有可能破坏系统编程的现状。

“Rust 是过去 20 年左右引入的一组新语言中的第一个,它们可以真正用于我们以前一直停留在 C 或汇编代码中构建的东西,”Fastly 首席技术官 Tyler McMullen 说。“它具有记忆性能,并且具有引人注目的类型系统,可让您用低级语言表达更高层次的概念。此外,它与其他语言的互操作性很好,可以在从嵌入式系统到服务器的许多平台上运行。

Rust 具有牵引力。在 Stack Overflow 的 2021 年开发者调查中,Rust 被评为“最受欢迎”的编程语言——这是该语言连续第六年位居榜首。与此同时,从科学计算到开源项目,例如由Node.js创建者Ryan Dahl构建的新服务器端JavaScript平台Deno,它变得越来越受欢迎。

今年,Mozilla 将 Rust 的管理权移交给了 Rust 基金会,该基金会是由亚马逊网络服务、Facebook、谷歌、华为、Microsoft 和 Mozilla 共同创立的联盟。这表明业界最大的参与者对 Rust 的未来是认真的。

例如,Facebook 现在有数百名开发人员使用 Rust,其中包括一些核心 Rust 编程语言的贡献者。Facebook 并没有放弃其他语言,但 Rust 被用于整个公司的项目,包括 Diem 区块链、Move 编程语言以及他们的 Buck 工具的下一个版本。“我们参与基金会的主要目标之一是与其他优秀的基金会成员和 Rust 社区密切合作,帮助 Rust 维护者更有效地完成他们的伟大工作,使 Rust 成为系统编程及其他领域的主流语言选择,”Facebook 开源开发者倡导者兼 Rust 基金会成员总监 Joel Marcey 说。

许多公司现在都在使用 Rust 来帮助保护他们的云计算平台,包括 Amazon Web Services、Cloudflare、Fastly 和 Microsoft Azure。

“几年前我还没有被卖掉,”麦克马伦说。但是 Fastly 的 WebAssembly 团队要求使用 Rust 构建一些项目,McMullen 对该语言的性能和安全性印象深刻。现在 Rust 是公司堆栈的核心部分。“基本上,我们在后端所做的所有新工作都是用 Rust 编写的,”Thomson 说。“我们的客户用来运行代码的计算服务都是基于 Rust 构建的。”

“基本上,我们在后端所做的所有新工作都是用 Rust 编写的。”

McMullen 说,他们的目标是确保整个数据平面管道内存的安全。“在这种环境中,我们不能信任任何人,”他说。“我们不能信任传入的流量,我们不能信任服务器上运行的代码。用 Rust 这样的语言编写可以更容易地不必信任。

AWS 在多种服务的网络堆栈中使用 Rust,包括 EC2、S3 和 CloudFront,Amazon Web Services 的 Rust 平台团队负责人 Shane Miller 说。该云平台在 Rust 中构建了大部分开源、面向容器的虚拟化系统 Firecracker,以及基于 Linux 的容器操作系统 Bottlerocket。“Rust 很快成为 AWS 大规模交付基础设施的关键,”Miller 说,他也是 Rust 基金会的主席。

使用内存安全语言进行绿地开发是一个好的开始。但是,要使 Web 更加内存安全,还需要重构旧软件。最雄心勃勃的 Rust 编程语言工作之一是推动在 Linux 中增加对 Rust 的支持,这项工作尚未得到 Linus Torvalds 的认可,他告诉 ZDnet,当谈到 Rust 时,他处于“观望阵营”。

与此同时,Linux 版 Rust 团队正在努力使 Rust 和内核很好地结合在一起。例如,Rust 标准库假设内存分配永远不会返回错误,这一概念称为“无误分配”。当内存分配失败时,进程将终止。问题在于,这可能会导致内核崩溃——换句话说,操作系统会完全停止,以响应它认为的致命错误。如果并行运行多个工作负载,这是个坏消息。由 Google 赞助的 Linux 版 Rust 团队最近使用自定义 Rust 库解决了这个问题,但项目负责人 Miguel Ojeda 写道,他希望看到这个问题在 Rust 本身的上游得到解决。“我们已经开始了这个过程,一些变化已经被上游接受了,”他在内核邮件列表上写道。

如果 Rust for Linux 被合并,这将是 Linux 内核第一次正式支持 C 或汇编语言以外的语言,内核开发人员 Greg Kroah-Hartman 说。

Linux 并不是唯一使用 Rust 的操作系统。2019 年,Microsoft Hyper-V 工程团队的 Adam Burch 在一篇博客文章中宣布,他正在用 Rust 重写 Windows 代码库的一个低级系统组件,尽管他不能说出是什么组件。“虽然这个项目还没有完成,但我可以说我对 Rust 的体验总体上是积极的。对于那些希望避免经常导致 C++ 代码库中安全漏洞的常见错误的人来说,这是一个不错的选择。

屏幕上有代码的笔记本电脑,旁边是笔记本和铅笔

所以的东西都会生锈

如果您准备好自己使用 Rust,Rust 社区提供了各种各样的资源来学习该语言。但要注意。尽管 Rust 的粉丝们喜欢这门语言,但它确实有一个问题:许多程序员抱怨说,与其他现代语言相比,Rust 的学习曲线很陡峭。“工程师们将学习 Rust 比作学习吃蔬菜,”Miller 说。“一旦他们理解了它,他们就会喜欢它,但它可能会令人生畏。所以我关注的一件事是把西兰花变成布朗尼。让学习体验变得很棒。

为了解决这个问题,亚马逊云科技正在聘请计算机科学教育专家来咨询语言的设计。一些改进很简单,例如在文档中提供其他代码示例。该公司希望为 Rust 贡献的其他想法则更为复杂。例如,重新思考 Rust 的编译器。

但即使对于 Rust 的忠实粉丝来说,仍然很难想象世界上所有的内存不安全代码都在 Rust 中被重写。旧代码需要很长时间才能停用,尤其是在它已经运行良好的情况下。Thompson Reuters 估计,目前仍有大约 2200 亿行 COBOL 正在生产中,COBOL 是一种可以追溯到 1950 年代的更古老的语言,为大约 43% 的银行系统和 95% 的 ATM 刷卡提供支持。Fortran 同样在世界各地的商业应用程序中仍然很常见。

也就是说,并非所有旧的 C/C++ 代码都需要重写。“我们并不是要解决成千上万的项目,”Aas说。“我们专注于几乎每个人都使用的关键组件。像 Web 服务器、内核、TLS、DNS、NTP 这样的东西——互联网的核心结构。

我们专注于几乎每个人都使用的关键组件。

“在某些情况下,您可以逐个组件替换软件组件,”Aas 解释道。“你可以用内存安全的库替换内存不安全的库,随着时间的推移,使整个应用程序更加内存安全。

Prossimo 与 Curl 的合作就是一个很好的例子。Curl 主要用 C 语言编写,但 Prossimo 赞助了在 Curl 中添加对基于 Rust 的 TLS 和 HTTP 网络库的支持。这使得将 Rust 用于应用程序中触及网络边缘的部分成为可能,而无需完全重写 Curl。Curl 并不默认使用基于 Rust 的库,但任何喜欢它们的人都可以打开它们。“我们希望,随着内存安全模块的测试和改进,它们最终将成为所有主要Linux发行版的默认模块,”Aas说。

同时,有一些方法可以对不安全代码进行沙盒化,以最大限度地降低与之相关的风险。例如,Fastly通过基于Rust的WebAssembly运行时运行许多基于C / C++的软件。“这是将所有软件放入 Rust 的巧妙小方法,”McMullen 说。

当然,包括安全漏洞在内的错误是不可避免的。但是,通过选择一种可以防止内存安全问题的编程语言,完全有可能消除这些问题。Rust 提供了一种越来越流行的语言,它不仅性能高、功能强大且开源,而且还使互联网对每个人来说都更安全。


作者其他作品:

【Java】Spring循环依赖:原因与解决方法

OpenAI Sora来了,视频生成领域的GPT-4时代来了

[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读

【Java】深入理解Java中的static关键字

[Java·算法·简单] LeetCode 28. 找出字a符串中第一个匹配项的下标 详细解读

了解 Java 中的 AtomicInteger 类

算法题 — 整数转二进制,查找其中1的数量

深入理解MySQL事务特性:保证数据完整性与一致性

Java企业应用软件系统架构演变史 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3019500.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习:基于K-近邻(KNN)、高斯贝叶斯(GaussianNB)、SVC、随机森林(RF)、梯度提升树(GBDT)预测葡萄酒质量

前言 系列专栏:机器学习:高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目,每个项目都处理一组不同的问题,包括监督和无监督学习、分类、回归和聚类,而且涉及创建深度学…

车辆充电桩|基于Springboot+vue的车辆充电桩管理系统的设计与实现(源码+数据库+文档)

车辆充电桩管理系统 目录 基于Springboot+vue的车辆充电桩管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1 前台功能模块 4.1.1 首页功能 4.1.2 用户后台管理 2 后台功能模块 4.2.1 管理员功能 4.2.2 维修员功能 四、数据库设计 五、核…

公众号流量主的收益怎么样?

公众号之前是一个私域平台,没有粉丝基本是没有推荐的,所以之前入门的门槛还是很高的,但是今年公众号和视频号改变了推流的机制,现在发的文章会进入到流量池中,进入到公域流量,所以发布的优质文章会大爆的&a…

演唱会新风:允许部分歌手闭麦,让观众先唱

演唱会市场的热度从2023年延续至今,出现了一些“倒反天罡”的现象。 例如:让歌迷在台下给歌手唱歌。 5月6日抖音娱乐榜第一的消息是“第一次见辟谣观众没假唱的”。原因是凤凰传奇在常州和北京鸟巢先后举办两场演唱会,其中鸟巢演唱会被认为…

工程技术SCI期刊,中科院三区,一投就中,国人友刊!

一、期刊名称 Industrial Management & Data Systems 二、期刊简介概况 期刊类型:SCI 学科领域:工程技术 影响因子:5.5 中科院分区:3区 出版方式:订阅模式/开放出版 版面费:$4120 三、期刊征稿范…

500的项目研发成本2000?

上个月接了一个小程序的二开项目,功能不多就2个诉求:调整首页数据排序规则,帖子详情增加一个海报,报了一个我认为还比较合适的价格500。 当我拿到代码的那一刻有点小害怕,因为这个客户的之前合作过一次,项…

Chromium编译指南2024 Windows11篇-获取 Chromium 的源代码(五)

前言 在《Chromium编译指南2024(四)》中,我们完成了Git 的初始化配置。 现在,我们将进一步讨论如何获取 Chromium 的源代码,并准备构建所需的文件。 1. 获取Chromium的源代码 在合适的位置准备一个文件夹&#xff…

Python中使用嵌套for循环读取csv文件出现问题

如果我们在使用嵌套循环来读取 CSV 文件时遇到了问题,可以提供一些代码示例和出现的具体错误,这样我可以更好地帮助大家解决问题。不过,现在我可以给大家一个基本的示例,演示如何使用嵌套循环来读取 CSV 文件。 问题背景 我需要读…

spring bean生命周期全部过程

Spring Bean的生命周期包括以下全部过程: 实例化:在Spring容器启动时,根据配置文件或注解等信息创建Bean的实例。属性赋值:如果Bean有属性需要进行初始化,Spring容器会自动为这些属性进行赋值。自定义初始化方法&…

Tomcat端口占用解决方案

Windows操作系统 出现这种情况: Error was Port already in use :40001;nested exception is :java.net.BindException: Address already in use : JVM_Bind; 步骤1:按下winR键,输入cmd 步骤2:输入以下命令 netstat …

PS五官与服装PSD文件大全,男女证件照制作必备素材

一、素材描述 男女证件照服装和五官等PSD文件大全,制作证件照的必备素材合集,轻松制作高端大气的证件照。什么是DR5?DR5是Delicious Retouch 5的简称,这是一款非常优秀的PS人像磨皮美容插件,DR5的主要功能就是针对人像…

【七十九】【算法分析与设计】并查集模板!!!并查集的实现_牛客题霸_牛客网,【模板】并查集 - 洛谷,并查集代码!!!

并查集的实现_牛客题霸_牛客网 描述 给定一个没有重复值的整形数组arr,初始时认为arr中每一个数各自都是一个单独的集合。请设计一种叫UnionFind的结构,并提供以下两个操作。 boolean isSameSet(int a, int b): 查询a和b这两个数是否属于一个集合 void u…

Android 启动提示Android 正在升级...提示源码分析

正常情况下烧录的新机会有这个提示,因为系统启动时候要对系统APP做DexOpt优化,流程如下: 进入performBootDexOpt函数: 提示框代码如下: 而提示框的Tile和Msg如下: 打印Log: 觉得本文对…

炫酷Chrome:插件大礼包

Chrome浏览器以其强大的功能和丰富的扩展插件库而闻名。 其中,有些插件专为提升用户的浏览体验而设计,例如更换Chrome网页背景图、自定义鼠标点击样式,以及提供便捷的页面跳转工具等。 最近,有一款被称为“宝藏插件包”的工具引…

AI图书推荐:Zapier和AI融合来自动化业务流程

这本书《Zapier和AI融合来自动化业务流程》(Automate It with Zapier and Generative AI)由Kelly Goss撰写,这本书是为想要使用Zapier和AI集成功能来自动化重复性任务、提高生产力的微型、小型或中型企业的业务所有者、运营经理和团队准备的。…

字节跳动(社招)四面算法原题

TikTok 进展 又是一期定时汇报 TikTok 进展的推文。 上周,美国总统拜登签署了价值 950 亿美元的一揽子对外援助法案。 该法案涉及强制字节跳动剥离旗下应用 TikTok 美国业务,即 针对 TikTok 非卖即禁的"强抢行为"开始进入九个月(27…

某云eHR PtFjk.mob 任意文件上传漏洞复现

0x01 产品简介 某云eHR是大中型企业广泛采用人力资源管理系统。红海云是国内顶尖的HR软件供应商,是新一代eHR系统的领导者。 0x02 漏洞概述 某云EHR系统PtFjk.mob接口处存在未授权文件上传漏洞,攻击者可上传webshell来命令执行,获取服务器权限。 0x03 复现环境 FOFA:b…

大模型市场爆发式增长,但生成式AI成功的关键是什么?

进入2024年,大模型市场正在爆发式增长。根据相关媒体的总结,2024年1-4 月被统计到的大模型相关中标金额已经达到2023年全部中标项目披露金额的77%左右;其中,从项目数量来看,应用类占63%、算力类占21%、大模型类占13%、…

交换机端口隔离

拓扑图 配置 port-isolate mode命令用来配置端口隔离模式。 缺省情况下,端口隔离模式为二层隔离三层互通。 端口隔离包括双向隔离和单向隔离。接口的单向隔离是指若在接口A上配置它与接口B隔离,则从接口A发送的报文不能到达接口B,但从接口…

MATLAB画图,重磅教程MATLAB的美图及强大的绘图功能|

目录 1.plot() 函数: 2.scatter() 函数: 3.histogram() 函数: 4.bar() 函数: 5.plot3() 函数: 6.imshow() 函数: 7.surf() 函数: 福利:免费送资料 MATLAB(Matrix…