内存标记扩展:通过架构增强内存安全性

简介: 内存标记扩展:通过架构增强内存安全性

Perface

几十年来,内存安全一直是安全漏洞的主要来源。如今,软件供应商报告说,由于违反内存安全而导致的漏洞占其产品中的大部分安全问题。这得到了研究的支持。根据 2019 年 BlueHat 的演示,Microsoft产品中解决的所有安全问题中有 70% 是由违反内存安全引起的。谷歌也报告了类似的数据,其中超过75%的漏洞违反了内存安全。

有几种针对内存安全的软件缓解技术,例如 ASan 和 HWSAN。但是,这些在性能和电池寿命方面可能都很昂贵,因此不适合广泛部署。Arm 的 Armv8.5-A 内存标记扩展 (MTE) 解决了这些挑战,带来了高性能且可扩展的硬件解决方案,可减少以不安全语言编写的代码中可能存在的内存安全违规行为的可利用性。

谷歌公告

就在最近,谷歌宣布将在Android中采用Arm的MTE。这是一个令人兴奋的消息,谷歌展示了其对Android生态系统安全的持续承诺。它还显示了我们MTE产品的优势,文章指出该技术使“利用内存错误非常困难(如果不是不可能的话)。除了安全优势外,不解决内存安全错误造成的中断还会降低用户满意度并增加软件开发成本。面对Android生态系统面临的所有这些威胁,您可以理解为什么Google对MTE做出了承诺!

内存安全违规

内存安全违规主要有两种类型:空间安全和时间安全。MTE 提供了一种机制,无需检测即可在生产代码中检测这两种类型。

当对象在其真实边界之外被访问时,将违反空间安全。例如,当数据写入缓冲区或其他对象之外时。这可被利用来更改函数指针、保存寄存器或类似内容的目标地址。

当对对象的引用在过期后使用时,通常会在释放对象的内存后使用,从而违反时间安全性 - 利用现有的“释放后使用”错误。利用分配器的知识,攻击者可以放置一个新的恶意对象来代替预期的版本。在该对象上调用的任何函数都会导致对提供给攻击者的程序流的控制权。这也可以构成几种类型攻击的基础。

MTE 如何提供帮助

MTE 有利于安全性,因为它可以在部署前后定位内存安全漏洞。它旨在快速检测内存安全违规,并提供针对试图破坏代码的攻击的可靠性。MTE 实现了对内存的锁和密钥访问。如果密钥匹配,则允许锁定内存访问;否则,可能会记录或错误访问。通过这种方式,可以更轻松地检测难以捕获的内存安全错误,这也有助于常规调试。

在部署之前定位和修复漏洞可减少已部署代码的攻击面,MTE 提高了测试和模糊测试的有效性。部署后大规模检测漏洞支持在漏洞被广泛利用之前被动修复漏洞,MTE 协助进行此检测。

大规模部署 MTE

MTE 非常灵活,可以在产品开发和部署的不同阶段以不同的配置部署。MTE 的大规模灵活性允许在最低开销和最准确的报告之间进行权衡。动态更改配置的能力意味着,在现场,有关访问故障位置的准确信息可以通过错误报告和遥测系统中继回其开发人员。

目录
相关文章
|
8天前
|
设计模式 存储 人工智能
深度解析Unity游戏开发:从零构建可扩展与可维护的游戏架构,让你的游戏项目在模块化设计、脚本对象运用及状态模式处理中焕发新生,实现高效迭代与团队协作的完美平衡之路
【9月更文挑战第1天】游戏开发中的架构设计是项目成功的关键。良好的架构能提升开发效率并确保项目的长期可维护性和可扩展性。在使用Unity引擎时,合理的架构尤为重要。本文探讨了如何在Unity中实现可扩展且易维护的游戏架构,包括模块化设计、使用脚本对象管理数据、应用设计模式(如状态模式)及采用MVC/MVVM架构模式。通过这些方法,可以显著提高开发效率和游戏质量。例如,模块化设计将游戏拆分为独立模块。
33 3
|
16天前
|
存储 API 持续交付
探索微服务架构:构建灵活、可扩展的后端系统
【8月更文挑战第25天】 本文将引导您理解微服务架构的核心概念,探讨其对现代后端系统设计的影响。我们将从基础讲起,逐步深入到微服务的高级应用,旨在启发读者思考如何利用微服务原则优化后端开发实践。
37 4
|
17天前
|
消息中间件 负载均衡 持续交付
构建可扩展的微服务架构:从设计到实现
在微服务架构的世界里,设计和实现可扩展性是至关重要的。然而,开发者往往面临着如何在系统复杂性和性能之间取得平衡的问题。本文通过深入探讨微服务架构的关键设计原则和实践,展示了如何从初期设计到最终实现,构建一个既高效又可扩展的系统架构。
|
18天前
|
存储 监控 安全
大数据架构设计原则:构建高效、可扩展与安全的数据生态系统
【8月更文挑战第23天】大数据架构设计是一个复杂而系统的工程,需要综合考虑业务需求、技术选型、安全合规等多个方面。遵循上述设计原则,可以帮助企业构建出既高效又安全的大数据生态系统,为业务创新和决策支持提供强有力的支撑。随着技术的不断发展和业务需求的不断变化,持续优化和调整大数据架构也将成为一项持续的工作。
|
18天前
|
监控 持续交付 开发者
资源紧张下的创新之道:揭秘高效可扩展架构的设计秘诀,让技术与成本达到完美平衡!
【8月更文挑战第22天】在科技行业的快节奏发展中,设计出经济高效且可扩展的架构是每位工程师面临的挑战。本文提出五大策略:精准需求分析确保目标清晰;模块化设计如微服务架构促进独立开发与扩展;选择成熟技术栈及利用云服务提升系统效能;实施自动化流程如CI/CD加速开发周期;建立全面监控体系保障系统健康。遵循设计原则如SOLID,结合这些策略,即便资源有限也能构建出高质量、灵活应变的系统。
28 0
|
1月前
|
Java 数据安全/隐私保护
一种优秀的虚拟机内存架构 - AQ
【8月更文挑战第8天】AQ虚拟机内存架构是一种创新设计,旨在提供高效、可靠及灵活的内存管理。它通过精细划分内存并采用智能分配策略,动态调整以适应应用需求。对于高内存消耗任务,AQ预留足够连续空间避免碎片化;引入内存压缩技术以增加可用空间;具备精准垃圾回收机制提高内存利用率;同时加强安全性与稳定性防止因内存错误导致的问题。总之,AQ通过先进技术提升了虚拟机性能与稳定性。
|
9天前
|
C# 微服务 Windows
模块化革命:揭秘WPF与微服务架构的完美融合——从单一职责原则到事件聚合器模式,构建高度解耦与可扩展的应用程序
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中借鉴微服务架构思想,实现模块化设计。通过将WPF应用分解为独立的功能模块,并利用事件聚合器实现模块间解耦通信,可以有效提升开发效率和系统可维护性。文中还提供了具体示例代码,展示了如何使用事件聚合器进行模块间通信,以及如何利用依赖注入进一步提高模块解耦程度。此方法不仅有助于简化复杂度,还能使应用更加灵活易扩展。
23 0
|
9天前
|
Kubernetes Cloud Native 调度
云原生技术实践:构建高效、可扩展的微服务架构
本文深入探讨了云原生技术在现代软件架构中的应用,特别是如何利用这些技术构建高效、可扩展的微服务架构。文章首先介绍了云原生的基本概念和优势,然后通过一个实际案例,展示了如何使用Kubernetes和Docker等工具来部署和管理微服务。最后,文章还讨论了云原生技术面临的挑战和未来的发展趋势。 【8月更文挑战第31天】
|
1月前
|
Kubernetes 负载均衡 算法
如何在kubernetes中实现分布式可扩展的WebSocket服务架构
如何在kubernetes中实现分布式可扩展的WebSocket服务架构
35 1

热门文章

最新文章

下一篇
DDNS