rea-reverse

REA 安全吗?如何确认装的是真正的 Reverse Engineer Anything

基于 REA 6.4.0更新于 约 9 分钟读完
本页目录

REA(Reverse Engineer Anything)是 morluto 维护的开源项目。项目火了之后,仿冒者也跟着来了:最近有用户报告,一个外观相似的 GitHub 仓库在提供 Windows 下载,而杀毒软件把下载的文件报成了木马。本文教你用几分钟、自己动手的检查,确认机器上的 REA 来自真正的项目。

适合准备安装 REA,或者已经装了、想再确认一遍的读者。你会学到:

  • REA 的官方来源,以及官方文档里写到的仅有几种安装方式;
  • issue #2424 报告了什么(只讲原文,不做延伸);
  • 怎样用 npm view 读 npm registry 的元数据;
  • 怎样用 npm audit signatures 验证 npm provenance 和 registry 签名,以及它能证明什么、不能证明什么;
  • 怎样检查已经装好的 REA;
  • 发现假冒后去哪里举报。

以下内容基于写作时的 npm 最新版 REA 6.4.0。

先说结论

REA 只通过两个渠道分发:

项目 官方值
源码仓库 github.com/morluto/rea
npm 包 rea-agents
MCP Registry 名称 io.github.morluto/rea
项目网站 rea.tools,由仓库 README 链接

npm 包的 README 只给了一条安装命令:

npx rea-agents setup

安装文档里还写了一个可选的 shell 包装脚本(仅限 macOS 和 Linux),托管在官方仓库里。它只全局安装同一个 npm 包;如果有可用的终端,装完后会接着启动交互式的 rea setup(不想要可以加 --no-setup):

curl -fsSL https://raw.githubusercontent.com/morluto/rea/main/install.sh | bash

REA 6.4.0 没有独立的 Windows .exe,也没有 GUI 下载。包括 Windows 在内的所有平台,REA 都跑在 Node.js 上、从 npm 安装。如果有网页从别的地方给你提供 REA 的可执行文件、压缩包或安装程序,不要运行。

issue #2424 报告了什么

2026-10-13,一位用户在 REA 仓库提交了 issue #2424,标题是 “Warning: fake repo rea-tools/rea distributes a trojan ‘Windows exe’. Please add a README note”。写作时该 issue 仍为 open 状态。按报告者的说法:

  • 仓库 rea-tools/rea 复制了 REA 的 README,并加了一段 “Windows Standalone .exe / GUI”,指向一个名为 “rea-agents: v6.3.0” 的 release;
  • 这个 release 提供一个名为 rea-x64.7z 的压缩包(82.6 MB,SHA-256 64116f55779f1a30250aa2497ada9199221d0f867f98575359a5c5cefa9b78a3);
  • Microsoft Defender 把压缩包识别为 Trojan:Script/Wacatac.B!ml,把解压出的 rea-x64.exe 识别为 Trojan:Win32/Wacatac.B!ml;VirusTotal 上 45 个引擎中有 8 个报毒;
  • 该组织创建于 2026-10-10,报告者认为这个名字 “seems chosen to look like your official site rea.tools”;
  • 报告者表示已经向 GitHub 举报。

报告者建议在 README 里加一句:官方下载只有 npm 包 rea-agents 和 github.com/morluto/rea 的 release。本文后面的方法不依赖这一个仓库,对任何仿冒都适用。

第 1 步:安装前先核对名字

大多数供应链事故发生在复制命令的那一刻。运行任何东西之前:

  1. npm 包名必须是 rea-agents。 不是 rea、rea-tools,也不是 rea-agent。文档里写的是 npx rea-agents setup 和 npm install --global rea-agents。
  2. 仓库所有者是 morluto。 别的账号下的仓库,哪怕 README 一模一样,也不是这个 npm 包的来源。
  3. 安装脚本的地址必须以 https://raw.githubusercontent.com/morluto/rea/ 开头。 文档里只提到这一个 install.sh,它安装的也是同一个 npm 包。如果某个 README 让你把其他域名下的脚本通过管道交给 shell 执行,立刻停下。

为什么要这么较真:复制来的 README 看起来完全一样,仿冒者唯一抄不走的是所有者名和包名。

第 2 步:用 npm view 读 registry 元数据

npm view 只从 registry 读取包的元数据,不安装、不运行任何东西,适合作为第一步:

npm view [email protected] maintainers repository.url homepage mcpName

对 6.4.0,确认以下几点:

  • maintainers 里是 morluto;
  • repository.url 是 git+https://github.com/morluto/rea.git;
  • homepage 是 https://github.com/morluto/rea#readme;
  • mcpName 是 io.github.morluto/rea。

再看这个版本实际是谁发布的:

npm view [email protected] _npmUser --json

6.4.0 的发布者是 “GitHub Actions”,并带有一个 id 为 github 的 trustedPublisher 字段。这说明该版本是通过 npm 的 trusted publishing(OIDC)从 GitHub Actions 工作流发布的,而不是有人在自己电脑上用长期 token 上传的。

想查最新版而不是 6.4.0,去掉版本后缀即可(npm view rea-agents ...)。以后的版本元数据可能不同,请对照官方仓库判断,而不是对照本文。

这一步能证明:公共 registry 上名为 rea-agents 的包声明了官方仓库,维护者是 morluto。不能证明:你下载到的文件确实是从该仓库构建出来的。这要靠 provenance。

第 3 步:检查 provenance 和签名

npm 可以给某个版本附上签名的 provenance 证明,记录 tarball 由哪个源码仓库、哪个 CI 工作流构建,并写入公开的透明日志。某个版本有没有 provenance,直接看元数据就知道:

npm view [email protected] dist.attestations --json

我们在 2026-10-13 对照 registry 核实过:6.4.0 带有 dist.attestations,其中 provenance.predicateType 为 https://slsa.dev/provenance/v1。解码该字段所列 URL 中的证明可以看到,构建来自仓库 https://github.com/morluto/rea,工作流为 .github/workflows/release.yml,分支 refs/heads/main,运行在 GitHub 托管的 runner 上。

在 npm 网站的 包页面 上,同样的信息会显示为 provenance 区块,并链接到源码 commit 和工作流运行记录。

用 npm audit signatures 做密码学验证

读元数据不等于验证。npm audit signatures 会检查项目中已安装的包的 registry 签名和 provenance 证明,所以需要一个 node_modules 目录。在临时目录里做:

mkdir rea-verify && cd rea-verify
npm init -y
npm install --ignore-scripts [email protected]
npm audit signatures

每一步的用意:

  • 临时目录:让检查和你的真实项目隔离。
  • --ignore-scripts:下载包及其依赖,但不执行任何安装脚本。这里只是验证文件,不运行它们。
  • npm audit signatures:报告有多少已安装的包通过了 registry 签名验证、有多少通过了证明验证。只要有签名或证明无效,或者 registry 提供了签名密钥但某个包缺少签名,它就会列出相关的包并以非零状态码退出。注意:包本身没有 provenance 证明并不算错误,而且证明数量是整个依赖树的合计,所以单靠这条命令看不出 rea-agents 自己有没有 provenance,要和上面的 dist.attestations 检查配合使用。加 --json 可得到机器可读的输出。

npm 官方文档建议用较新的 npm CLI 运行这个命令,因为证明格式会更新。如果你的 npm 较旧,先升级 npm 再看结果。

检查完删掉这个目录即可,使用 REA 不需要它。

provenance 能证明什么,不能证明什么

provenance 证明这个 tarball 是由 morluto/rea 里的 GitHub Actions 工作流、从某个具体 commit 构建出来的,而且 registry 上的副本此后没有被改动。本文关心的主要风险——来源不是真仓库的仿冒包或下载——因此被排除。

它不能证明代码没有 bug 或漏洞。npm 官方文档也说明,provenance 并不保证包里没有恶意代码,它给你的是一条可验证的、指向源码的链接,方便你审计,或者决定是否信任维护者。另外,它只覆盖 npm 安装的内容;从某个网站下载的 .exe 或 .7z 完全不享有这些保证。

第 4 步:检查已经装好的 REA

如果之前已经装过 REA,想确认手上的是什么,先看 CLI 的版本和来源:

rea --version
npm ls --global rea-agents

npm ls --global rea-agents 能告诉你 rea 命令是否来自全局 npm 包。如果 rea 存在但 npm 没有列出 rea-agents,先用 command -v rea(macOS/Linux)或 where rea(Windows)查清它从哪来,再决定要不要用。

接着看各个 agent 是怎么启动 REA 的。npx rea-agents setup 注册的 MCP server 要么运行 npx -y rea-agents@<version> mcp,要么运行全局 rea 的绝对路径加参数 mcp。想在不做任何修改的前提下,预览 setup 会在你机器上写入或更新哪些配置文件和 skill 文件:

npx rea-agents@latest setup --dry-run

然后跑就绪检查:

rea doctor

如果某个 agent 配置从陌生的可执行文件或下载目录启动 REA server,删掉那个条目。rea uninstall 会移除 REA 自己写入的注册和 skill 文件,rea uninstall --purge-data 还会清掉 ~/.rea 下的缓存和状态。之后再用 npx rea-agents setup 重新安装。

第 5 步:认清危险信号

遇到下面任何一种情况,都应该停下:

  • 所谓的 “REA” 下载是 .exe、.msi、.7z、.zip 或 .dmg,而不是 npm 包;
  • README 和 REA 一样,但仓库所有者不同;
  • 要求运行托管在 raw.githubusercontent.com/morluto/rea 以外的安装脚本;
  • 某个 “release” 的版本号在 npm 上找不到对应的 rea-agents 版本(npm view rea-agents versions 可列出全部版本);
  • 要你关闭杀毒软件或 SmartScreen 才能“让 REA 正常工作”。REA 自己的 setup 从不提这种要求。

一条简单的规则就能覆盖大部分情况:不是来自 npm 上的 rea-agents、也不是来自 github.com/morluto/rea 的东西,不要运行。

第 6 步:了解 REA 自身的安全模型

装对了包只是前一半,后一半是知道 REA 运行起来会做什么:

  • REA 不替你安装分析引擎。 setup 从不安装或升级 Node.js、npm、Homebrew、Java、Ghidra、IDA、JADX、Binwalk 或 Unblob。它唯一可能安装的外部软件是 Hopper,而且需要你单独、明确地批准。
  • setup 先给计划。 要写的每个路径、每份备份、每个外部动作,都会在你批准前列出来。
  • REA 不是沙箱。 项目的 SECURITY.md 写明,打开不受信任的二进制时,解析和分析交给所选的本地 provider,以你当前用户的权限运行。可疑样本请放在一次性虚拟机里分析,不要在日常使用的电脑上做。
  • 目标由你决定。 只分析你拥有或获得授权的软件,并阅读 DISCLAIMER。

第 7 步:举报假冒或报告问题

按你发现的情况选择渠道:

  • GitHub 上冒充的仓库或账号:在该仓库或个人主页上使用 GitHub 的 “Report abuse” / “Report content” 功能。不要为了“验证一下”去 star、fork 或下载。
  • npm 上可疑的包:在该包 npmjs.com 页面上点 “Report malware”。
  • 不确定什么是官方的,或者发现了尚未被记录的仿冒:到 github.com/morluto/rea/issues 提 issue,写清你观察到的事实,比如 URL 和文件哈希。不要上传恶意文件本身。
  • REA 本身的安全漏洞:不要提公开 issue。按 SECURITY.md 的要求,在仓库 Security 标签页使用 “Report a vulnerability” 私下报告。

如果你已经运行过来路不明的文件:让这台机器先脱离敏感账号,用安全软件做一次全盘扫描,更换在这台机器上用过的凭据;如果是工作设备,按公司的安全事件流程处理。

常见问题

REA 本身安全吗? npm 包 rea-agents 由官方仓库带 provenance 发布,你可以自己验证(第 3 步)。和所有分析二进制的工具一样,它以你的权限运行,处理不受信任的样本时照样要小心。

为什么 npx 会问要不要下载包? 这是 npm 在获取 rea-agents 之前的提示。核对提示里的包名后再确认。REA 的 setup 计划是另一次单独的确认。

以后会有官方 Windows 版吗? issue 报告者提到仓库里有一个计划中的 Windows 便携版。在项目通过 README 和 changelog 正式宣布之前,npm 包是在 Windows 上安装 REA 的唯一方式。即使将来发布,也会出现在 github.com/morluto/rea 的 Releases 里,而不是其他账号的仓库。

skills.sh 是官方来源吗? REA 的 README 链接了 skills.sh 上的 reverse-engineer-anything skill。它只安装指令,不包含 MCP server,也没有任何可执行文件。skill 里有什么,见 Claude Code 逆向 Skill。

下一步