安全扫描
OpenClaw
可疑
medium confidence该技能声明的行为(通过MasterPay进行KYC)是合理的,但在身份验证和声明的主要环境变量方面存在不一致和未明确指定的部分,使得在未澄清前存在风险。
评估建议
此技能声称执行KYC流程并将处理敏感的个人数据和身份文件。在安装或使用前,请向发布者询问:(1) bearer令牌或API凭据从何而来?该技能要求验证'有效的bearer令牌'但未声明任何令牌环境变量或身份验证设置——请确认如何提供和保障身份验证。(2) 为什么primaryEnv设置为AIOT_API_BASE_URL(一个URL,而非密钥)?这看起来是配置错误。(3) 确认目标API基础URL:默认值指向开发主机(payment-api-dev.aiotnetwork.io)。不要将真实PII上传到开发端点;必须使用经过验证的生产端点并要求数据处理政策。(4) 验证技能所有者的身份、隐私/保留政策和合规性(PII处理、保留、谁可以访问上传的文档)。(5) 要求明确说明交易PIN和bearer令牌的存储位置、平台是否会记录它们,以及上传是否在传输中和静态时加密。如果作者能提供更正后的primaryEnv(例如令牌名称)、清晰的认证流程和确认的生产基础URL,这将解决主要问题并提高信任度。...详细分析 ▾
ℹ 用途与能力
该技能的端点和流程与KYC/身份验证工作流程相匹配(用户资料、上传文档、提交KYC)。然而,注册元数据将AIOT_API_BASE_URL标记为主要凭据,这很不寻常——基础URL不是密钥凭据。该技能还硬编码了一个默认的开发API URL (https://payment-api-dev.aiotnetwork.io),这对于面向生产的KYC技能来说出乎意料,可能导致意外将PII发送到开发环境。
⚠ 指令范围
SKILL.md保持在KYC任务范围内(创建用户、更新用户资料、上传文档、轮询状态),但反复要求经过身份验证的调用,并指示智能体'验证会话具有有效的bearer令牌'并提示输入交易PIN。该技能未记录如何获取、存储或提供身份验证令牌(未描述所需的环境变量或认证流程)。这个缺失的认证规范是一个范围/集成缺口:智能体将需要访问该技能未声明的bearer令牌或会话状态。
✓ 安装机制
纯指令技能,没有安装规范或代码文件。这是最低风险的安装模式——该技能本身不会下载或写入任何内容到磁盘。
⚠ 凭证需求
该技能仅声明AIOT_API_BASE_URL作为必需的环境变量,甚至将其列为主要凭据。它未声明任何bearer令牌或API密钥的令牌/密钥环境变量,但API端点需要身份验证。仅请求一个基础URL(并将其作为主要凭据)与声明的身份验证需求不成比例且不一致;目前尚不清楚bearer令牌来自何处(平台会话、另一个技能、隐式用户输入)。
✓ 持久化与权限
该技能不是始终启用的,可由用户调用。它不请求系统路径,也不尝试持久化配置或修改其他技能。未请求提升的持久化权限。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.12026/3/11
- 添加了API基础URL配置部分,支持环境变量覆盖(AIOT_API_BASE_URL)。- 明确了流程和智能体指导中所需的用户资料字段和文档上传方法。- 更新了工具详情:profile现在直接使用地址字段;部分住宅地址端点已从文档中移除。- 扩展并明确了文档上传方法(JSON和multipart/form-data)。- 更新了职业字段指南:必须使用元数据端点返回的值。- 改进并纠正了技能文档中的细节,以提高准确性和开发者体验。
● 无害
安装命令
点击复制官方npx clawhub@latest install aiotnetwork-kyc-identity
镜像加速npx clawhub@latest install aiotnetwork-kyc-identity --registry https://cn.longxiaskill.com
技能文档
当用户需要完成身份验证、上传KYC文档或检查验证状态时,使用此技能。
配置
默认API基础URL为 https://payment-api-dev.aiotnetwork.io。所有端点都相对于此URL。要覆盖默认值(例如用于本地开发):
export AIOT_API_BASE_URL="http://localhost:8080"
如果未设置 AIOT_API_BASE_URL,请使用 https://payment-api-dev.aiotnetwork.io 作为所有请求的基础。
可用工具
create_masterpay_user— 创建MasterPay用户账户(所有MasterPay操作的前提条件)|POST /api/v1/masterpay/users| 需要认证get_kyc_status— 检查当前KYC验证状态和文档上传进度 |GET /api/v1/masterpay/kyc/status| 需要认证get_kyc_metadata— 获取KYC表单的有效文档类型、职业、国籍和国家 |GET /api/v1/masterpay/kyc/metadata| 需要认证submit_kyc— 提交KYC个人数据以供审核(使用用户资料数据)|POST /api/v1/masterpay/kyc/submit| 需要认证upload_kyc_document— 上传KYC文档(护照、身份证、地址证明),通过multipart或base64 JSON |POST /api/v1/masterpay/kyc/documents| 需要认证submit_wallet_kyc— 为卡钱包提交钱包级KYC(需要用户资料电话号码和身份证件ID号码)|POST /api/v1/masterpay/wallets/kyc| 需要认证get_profile— 获取用于KYC提交的用户资料数据 |GET /api/v1/profile| 需要认证update_profile— 更新用户资料数据(english_first_name, english_last_name, dob, gender, nationality, occupation, source_of_fund, phone_number, phone_country_code, country, address1, address2, address3, city, state, zip, billing_same_as_home)|PUT /api/v1/profile| 需要认证get_document— 获取存储的身份证明文件信息 |GET /api/v1/profile/document| 需要认证update_document— 更新身份证明文件(字段:identity_type (passport|identity_card), id_number — 钱包KYC需要id_number)|PUT /api/v1/profile/document| 需要认证
推荐流程
完成KYC验证
从用户资料设置到KYC批准的完整流程
- 创建MasterPay用户:POST /api/v1/masterpay/users — 在任何MasterPay操作之前需要一次
- 获取元数据:GET /api/v1/masterpay/kyc/metadata — 了解有效的国籍、职业、文档类型
- 更新用户资料:PUT /api/v1/profile,包含 {english_first_name, english_last_name, dob (YYYY-MM-DD), gender, phone_number, phone_country_code(带'+'前缀,例如'+65'), nationality, occupation(使用元数据端点返回的值), source_of_fund, country(例如'SG', 'ARGENTINA'), address1, city, state, zip, billing_same_as_home: true}
- 上传文档:POST /api/v1/masterpay/kyc/documents — JSON请求体:{document_type, file_data (base64), file_name, mime_type (image/jpeg|image/png|application/pdf)}。有效的文档类型:PassportFront, PassportBack, NationalIdFront, NationalIdBack, DrivingLicenseFront, DrivingLicenseBack, Selfie, ProofOfAddress。也支持multipart/form-data,使用'file'字段。
- 提交KYC:POST /api/v1/masterpay/kyc/submit — 使用用户资料数据,解析国家代码为名称,并发送到MasterPay
- 轮询状态:GET /api/v1/masterpay/kyc/status — 等待'approved'(可能需要几分钟到几天)
规则
- 必须在任何KYC、钱包或卡片操作之前创建MasterPay用户(POST /masterpay/users)——这是一次性设置步骤
- 用户资料必须包含个人信息 AND 地址字段(country, address1, city, state)才能提交KYC
- 在用户资料的国家字段中使用国家名称或ISO alpha-2代码(例如'SG', 'ARGENTINA')——后端将它们解析为完整的国家名称发送给MasterPay
- 用户资料中的电话国家代码必须包含'+'前缀(例如'+65')——MasterPay需要它
- 文档应在提交前上传——MasterPay需要护照/身份证和地址证明,但我们的后端不会在没有它们的情况下阻止提交
- KYC审核可能需要几分钟到几天——定期轮询状态
- 批准后,KYC无需重复
- 文档上传同时支持JSON(document_type, file_data为base64, file_name, mime_type)和multipart/form-data(file字段 + document_type表单字段)——每个文件最大15MB
智能体指导
执行此技能时,请遵循以下指令:
- 始终遵循文档化的流程顺序。不要跳过步骤。
- 如果工具需要身份验证,请在调用前验证会话具有有效的bearer令牌。
- 如果工具需要交易PIN,每次都向用户索要新的。永远不要缓存或记录PIN。
- 永远不要暴露、记录或持久化秘密(密码、令牌、完整卡号、CVV)。
- 如果用户请求的操作超出此技能范围,请拒绝并建议适当的技能。
- 如果步骤失败,检查错误并在重试前遵循以下恢复指导。
- 在任何KYC操作之前,通过调用
create_masterpay_user确保MasterPay用户存在。这是一次性设置。其他MasterPay处理器也会自动创建用户,但显式调用是良好实践。 - 用户资料字段使用这些确切的JSON键:
english_first_name,english_last_name,dob(格式:YYYY-MM-DD),gender,nationality,occupation,source_of_fund,phone_number,phone_country_code。 - 职业必须是元数据端点(
get_kyc_metadata)返回的值。有效值包括:GovernmentOfficers, GovernmentWorkers, SoeAndStateOrganExecutives, SoeAndStateOrganEmployees, PrivateBusinessOwnersAndExecutives, PrivateBusinessEmployees, NonGovernmentOrganizationExecutives, NonGovernmentOrganizationEmployees, SoleTraders, Retirees, Students, Unemployed, Freelancer。始终先调用元数据以获取当前列表。 - 在调用
submit_kyc之前,使用所有必需字段(包括地址字段:country, address1, city, state, zip, billing_same_as_home)完成用户资料(update_profile)。后端验证用户资料字段是否存在,如果任何字段缺失则返回400。 - 通过JSON上传文档需要:
document_type(例如PassportFront, NationalIdFront, Selfie, ProofOfAddress),file_data(base64编码),file_name,mime_type(image/jpeg, image/png或application/pdf)。或者,使用multipart/form-data,包含file字段和document_type表单字段。 update_document端点(PUT /profile/document)接受:identity_type("passport"或"identity_card")和id_number(护照号码、NRIC等)。在钱包KYC期间,id_number作为MasterPay的orgCode发送。在调用submit_wallet_kyc之前始终设置id_number。submit_wallet_kyc需要:(1) 包含phone_number + phone_country_code的用户资料,(2) 设置了id_number的身份证明文件。如果缺少id_number,它将以INCOMPLETE_PROFILE失败。- KYC审核需要几分钟到几天。定期轮询
get_kyc_status——没有推送通知。 - 在用户资料的国家字段中使用ISO alpha-2国家代码(例如"SG", "MY")。电话国家代码包含"+"前缀(例如"+65")。