MultiversX dApp 安全审计 Skill:在用户按下“签名”之前,先把前端漏洞找出来
核心结论速览
- 这是一款专注前端 dApp 安全的 AI 技能,审计对象是使用
@multiversx/sdk-dapp构建的 React/TypeScript 应用,而不是链上智能合约本身。 - 它覆盖六大主线:交易构造、签名流程、敏感数据、XSS、API 通信、认证与会话,并附带审计清单与报告模板。
- 最典型的威胁是载荷操纵与盲签名:用户在不知情的情况下签署了恶意交易,这是纯合约审计工具完全看不到的盲区。
- 通过 AI 技能的方式“一键接入”,意味着不用搭建静态扫描环境,把代码或配置贴进对话即可获得结构化风险清单。
- 适合前端开发、Web3 项目方、安全评审人员;对不涉及钱包与签名的普通 Web 应用价值有限。
1. 该技能叫什么?如何一键安装 AI 技能提升开发效率?
1.1 基本信息
| 项目 | 内容 |
|---|---|
| 技能中文名 | MultiversXdApp安全审计Skill |
| 技能英文名 | multiversx-dapp-audit |
| 技能 ID | 12539 |
| 审计对象 | 基于 @multiversx/sdk-dapp 的 React/TypeScript 前端 dApp |
| 关注范围 | 客户端安全、交易构造、钱包集成、数据暴露、认证会话 |
1.2 它到底解决什么问题?
智能合约审计市场已经相当成熟,但绝大多数资金损失事件的第一现场其实是浏览器:用户连上了钱包、看到了一笔“看起来正常”的交易、点了确认,然后资产被转走。问题往往不在合约里,而在前端——地址被拼错、函数名被攻击者拼接进 data 字段、金额显示与实际不符、助记词被写进 localStorage、访问令牌出现在 URL 里。
这个技能把资深 Web3 前端安全审计员的经验固化成了一套可复用的判断框架:它不仅告诉 AI“要检查什么”,还给出了易受攻击写法与安全写法的对照、可执行的检查清单,以及一份标准化的审计报告模板。你不再需要向模型反复解释“什么是盲签名”“MultiversX 的交易 data 字段怎么拼”,技能本身已经带上了这些上下文。
1.3 一键安装的思路与步骤
AI 技能的安装通常是“装载一次、全局复用”,具体到不同客户端入口略有差异,以下为通用流程(具体命令、菜单路径与是否收费请以官方说明为准):
- 准备前提:确认你使用的 AI 客户端/IDE 插件支持技能(Skill)机制,并能读取本地项目文件或接受代码粘贴;准备好待审计的 dApp 仓库或关键文件(如交易构造模块、钱包连接模块、
initApp配置)。 - 找到安装入口:在客户端的技能市场/技能管理面板中搜索技能英文名
multiversx-dapp-audit或技能 ID12539;若为离线技能包,则通过“导入技能/上传技能”入口加载。 - 执行安装并启用:按界面提示确认安装,安装完成后在技能列表中启用该技能,确保其在当前会话中处于激活状态。
- 验证是否生效:新建一个对话,输入一句触发语,例如“请用 MultiversX dApp 审计规则检查下面这段交易构造代码”,如果模型返回的内容包含交易预览要素、白名单校验、签名前确认等结构化条目,说明技能已正常加载;若回答泛泛而谈,则回到第 3 步检查启用状态。
- 固化到工作流:把技能调用写进团队的前端合并请求检查清单,或接入 CI 评审环节,让每次涉及钱包与交易的前端改动都自动过一遍。
2. 该技能的主要功能和特点
与“通用代码审查”相比,这个技能的差异化在于它知道 Web3 前端的攻击面长什么样。主要能力包括:
- 交易构造审计:检查接收地址是否校验、
data载荷是否由用户输入直接拼接、函数是否白名单化、金额与燃气限制是否合理,防止用户签署被操纵的交易。 - 签名流程审计:识别盲签名风险(用户只看到一个哈希就签名),要求签名前展示接收地址、转账金额、代币类型(EGLD / ESDT / NFT)、调用函数与燃气成本估算。
- 敏感数据处理审计:扫描私钥、助记词、种子在
localStorage/sessionStorage中的存储,检查控制台日志与 API 请求中的敏感字段泄漏,推荐使用sdk-dapp的安全会话管理(会话级存储 + 短生命周期nativeAuth令牌)。 - XSS 与开放重定向防护:重点盯
dangerouslySetInnerHTML、eval()、未校验的returnUrl跳转,并给出 DOMPurify 清理与重定向白名单的修复写法。 - API 通信安全:强制 HTTPS、校验响应结构(如余额字段必须是数字字符串),避免盲目信任后端返回。
- 认证与会话审计:验证钱包连接过程中只共享公钥地址、注销时清空会话数据、受保护路由正确守卫、敏感操作要求重新认证。
- 可落地的审计方法论:内置浏览器 DevTools / 代理工具(Burp Suite、mitmproxy、Charles Proxy)的网络分析思路,以及
grep危险模式检索命令和安全响应头检查项。 - 标准化交付物:提供按“关键 / 高 / 中 / 信息性”分级的报告模板,让审计结果能直接交给开发排期修复。
和普通工具比强在哪? 通用 SAST 工具能告诉你“这里用了 dangerouslySetInnerHTML”,但说不清“这笔交易该不该让用户签”;合约审计工具看得懂链上字节码,但看不见前端如何拼装交易载荷。这个技能恰好卡在两者的缝隙里。
3. 如何使用该技能?
步骤一:明确审计范围
先告诉技能你要审什么。推荐一次聚焦一个模块,而不是整个仓库。
示例输入:“请审计
src/transaction/sendTransaction.ts,重点是交易构造与参数校验。”
步骤二:提供代码或配置上下文
把关键文件内容贴入对话,或让客户端直接读取文件。必须包含的信息有:交易构造代码、钱包连接初始化(如 initApp 与 UnlockPanelManager)、API 请求封装、路由守卫逻辑。
如果只想做快速体检,可以直接给出配置片段,例如:
initApp({
storage: { getStorageCallback: () => sessionStorage },
dAppConfig: { nativeAuth: { expirySeconds: 3600 } }
});
技能会据此判断存储是否为会话级、令牌生命周期是否过长。
步骤三:按清单逐项获得结论
技能会围绕“交易安全 / 数据安全 / XSS 预防 / 会话安全”四组清单给出结论。你可以主动追问其中一项,例如:
示例输入:“只检查签名环节,是否存在盲签名?用户签名前能看到哪些字段?”
步骤四:获取修复建议
针对每个问题,技能会给出易受攻击写法与安全写法的对照。例如函数白名单化的修复方向:
const allowedFunctions = ['stake', 'unstake', 'claim'];
if (!allowedFunctions.includes(functionName)) {
throw new Error('无效函数');
}
步骤五:生成审计报告
最后让技能输出报告,格式为:范围(应用名、版本、审查文件数)→ 发现(按关键、高、中、信息性分级,含位置与建议)→ 建议总结 → 结论。这份报告可以直接进入项目文档或提交给甲方。
步骤六:回归验证
修复完成后,把改动后的代码再贴一次,让技能对照原清单复查,确认关键项已闭环。
4. 同类型竞品对比分析
| 方案 | 定位 | 核心功能 | 安装/使用门槛 | 适用场景 | 优势与不足 |
|---|---|---|---|---|---|
| multiversx-dapp-audit(本技能) | Web3 前端 dApp 安全审计助手 | 交易构造、签名、敏感数据、XSS、API、会话六维审计 + 报告模板 | 低,安装技能后对话调用即可,无需额外环境 | React/TypeScript + sdk-dapp 项目的前端安全评审 |
优势:懂 MultiversX 业务语义,能判断“这笔交易该不该签”;不足:依赖人工提供代码上下文,不做自动化全量扫描 |
| 通用静态分析工具(如 Semgrep / SonarQube) | 通用代码质量与安全扫描 | 规则匹配、危险函数检测、CI 集成 | 中,需配置规则集与流水线 | 团队级持续集成、批量代码规范治理 | 优势:自动化程度高、覆盖面广;不足:缺少 Web3 业务语义,报大量与签名安全无关的噪声 |
| 智能合约审计工具(如 Slither 类静态分析器) | 链上合约漏洞检测 | 重入、溢出、权限等合约级漏洞 | 中高,需要合约编译环境 | 智能合约上线前审计 | 优势:合约层检测深入;不足:完全不覆盖前端与钱包交互,看不见载荷操纵和盲签名 |
| 人工安全审计服务 | 商业渗透测试与代码审计 | 深度人工分析、报告交付 | 高,需要排期与商务流程,费用以服务方报价为准 | 高价值项目上线前的正式安全认证 | 优势:结论权威、可出具合规报告;不足:周期长、成本高,中小团队难以高频使用 |
一句话选型建议:合约层用合约工具,正式上线用人工审计,日常前端迭代用本技能做“低成本高频体检”。
5. 该技能的典型应用场景与实际体验情况
场景一:前端团队上线前的自查
- 角色与痛点:3~5 人的 Web3 前端小组,没有专职安全工程师,钱包连接和交易发送模块往往是“抄示例改的”,不确定是否存在隐患。
- 使用方式:把交易构造、
initApp配置、注销逻辑三处代码提交给技能,逐条对照清单。 - 实际体验:上手几乎没有门槛,提问即得结果。常见收获是发现“金额没有二次确认”“
data字段直接拼接用户输入”“注销后sessionStorage未清空”这类高频问题。注意:务必贴完整上下文,只给片段容易得到过于保守的结论。
场景二:钱包集成方案评审
- 角色与痛点:技术负责人需要评估第三方或外包团队交付的钱包连接实现是否安全。
- 使用方式:重点审计
UnlockPanelManager初始化逻辑,确认连接过程中只共享公钥地址、无私有数据传输,并检查令牌是否出现在 URL 或控制台。 - 实际体验:技能会明确列出“应检查”的认证步骤,形成可对照的检查项,评审会议上的沟通成本明显下降。
场景三:安全代码规范落地
- 角色与痛点:团队想建立前端安全规范,但写出来的文档太抽象,开发看不懂也不执行。
- 使用方式:让技能围绕
grep -r "dangerouslySetInnerHTML" src/、grep -r "privateKey\|mnemonic\|seed" src/这类检索命令,产出一份可执行的“禁止模式清单”,写入代码评审模板。 - 实际体验:由于技能给的是正反代码对照,开发接受度比纯文字规范高得多。注意:检索命令只覆盖显性模式,混淆后的变量名仍需人工判断。
场景四:应急响应与事后复盘
- 角色与痛点:出现可疑签名事件后,需要快速定位前端是否存在载荷操纵或开放重定向。
- 使用方式:结合浏览器 DevTools 网络面板的交易数据、请求头与 WebSocket 消息,交给技能做交叉分析,再输出分级报告。
- 实际体验:报告模板省去了整理时间,结论能直接用于对内说明。注意:技能基于你提供的证据推理,证据不完整时结论需谨慎采信。
6. 该技能能为用户带来的价值
- 填补审计盲区:把“前端—钱包—签名”这条最容易被忽略的链路纳入审计范围,直接对应真实世界的高频资金损失路径。
- 显著压缩自查成本:过去需要资深审计员逐行阅读的检查项,现在变成“贴代码—出清单—拿修复建议”三步,团队可以在每次合并前跑一遍。
- 降低专业门槛:开发者不需要先成为安全专家,也能照着正反代码对照完成修复,安全能力从“个人经验”变成“团队资产”。
- 提升交付质量与信任度:标准化的分级报告可作为对外交付材料的一部分,让项目方、合作方看到明确的安全投入。
- 长期复利:反复使用后沉淀出的“禁止模式清单”和评审模板,会成为团队代码库的长期免疫系统,越用越省力。
7. 常见问题 FAQ
Q1:这个技能怎么安装?需要写代码或配置环境吗?
A:它是一个 AI 技能,通常在支持技能机制的客户端中通过技能市场搜索技能英文名或通过技能 ID 搜索安装,也可导入技能包,安装后启用即可使用,无需搭建独立的扫描环境。具体入口与命令以官方说明为准。
Q2:它是免费的吗?
A:技能本身的获取方式与计费策略由官方渠道决定,请以官方说明为准;使用时消耗的是你所使用 AI 客户端的对话额度。
Q3:它适合谁用?非 MultiversX 项目能用吗?
A:最适合使用 @multiversx/sdk-dapp 构建 React/TypeScript dApp 的前端开发者、技术负责人与安全评审人员。其中“XSS 预防”“令牌不落 URL”“HTTPS 强制”等通用安全项对普通 Web 应用同样有参考价值,但交易构造与签名相关的判断是本技能的核心价值,其他链的项目需要自行迁移概念。
Q4:它能替代人工安全审计或智能合约审计吗?
A:不能。它聚焦前端客户端安全,不分析链上合约字节码,也不做自动化全量扫描。合理定位是“日常高频体检 + 上线前自查”,正式上线与高价值场景仍建议叠加合约审计工具与人工审计服务。
Q5:为什么我得到的回答比较笼统?
A:多数情况是上下文不足。请确保提供完整的交易构造代码、钱包初始化配置、API 封装与路由守卫,并明确告诉技能“本次只审签名环节”或“只审敏感数据存储”,聚焦范围后的结论会具体得多。