内存安全语言
内存安全语言 是什么?
内存安全语言Rust、Go、Swift、Java、C# 等内存安全语言可在源头消除导致 C/C++ 大多数可利用漏洞的空间与时间型内存错误。
内存安全语言在编译期或运行期强制执行边界检查、所有权或受垃圾回收管理的生命周期以及类型一致性。Rust 通过所有权与借用检查器实现无 GC 的内存安全;Go 与 Swift 采用受管分配与带边界检查的切片;Java、C# 则依赖托管运行时。美国国家网络总监办公室(ONCD)2024 年的《Back to the Building Blocks》报告建议在新代码与关键组件中采用内存安全语言,以消除约 60%-70% 的高危内存相关漏洞。落地策略包括重写热点模块、使用 strangler 模式以及在 FFI 边界与遗留系统互操作。
● 示例
- 01
Android 用 Rust 重写部分蓝牙协议栈以降低 UAF 风险。
- 02
AWS 将 Firecracker 与 s2n-tls 的部分组件改用 Rust 实现以提升内存安全性。
● 常见问题
内存安全语言 是什么?
Rust、Go、Swift、Java、C# 等内存安全语言可在源头消除导致 C/C++ 大多数可利用漏洞的空间与时间型内存错误。 它属于网络安全的 应用安全 分类。
内存安全语言 是什么意思?
Rust、Go、Swift、Java、C# 等内存安全语言可在源头消除导致 C/C++ 大多数可利用漏洞的空间与时间型内存错误。
内存安全语言 是如何工作的?
内存安全语言在编译期或运行期强制执行边界检查、所有权或受垃圾回收管理的生命周期以及类型一致性。Rust 通过所有权与借用检查器实现无 GC 的内存安全;Go 与 Swift 采用受管分配与带边界检查的切片;Java、C# 则依赖托管运行时。美国国家网络总监办公室(ONCD)2024 年的《Back to the Building Blocks》报告建议在新代码与关键组件中采用内存安全语言,以消除约 60%-70% 的高危内存相关漏洞。落地策略包括重写热点模块、使用 strangler 模式以及在 FFI 边界与遗留系统互操作。
如何防御 内存安全语言?
针对 内存安全语言 的防御通常结合技术控制与运营实践,详见上方完整定义。
内存安全语言 还有哪些其他名称?
常见的别称包括: MSL, Memory-safe 语言。
● 相关术语
- appsec№ 670
内存安全
内存安全指程序绝不读取、写入或执行未合法分配的内存,从而消除整类漏洞的属性。
- appsec№ 953
Rust 安全特性
Rust 通过所有权、借用与生命周期在编译期强制内存与线程安全,在不依赖垃圾回收的前提下消除 UAF 与数据竞争等典型未定义行为。
- appsec№ 217
控制流完整性(CFI)
控制流完整性(CFI)将程序的间接调用和返回限制在预先计算的合法目标集合内,阻断 ROP 与 JOP 等控制流劫持利用。
- appsec№ 064
地址空间布局随机化(ASLR)
ASLR 在每次运行时随机化代码、栈、堆和共享库的内存地址,使攻击者无法可靠预测利用所需的目标地址。
- appsec№ 925
面向返回的编程(ROP)
ROP 是一种代码复用利用技术,通过把以 RET 结尾的短指令序列(gadget)串成链来执行任意计算,而无需注入新代码。
- appsec№ 545
Intel CET
Intel CET(控制流强制技术)是一项 CPU 功能,结合硬件影子栈与间接分支跟踪(IBT)以阻断 ROP、JOP 和 COP 利用。
● 参见
- № 581内核 ASLR(KASLR)