Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Rust 视界 | Rustls 完成第三方安全审计

Rust 视界 | Rustls 完成第三方安全审计

作者头像
张汉东
发布于 2020-06-29 07:50:10
发布于 2020-06-29 07:50:10
9710
举报
文章被收录于专栏:Rust 编程Rust 编程

理清头脑混沌,觉醒心智天地

Rustls 是一个用Rust编写的现代TLS库,它使用ring forcryptography和libwebpki进行证书验证。

该项目由CNCF发起和赞助,由Cure53团队的四名专业成员花费30天来完成审计(2020年5月下旬和2020年6月上旬)。因为CNCF有一些项目依赖于rustls,比如 linkerd。本次审计也包括了rustls的依赖库:rustls-native-certs,sct.rs,ring和webpki。(注:Cure53是德国知名网络安全公司)

Cure53 团队创建了一个专用的Slack Channel来沟通交流。审计范围内每个项目的维护代表均被邀请参与讨论,并提供反馈,范围澄清,问题答案等等。

审计结果:只有四个小发现,均不是漏洞(vulnerabilities),只是一些缺陷(weaknesses)。

审计过程

Cure53团队审计过程学习:

  1. 使用 Clippy 扫描代码库中的问题
  2. 跟踪了项目中每一个单元测试。Rustls利用libfuzzer-sys(LLVM的libfuzzer的Wrapper)以及客户端和服务器消息的语料库作为样本输入,因此给定的测试用例已经涵盖了警报和握手消息的大量示例输入,所以Cure53不再关注模糊测试(Fuzz)
  3. Cure53团队还在逻辑方面研究了代码的正确性:TLS状态机实现是否正确、整数算术释放正确处理可能截断的问题、协议解析(QUIC是否满足IETF规范)和实现代码的正确性等。
  4. 特别关注检查可能包含严重逻辑问题的代码,比如webpki中的主机名验证代码。
  5. 对ring的核心功能进行了审计:
    • 验证了基于分组密码的AEAD(例如AES-GCM)的正确实现
    • 检查ChaCha20绑定的功能正确性
    • 检查了Curve25519的基本椭圆曲线算法的功能正确性, 还验证了在其上实现的原语,例如Diffie-Hellman的X25519和数字签名的Ed25519,以确保功能正确性
    • 检查了由环形库暴露的每个恒定时间比较功能的功能正确性
    • 检查Poly1305的绑定是否正确使用
    • 检查了HKDF实现的功能正确性
    • 特别注意支持的RSA PKCS标准和提供的填充方法
    • 对于ECDSA,审核员已验证了针对有偏的随机数生成的最近攻击(例如LadderLeak)的不适用性
    • 特别注意的是,要确定所提供的AES实现是否具有s-box或类似构造的旁通道特性

缺陷

审计团队发现的一些缺陷概述:

  1. 使用 unchecked unwrap 。代码中并不总是正确处理Option的值,使用了类似于 is_some之类的方法,虽然这些代码是安全的,但其实可以用 if let之类进行更严谨的处理。
  2. 在审查webpki 时,发现名称约束代码允许使用非连续子网掩码。这意味着像42.42.42.42这样的子网掩码将被验证者视为有效,这可能会带来意想不到的后果。建议将名称约束中包含不连续子网掩码的证书视为无效。
  3. 在查看DER解析和生成代码时,发现rustls / src / x509.rs文件中的wrap_in_asn1_len函数在长度大于0xffff字节的输入序列上无法正常运行。

小结

审计总结:

  1. Cure53无法发现任何破坏rustls的安全漏洞。
  2. 审核团队成员认为总体代码质量是出色的,这得益于 Rust 语言。
  3. 所检查的代码始终具有良好的文档编制和可读性,表明rustls复杂区的开发和文档编制过程中已根深蒂固地使用了安全流程。从设计的角度以及从实施的角度来看,整个范围都可以被认为是极高的标准。
  4. 从密码学角度来看,密码操作的执行和管理都非常谨慎。可以说,就密码工程而言,rustls 在协议层和基础层中表现出的谨慎程度和质量是卓越的。
  5. 关于rustls或其底层ring 库,未发现任何问题。看得出来 rustls 的开发团队对于如何正确实现TLS,以及避免TLS生态中常见陷阱有着丰富的经验,并且在开发过程中非常注重安全性的开发方法

相关链接:

rustls 源码仓库:

https://github.com/ctz/rustls

rustls官方博文:

http://jbp.io/2020/06/14/rustls-audit.html

审计报告论文:

https://github.com/ctz/rustls/blob/master/audit/TLS-01-report.pdf

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 觉学社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linkerd 2.4带来流量分割和SMI
今天,我们很高兴地宣布Linkerd 2.4的发布。该版本增加了流量分割和服务网格接口(Service Mesh Interface,SMI)支持,高可用性支持脱离了实验状态到毕业,并包含了大量其他改进、性能增强和bug修复。
CNCF
2019/12/04
8160
Linkerd 2.4带来流量分割和SMI
关于第三方云管理工具你应该了解的
尽管云供应商一般会提供强大的云环境管理工具组,但是第三方工具确实能够起到很大作用。高度分散的云基础架构时常需要细分到一定水平的工具,而源生的云监控工具无法满足这一需求。鉴于各环境情况不同,必须由IT管理员来决定哪种工具最为合适。 第三方工具旨在为云数据中心的监控提供“单一管理平台”,这些软件试图集成云管理工具,提供全局性查看整体基础架构的方法。根据数据中心的位置,管理员可以进行探索,找到所有的必要组件,维护健康的环境。 在第三方工具中要找什么? 使用第三方云管理工具的想法是基于人们想要解决源生工具不能管
静一
2018/03/23
7720
gRPC安全审计结果(pdf)
Cure53, Dr.-Ing. M. Heiderich, M. Wege, MSc. D. Weißer, J. Larsson, BSc. J. Hector, MSc. N. Krein, Dipl.-Ing. A. Inführ
CNCF
2019/12/04
1.3K0
Linkerd项目完成安全审计(pdf)
“Linkerd是Kubernetes和其他框架的服务网格。它通过提供运行时调试、可观察性、可靠性和安全性 - 所有这些都不需要对代码进行任何更改,从而使运行服务更容易、更安全。”
CNCF
2019/12/04
7710
Linkerd项目完成安全审计(pdf)
Falco安全审计
定期审计代码库是发布安全软件的一个重要过程。对于依赖于来自各种贡献者的代码的开源项目,审计可能特别重要。我们很高兴地宣布Falco首次安全审计的发布,这是Falco作为CNCF沙箱项目参与完成的。非常感谢CNCF对审计工作的赞助,也非常感谢Cure53团队对审计工作的支持。
CNCF
2019/12/20
1.9K0
KEDA安全审计结果
作者:Amir Montazery,OSTIF。文章在OSTIF 博客[1]交叉发布
CNCF
2023/02/12
1.1K0
KEDA安全审计结果
etcd发布最新版本3.4的第三方安全审计
我们很自豪地宣布,etcd团队已经成功地完成了etcd最新版本3.4的第三方安全审计。通过Trail of Bits对etcd v3.4.3进行了第三方安全审计。我们感谢CNCF对本次审计的赞助。也非常感谢所有etcd维护人员,特别是Gyuho Lee、Hitoshi Mitake和Brandon Philips在整个审计工作过程中与我们一起工作。
CNCF
2020/08/07
9080
开源SPIFFE/SPIRE的安全审计报告
几年前,CNCF 开始为项目执行和开源第三方安全审计,以提高我们生态系统的整体安全性。这些审计有助于识别安全问题,从一般的弱点到关键的漏洞,并为项目维护者提供了解决已识别的漏洞并添加文档以帮助用户的路线图。
CNCF
2021/08/26
1K0
开源SPIFFE/SPIRE的安全审计报告
先别急着“用Rust重写”,可能没有说的那么安全
如果各位朋友还没试过 Rust,这里建议您——赶紧去试!还没用过 Rust cat、grep 和 find?不开玩笑,“一试倾心”说的就是 Rust。 太忙了,没时间?不行,这事特别重要,一定要用 Rust 把原有代码资产重写一遍! 一次重写,终身受益。你的系统将更快、更安全!
深度学习与Python
2023/08/08
5880
先别急着“用Rust重写”,可能没有说的那么安全
Istio公布2022年安全审计结果
Istio 是平台工程师信任的一个项目,用于在其 Kubernetes 生产环境中实施安全策略。我们非常关注代码的安全性,并维护一个健壮的漏洞管理程序[2]。为了验证我们的工作,我们定期邀请项目的外部审查,我们很高兴地公布我们的第二次安全审计的结果[3]。
CNCF
2023/02/12
4160
Istio公布2022年安全审计结果
透过 Rust 探索系统的本原:安全篇
安全是我的老本行,隔一段时间不拉出来谈一谈就不舒服。我个人觉得:做应用不谈安全都是在耍流氓。
tyrchen
2021/04/07
1.3K0
透过 Rust 探索系统的本原:安全篇
大厂案例 - 通用的三方接口调用方案设计(上)
在为第三方系统提供接口时,关键是确保数据的完整性、安全性和防止重复提交。以下是一个基于API密钥(Access Key/Secret Key)和回调机制的设计方案,具有多层次的安全保障。
小小工匠
2024/05/26
4.4K0
大厂案例 - 通用的三方接口调用方案设计(上)
🔍 区块链+AI:智能合约的自动化审计革命
近年来,随着区块链技术的爆发式增长,智能合约作为去中心化应用(DApp)的核心载体,其安全性问题日益成为行业焦点。然而,传统审计方式依赖人工逐行审查代码,效率低、成本高且难以覆盖复杂逻辑漏洞。AI技术的引入,正在掀起一场智能合约审计的自动化革命……
Jimaks
2025/04/03
2970
Rust 接棒 C 语言:盘点那些用 Rust 重写的知名 C 项目
欢迎订阅我在墨问东西写的付费专栏《张汉东的 Rust 频道》,带你深度了解 Rust 语言、生态和商业领域应用相关的一切。本篇文章节选自其中。
张汉东
2024/01/02
1.5K0
Rust 接棒 C 语言:盘点那些用 Rust 重写的知名 C 项目
区块链智能合约的安全性
区块链智能合约的安全性是其大规模应用的关键。由于智能合约一旦部署到区块链上通常不可更改,任何安全漏洞都可能导致不可逆的经济损失。因此,在开发和部署智能合约时,必须高度重视安全性。以下是区块链智能合约开发中需要关注的主要安全方面。
数字孪生开发者
2025/04/08
1730
区块链智能合约的安全性
第三方组件安全剖析 | 洞见
Apache Struts2再曝高危漏洞 前段时间,Apache Struts2又接连曝出了两个高危远程代码执行(Remoce Code Execution,下文简称RCE)漏洞(CVE-2017-5638)。为什么要说“又”呢?那是因为这早就不是Apache Struts2第一次曝出这类漏洞了。 你应该还有印象,早几年前Apache Struts2披露了一系列RCE漏洞,而且他们家在披露RCE漏洞的同时还附带了证明漏洞存在的POC(Proof Of Concept)脚本。在那次事件中,由于POC包含的信息
ThoughtWorks
2018/04/17
9800
第三方组件安全剖析 | 洞见
Linkerd引入了fuzz测试
在过去的几个月里,Ada Logics[1]的团队一直在努力将模糊测试引入到Linkerd 的 Rust 代理[2]。这些 fuzz 测试现在通过谷歌的OSS-Fuzz[3]服务在 Linkerd 上持续运行,为全球 Linkerd 用户提供了另一层安全保障。总的来说,fuzzing 被集成到代理的 7 个依赖项以及代理本身中,其中 5 个项目现在正在 OSS-Fuzz 上持续运行。
CNCF
2021/05/27
4600
Linkerd引入了fuzz测试
代码安全审计之道
代码审计是每个安全研究员都应该掌握的技能。但是网上对于代码审计的介绍文章却比较匮乏。因此本文一方面作为 The Art of Software Security Assessment 一书的阅读笔记,另一方面也结合自己日常工作的经验总结,希望能对国内的安全研究员有个抛砖引玉的帮助。
evilpan
2023/02/12
1.3K0
代码安全审计之道
如何审计一个智能合约
当下区块链技术的增长对分布式共识展示出了无与伦比的机会,智能合约应用在之前时间里面出现了百万美元的丢失,(如:非常有名的DAO Attack事件),这令我们对于智能合约应用的安全性产生了非常大的担忧。在这篇文章中我们将透彻的展示多种针对能合约应用的攻击和为确保智能合约安全性所必须要进行的审计过程,保持最新的开发方式以及讨论从各种可靠的源中得到的灵感。
FB客服
2019/10/16
1.1K0
选择第三方 NPM 包时的 5 条最佳实践
每个开发人员都使用过 npm install 安装依赖。截止目前 NPM 平台上已经托管超过 190w 个包了,面对茫茫多的 package,在选择第三方 NPM 包时应该关注些什么?
Leecason
2022/07/13
7370
选择第三方 NPM 包时的 5 条最佳实践
相关推荐
Linkerd 2.4带来流量分割和SMI
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档