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

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

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 的大规模灵活性允许在最低开销和最准确的报告之间进行权衡。动态更改配置的能力意味着,在现场,有关访问故障位置的准确信息可以通过错误报告和遥测系统中继回其开发人员。

目录
相关文章
|
2月前
|
负载均衡 测试技术 持续交付
高效后端开发实践:构建可扩展的微服务架构
在当今快速发展的互联网时代,后端开发扮演着至关重要的角色。本文将重点探讨如何构建可扩展的微服务架构,以及在后端开发中提高效率的一些实践方法。通过合理的架构设计和技术选型,我们可以更好地应对日益复杂的业务需求,实现高效可靠的后端系统。
|
2月前
|
监控 持续交付 API
构建高效可扩展的微服务架构
在当今快速迭代和竞争激烈的软件市场中,构建一个高效、可扩展且易于维护的后端系统变得尤为重要。微服务架构作为一种流行的分布式系统设计方式,允许开发者将应用程序划分为一系列小型、自治的服务,每个服务负责执行特定的业务功能。本文将探讨如何利用现代技术栈搭建一个符合这些要求的微服务架构,并讨论其潜在的挑战与解决方案。我们将涵盖服务划分策略、容器化、服务发现、API网关、持续集成/持续部署(CI/CD)以及监控和日志管理等关键主题,以帮助读者构建出既可靠又灵活的后端系统。
|
2月前
|
监控 Kubernetes 持续交付
构建高效可扩展的微服务架构:后端开发实践指南
在数字化转型的浪潮中,企业对软件系统的要求日益提高,追求快速响应市场变化、持续交付价值成为核心竞争力。微服务架构以其灵活性、模块化和独立部署的特点,成为解决复杂系统问题的有效途径。本文将深入探讨如何构建一个高效且可扩展的微服务架构,涵盖关键设计原则、技术选型及实践案例,为后端开发者提供一条清晰的指导路线,帮助其在不断变化的技术环境中保持竞争力。
135 3
|
3天前
|
设计模式 Java API
Java 可扩展 API 设计:打造灵活的应用架构
【4月更文挑战第27天】设计可扩展的 API 是构建灵活、易于维护的应用程序架构的关键。Java 提供了丰富的工具和技术来实现这一目标,使开发者能够构建具有高度可扩展性的应用程序。
20 4
|
3月前
|
缓存 分布式计算 负载均衡
构建高效可扩展的后端系统架构
【2月更文挑战第9天】本文将介绍如何构建一种高效可扩展的后端系统架构,以满足不断增长的用户需求和应对大规模并发请求。我们将讨论关键的技术要点,包括分布式计算、负载均衡、缓存和数据库优化等,帮助读者在设计和开发后端系统时做出明智的决策。
|
1月前
|
存储 缓存 监控
构建高效可扩展的后端服务架构
在当今互联网时代,构建高效可扩展的后端服务架构对于企业的业务发展至关重要。本文将探讨如何通过合理设计和优化后端服务架构,实现系统的高性能、高可用性和易扩展性,从而满足不断增长的业务需求和用户规模。
19 0
|
6天前
|
缓存 安全 API
构建高效可扩展的RESTful API:后端架构的艺术
【4月更文挑战第25天】 在数字化时代的浪潮中,一个稳定、高效且易于扩展的后端系统是企业成功的关键。本文将探讨如何构建一个满足现代业务需求的RESTful API。我们将深入分析关键设计原则,如模块化、服务分层、缓存策略以及数据库优化,并讨论这些原则如何融入实际开发流程中。通过具体案例和最佳实践,我们的目标是为读者提供一套实用的工具和方法,以支持他们自己的后端开发工作。
|
18天前
|
运维 监控 自动驾驶
构建可扩展的应用程序:Apollo与微服务架构的完美结合
构建可扩展的应用程序:Apollo与微服务架构的完美结合
34 10
|
29天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
2月前
|
算法 Java C++
【C/C++ 内存知识扩展】内存不足的可能性分析
【C/C++ 内存知识扩展】内存不足的可能性分析
12 0