跳转至

2024

Rust语言应用安全性分析

Rust语言简介与安全性概述

Rust语言简介

Rust 是由 Mozilla 主导开发的高性能编译型编程语言,遵循"安全、并发、实用"的设计原则。在过去几年中,Rust编程语言以其独特的安全保障特性和高效的性能,成为了众多开发者和大型科技公司的新宠。许多大厂开始纷纷在自己的项目中引入Rust,比如Cloudflare的pingora,Android中的Binder等等。1 2 3

下面我们举一个例子来看看Rust程序

Rust安全性概述

之所以人们对Rust那么充满兴趣,除了其强大的语法规则之外,Rust提供了一系列的安全保障机制也让人非常感兴趣,其主要集中在以下几个方面:4

  • 内存安全:Rust通过使用所有权系统和检查器等机制,解决了内存安全问题。它在编译时进行严格的借用规则检查,确保不会出现数据竞争、空指针解引用和缓冲区溢出等常见的内存错误。

  • 线程安全:Rust的并发模型使得编写线程安全的代码变得更加容易。它通过所有权和借用的机制,确保在编译时避免了数据竞争和并发问题,从而减少了运行时错误的潜在风险。

  • 抽象层安全检测:Rust提供了强大的抽象能力,使得开发者能够编写更加安全和可维护的代码。通过诸如模式匹配、类型系统、trait和泛型等特性,Rust鼓励使用安全抽象来减少错误和提高代码的可读性。

Rust强大的编译器管会接管很多工作,从而尽可能的减少各种内存错误的诞生。

Rust应用安全性分析

// TODO

GlobalConfusion—TrustZone Trusted Application 0-Days by Design 笔记

摘要

受信任执行环境(TEE)构成了移动设备安全架构的支柱。GlobalPlatform Internal Core API是事实上的标准,它统一了现实世界中各种实现的碎片化场景,为不同的TEE提供了兼容性。

Hexlive研究表明,这个API标准容易受到设计弱点的影响。这种弱点的表现形式导致真实世界用户空间应用程序(称为可信应用TA)中出现关键类型的混淆错误。设计弱点的核心在于一个开放式失败设计,它将对不信任数据的类型检查留给了TA开发者(这个检查是可选的)。API并不强制执行这个容易被遗忘的检查,而在大多数情况下,这会导致任意的读写利用。为了检测这些类型混淆错误,他们设计并实现了GPCheck,这是一个静态二进制分析系统,能够审查现实世界的TA。

简介

ARM64逆向和利用 Part2——Use After Free(笔记)

翻译自ARM64 Reversing and Exploitation Part 2 – Use After Free | 8kSec Blogs,同时修改部分内容

在这篇博文中,我们将利用 vuln 二进制文件中的释放后使用漏洞。本文和下一篇文章的二进制文件可以在此处找到。此 UaF 挑战赛基于 Protostar 使用的挑战赛

Use-after-free漏洞发生在释放一段堆分配内存后的使用中。这可能会导致多种意外行为,包括从程序崩溃到代码执行。

TEEzz:Fuzzing Trusted Applications on COTS Android Devices 笔记

安全和隐私敏感的智能手机应用程序使用可信执行环境(TEE)来保护敏感操作免受恶意代码的侵害。按照设计,TEE 拥有对整个系统的特权访问权限,但几乎无法洞察其内部运作情况。此外,现实世界的 TEE 在与可信应用程序 (TA) 通信时强制执行严格的格式和协议交互,这阻碍了有效的自动化测试。对此,开发了TEEzz,这是第一个 TEE 感知模糊测试框架,即观察TA的执行情况,推断API字段类型和消息依赖性。1

FANS:Fuzzing Android Native System Services via Automated Interface Analysis 笔记

本文提出了一种基于自动化生成的模糊测试解决方案 FANS2 ,用于发现 Android 原生系统服务中的漏洞。FANS 首先收集目标服务中的所有接口,并发现深层嵌套的多层接口以进行测试。然后,它自动从目标接口的抽象语法树(AST)中提取接口模型,包括可行的事务代码、事务数据中的变量名称和类型。此外,它通过变量名称和类型知识推断 transactions 中的变量依赖性,并通过生成和使用关系推断接口依赖性。最后,它使用接口模型和依赖知识生成具有有效格式和语义的事务序列,以测试目标服务的接口。