亚马逊发布了 Rex,这是一个开源运行时,它通过在允许系统操作之前强制执行授权策略来增强脚本安全性。
Rex(Trusted Remote Execution 的缩写)将脚本与 Cedar 策略配对,并在运行时检查每个操作是否符合这些策略。脚本使用 Rhai 编写,Rhai 是一种轻量级语言,不具备内置的系统访问权限。主机访问只能通过 Rex 提供的操作进行,每个操作都需要在执行前获得授权。

该项目的核心理念很简单——解决脚本经常继承其执行环境权限这一常见的自动化问题。例如,一个旨在检查日志文件的脚本,如果上下文允许,也可能修改或删除文件。Rex 将脚本的预期操作与主机所有者授予的权限分离。
亚马逊指出,这一点对于人工智能代理尤为重要,因为其脚本可能动态生成,无需人工审核每个系统调用。问题可能源于虚假代码、提示注入或过于宽泛的任务解释。Rex 会拒绝任何策略不允许的操作。
Rex 底层使用亚马逊的策略语言 Cedar 来定义脚本访问权限。策略可以允许或拒绝诸如打开文件、读取目录、写入数据、解析主机名或执行其他操作等。脚本没有直接的主机访问权限;所有操作都通过运行时提供的基于 Rust 的 API 进行协调。
根据该项目的 GitHub 代码库,Rex 是一个沙盒化的 Rhai 脚本执行引擎,它将 Cedar 授权应用于所有系统操作。它通过细粒度的授权检查来控制文件 I/O、网络访问、进程管理和系统查询。Rex 还尽可能使用文件描述符而非路径,以降低符号链接和竞态条件风险。
管理员定义 Cedar 策略并使用该策略执行 Rhai 脚本rex-runner。如果脚本尝试执行策略不允许的操作,Rex 会阻止该操作并返回授权错误。例如,如果脚本尝试创建并写入文件,而策略仅允许读取,则写入尝试将失败,直到策略更新为止。
Rex 适用于 Linux 和 macOS,可以使用 Rust 的 Cargo 包管理器进行安装,命令为 `cargo install rex-runner`。该项目采用 Apache 2.0 许可,并在 GitHub 上公开开发。

