跳到正文
← 使用教程

Rhinestone permissions真是白名单吗?核fallback、旧permission ID与签名权限

链小知 · 进阶 · 核验 · 依官方文档整理

按自定义EVM Session材料检查授权边界,避免修改新配置却仍留下旧宽权限。

开始前准备

  • 准备自己已有的脱敏配置、日志或状态回执,保留产品版本、对象、字段和日期;缺值不补成成功或零。

1. 固定SDK表面与启用状态

本篇按@rhinestone/sdk 3.0.0自定义EVM Session说明,记录账户、chain、session signer、permission ID和validator启用材料;createSession定义不等已上链启用,可按既有isSessionEnabled结果核。managed Solana的Swig allButManageAuthority不是本套token预算/allowlist/expiry,不能移植相同保障。

检查结果:SDK、EVM链、signer、permission ID与启用结果分别有证据或未知。

2. permissions与intent fallback分开

permissions按ABI绑定地址/函数,参数限制按ABI名称配置。仅列permissions并非严格allowlist:默认仍有wildcard intent-execution fallback,未匹配调用可经Orchestrator的intent target allowlist作为intent执行。检查restrictToActions=true才知道是否移除这一路;函数参数未设限制时,也不能因函数在列表里就认为金额/收件人固定。

检查结果:显式调用权限、参数限制与fallback各有设置依据。

3. 限制调用还要核非空与碰撞规则

restricted Session至少含一个permission或action;actions必须同时有target、selector,不能指fallback sentinel,也不能与permissions在同一target/selector碰撞,否则共用同一on-chain action ID。restrictToActions不可与crossChainPermits或claimPolicies并用,因为其支出/时间守卫依赖fallback。缺raw actions或claim配置时,限制有效性仍未知。

检查结果:非空、target/selector、sentinel、同键碰撞和互斥配置已逐项核。

4. strict salt不替撤销旧宽授权

saltMode默认none使用zero salt,同signer即使actions变更也可复用permission ID,再enable会增加policy而非替换。strict使不同restricted定义有不同ID,但signer仍控制之前每个ID;收窄时须核旧宽Session已撤。disableSession仅撤单Session,disable卸整个validator及其Sessions;prepared或签过撤销意图不等实际撤销成功,缺执行结果保留旧授权未知。

检查结果:新定义、旧ID与撤销范围/结果分别记录;未把换salt当链上撤权。

5. ERC1271签名权限单独验收

普通Session省略signing默认为unrestricted且无有效期;restricted/swap-scoped默认disabled,可显式再启用。scoped按EIP712 domain与canonical primary-type schema匹配,不限制token/amount/spender/deadline等消息值。unrestricted/scoped时间窗为Date配置,不能套另一客户端的Unix参数。当前可配置/enable scoped,但直接scoped signTypedData仍暂不可用直到安全ERC7739发射恢复;失败快返不等策略已绕过或签出成功。

检查结果:执行范围、签名模式、domain/schema、值限制与当前不可用分支均分开。

怎样确认完成

  • 形成输入、官方判定方法、已知结果和未知分支的对照;方法已核,实际运行与本人权限未验证。

常见错误与边界

  • 同signer可能仍持多个旧permission ID;单个新Session变窄不等总体权限变窄。
  • 具体params只能限制已编码字段,不从ABI显示名称或产品宣传推断资金预算和x402支付限制。

本教程根据官方资料整理,尚未完成逐步操作验收。界面、支持范围及费用变化时,先核对官方说明。 纯文本版 · 提交纠错依据