Rusted Firmware-A (RF-A):基于 Rust 的 Arm A 类处理器现代化固件解决方案
这篇文章介绍了 Rusted Firmware-A (RF-A),这是一个由 Arm 和 Google 工程师合作开发的开源项目,旨在用 Rust 语言重新实现 Trusted Firmware-A (TF-A),为 Arm A 类处理器提供一个基于 Rust 的现代化固件解决方案。它专注于内存安全、模块化设计和现代安全标准。
项目介绍
- Rusted Firmware-A (RF-A) 是一个基于 Rust 的重新设计的 TF-A 实现,目标是为最新的 Arm A 类处理器提供一个更安全、更现代的固件解决方案。
- 特点:
- 内存安全:利用 Rust 的特性确保内存安全。
- 无遗留代码:丢弃了传统的遗留支持,使代码库更易于维护。
- 清晰和模块化设计:利用 Rust 的丰富类型系统和错误处理机制。
- 编译时捕获更多错误:减少敏感固件环境中的风险。
- 符合现代安全指导:与监管机构和安全标准机构的指导方针保持一致。
项目背景
- TF-A 的局限性:尽管 TF-A 多年来可靠地服务于 Arm 生态系统,但它积累了大量的遗留代码和进化产物。RF-A 提供了一个重新设计的机会,以解决这些限制。
- C TF-A 的未来:C TF-A 将继续得到支持和维护,包括长期支持(LTS)版本,这些版本将在未来多年内保持一级支持状态。然而,RF-A 是面向未来的实现。
项目范围和目标
- 目标:RF-A 从零开始设计,仅针对最新的 Arm A 类处理器,不支持旧的架构版本和扩展。
- 仅支持 AArch64。
- 需要更现代的特性,如 GICv3、DSU 和硬件辅助一致性。
- 某些接口不会在 RF-A 中重新实现。
- 作为未来产品发布的参考实现。
- 初期计划在 Arm FVP 和 QEMU 平台上使用。
项目状态和路线图
- 当前状态:目前正在进行早期原型开发,并发布了 v0.1 版本,用于公开反馈。
- 开发里程碑:
- 初始设计和架构审查
- Rust 核心固件框架
- 早期平台支持(FVP、QEMU)
- 开放 CI 集成
- v0.1 公开预览
- 关于迁移路径和功能集的 RFC
- 朝向 v1.0:稳定化
- 时间线:计划在未来几年内将 RF-A 产品化。在此之前,预计会有快速迭代和社区驱动的演变。
迁移策略
- 迁移路径:项目成熟后,将提供从 TF-A 到 RF-A 的迁移路径。新固件开发最终将在 RF-A 中进行。
- C TF-A 的支持:
- C TF-A 不会立即被弃用或结束生命周期。
- C TF-A 的 LTS 分支将完全支持其 7 年的生命周期。
- 合作伙伴和供应商可以继续使用 C TF-A 用于现有和即将推出的产品。
常见问题解答
- 为什么用 Rust 编写 RF-A?
- 确保内存安全,减少遗留负担,提高可维护性,并利用 Rust 的类型系统更早地捕获错误。
- C TF-A 有缺陷吗?
- 绝对没有。它一直为我们服务得很好。RF-A 是一个现代化的重新实现机会。
- 两个版本会并行开发吗?
- 目前会。但从长期来看,保持功能对等是不可持续的。最终,RF-A 将成为新开发的默认选择。
- 如果 RF-A 缺少我需要的功能怎么办?
- RF-A 不会支持 TF-A 当前支持的所有功能。如果需要这些功能,请继续使用 C TF-A。
- 在哪里可以找到 RF-A 的路线图和状态?
- 我们将很快发布路线图。在此期间,可以通过 GitHub Issues 跟踪我们的进展。
- 是否有计划将其他 Trusted Firmware 项目迁移到 Rust?
- 目前没有计划将其他 Trusted Firmware 项目迁移到 Rust。现有项目将继续在其当前实现语言中积极维护。
仓库:https://git.trustedfirmware.org/RF-A/rusted-firmware-a
阅读:https://www.trustedfirmware.org/blog/rf-a-blog
Reddit:https://www.reddit.com/r/rust/comments/1mug923/introducing_rusted_firmwarea_rfa_a_rustbased/
ECScape:劫持 Amazon ECS 中的 IAM 角色
我最近在 Black Hat USA 和 fwd:cloudsec 上展示了 ECScape。
PoC 展示了 EC2 上的低权限 ECS 任务如何通过模拟 ECS 代理来劫持同一主机上其他容器的 IAM 凭据。
相应的博客文章:
仓库:https://github.com/naorhaziz/ecscape
Envswitch:管理多组环境变量的工具
envswitch
是一个简单的工具,用于管理多组环境变量。它允许用户通过配置文件快速切换不同的环境变量设置,适用于需要在不同开发环境(如本地、测试、生产)之间切换的场景。
配置文件使用 TOML 格式,支持嵌套环境。用户可以通过命令行工具 es
快速设置或取消设置环境变量,并且可以查看当前激活的环境。
它支持 bash、fish 和 zsh,并提供安装指南和与 Starship 等工具的集成方式。
仓库:https://github.com/paholg/envswitch
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论