Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Token Approval Checker

钱包授权管理工具,检查 ERC20/ERC721 代币授权风险,识别无限授权和高风险授权。每次调用收取 0.001 USDT。当用户提到"检查授权"、"撤销授权"、"Token Approval"、"高风险授权"、"MetaMask授权"时使用。Wallet authorization management to...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 172 · 0 current installs · 0 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
high confidence
!
Purpose & Capability
The skill claims only to check/manage wallet token approvals, which could legitimately include charging for the service — but the SKILL.md embeds a SkillPay billing integration (charging 0.001 USDT) instead of declaring billing credentials as required environment variables. The file also references external services (skillpay.me) and assumes the ability to call external APIs; these capabilities are not surfaced in the skill metadata (no required env, no homepage, unknown source).
!
Instruction Scope
SKILL.md contains concrete runtime code that instructs the agent to call a billing API, charge users, and then call a checkWalletApprovals() function (not provided). It also includes example revoke code using ethers.js. The instructions therefore assume network access, the ability to perform blockchain queries and transactions, and Node runtime libraries — none of which are declared. The billing flow and payment link generation also cause user-related side effects (charging), which is broader than a passive 'report-only' checker.
Install Mechanism
There is no install spec (instruction-only), which minimizes disk writes, but the included JavaScript examples require node APIs (fetch, ethers) and third-party packages that are not declared. This mismatch (no declared dependencies but code that needs them) is an engineering inconsistency and could lead to unexpected failures or hidden additional install steps later.
!
Credentials
Despite declaring no required environment variables or primary credential, SKILL.md hard-codes an API key (BILLING_API_KEY = 'sk_b82c6...') for the external billing service. Embedding a secret like this in the skill is a serious red flag: it can be used to query/charge accounts on the billing provider, and it was not declared as a required credential or explained. No explanation is given for why the key is embedded rather than provided via a secure env var or the platform's billing integration.
Persistence & Privilege
The skill is not always-enabled and does not request persistent or elevated platform privileges in the metadata. It is user-invocable and allows autonomous invocation (platform default), which is normal. There is no evidence in the metadata that the skill modifies other skills or system-wide settings.
Scan Findings in Context
[hardcoded-api-key-in-SKILL.md] unexpected: SKILL.md contains a hard-coded billing API key (BILLING_API_KEY = 'sk_b82c6...'), which is not declared in requires.env and is not necessary to state in plaintext for a token-approval checker. This key could be abused to read balances or charge users via the referenced skillpay.me API.
What to consider before installing
Do not install or enable this skill until the following are resolved: (1) The hard-coded billing API key must be removed from the SKILL.md and moved to a secure, platform-provided secret (or the skill should rely on the platform's billing integration). (2) The vendor/source must be identified and verified (skill has unknown source and no homepage). (3) Request the complete implementation: where checkWalletApprovals is implemented, how revoke operations are performed, and what dependencies are required (ethers.js, node fetch). (4) Confirm the billing provider (skillpay.me) is legitimate and that the skill will not charge users silently or beyond agreed amounts. (5) Never provide private wallet keys; confirm the skill only needs a public wallet address and does not request signing keys. If the author cannot or will not provide a clean, auditable implementation and remove embedded secrets, treat the skill as untrusted.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.1
Download zip
latestvk97d1wwq0aea7wnvqeek3jjnsh82a6db

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

🔐 Clawdis

SKILL.md

Token Approval Checker / 钱包授权检查器

English | 中文


<a name="english"></a>

English

Overview

Check and manage your wallet's token approvals. Identify unlimited approvals and high-risk authorizations to protect your assets.

Pricing: 0.001 USDT per call

Supported Blockchains

ChainToken Approval Checker
Ethereumhttps://etherscan.io/tokenapprovalchecker
BSChttps://bscscan.com/tokenapprovalchecker
Polygonhttps://polygonscan.com/tokenapprovalchecker
Arbitrumhttps://arbiscan.io/tokenapprovalchecker
Optimismhttps://optimistic.etherscan.io/tokenapprovalchecker
Avalanchehttps://snowtrace.io/tokenapprovalchecker
Basehttps://basescan.org/tokenapprovalchecker

Risk Levels

LevelIconConditionAction
Critical🔴Unlimited + Unverified ContractRevoke Immediately
High🟠Unlimited + Low Liquidity TokenRevoke Recommended
Medium🟡Unlimited + Known ProtocolConsider Revoking
Low🟢Limited Amount + Known ProtocolCan Keep

How to Use

User: Check my wallet 0x1234...5678 for approval risks
Claude: [Charge 0.001 USDT] → [Analyze approvals] → [Generate risk report]

Revoke Tools

ToolLinkFeatures
Revoke.cashhttps://revoke.cashMulti-chain, Recommended
Unrekthttps://app.unrekt.netBatch revoke
Etherscanhttps://etherscan.io/tokenapprovalcheckerOfficial tool

Known Protocol Whitelist

  • DEX: Uniswap, SushiSwap, PancakeSwap, 1inch
  • Lending: Aave, Compound, MakerDAO
  • NFT: OpenSea, Blur, Magic Eden
  • Staking: Lido, Rocket Pool

<a name="中文"></a>

中文

概述

检查和管理你的钱包代币授权,识别无限授权和高风险授权,保护资产安全。

费用: 每次调用 0.001 USDT

支持的区块链

Token Approval Checker
Ethereumhttps://etherscan.io/tokenapprovalchecker
BSChttps://bscscan.com/tokenapprovalchecker
Polygonhttps://polygonscan.com/tokenapprovalchecker
Arbitrumhttps://arbiscan.io/tokenapprovalchecker
Optimismhttps://optimistic.etherscan.io/tokenapprovalchecker
Avalanchehttps://snowtrace.io/tokenapprovalchecker
Basehttps://basescan.org/tokenapprovalchecker

风险评级标准

等级图标条件建议
极高危🔴无限授权 + 未验证合约立即撤销
高危🟠无限授权 + 低流动性代币建议撤销
中危🟡无限授权 + 知名协议可考虑撤销
低危🟢有限额度 + 知名协议可保留

使用方法

用户: 检查我的钱包 0x1234...5678 的授权风险
Claude: [扣费 0.001 USDT] → [分析授权] → [生成风险报告]

撤销授权工具

工具链接特点
Revoke.cashhttps://revoke.cash多链支持,推荐
Unrekthttps://app.unrekt.net批量撤销
Etherscanhttps://etherscan.io/tokenapprovalchecker官方工具

知名协议白名单

以下协议的授权风险较低:

  • DEX: Uniswap, SushiSwap, PancakeSwap, 1inch
  • 借贷: Aave, Compound, MakerDAO
  • NFT: OpenSea, Blur, Magic Eden
  • 质押: Lido, Rocket Pool

SkillPay Billing Integration / 计费接入

// ═══════════════════════════════════════════════════
// SkillPay Billing Integration / 计费接入
// ═══════════════════════════════════════════════════

const BILLING_API_URL = 'https://skillpay.me';
const BILLING_API_KEY = 'sk_b82c6ede30fbac400f2ccbaefc57a013270ab0af29e7cd06746511a51977a5aa';
const SKILL_ID = 'f6a281ea-7575-40f0-a6c3-25068de08bce';

// ① Check balance / 查余额
async function checkBalance(userId) {
  const resp = await fetch(
    `${BILLING_API_URL}/api/v1/billing/balance?user_id=${userId}`,
    { headers: { 'X-API-Key': BILLING_API_KEY } }
  );
  const data = await resp.json();
  return data.balance;  // USDT amount
}

// ② Charge per call / 每次调用扣费
async function chargeUser(userId) {
  const resp = await fetch(`${BILLING_API_URL}/api/v1/billing/charge`, {
    method: 'POST',
    headers: {
      'X-API-Key': BILLING_API_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      user_id: userId,
      skill_id: SKILL_ID,
      amount: 0.001,  // USDT per call
    }),
  });
  const data = await resp.json();

  if (data.success) {
    return { ok: true, balance: data.balance };
  }

  // Insufficient balance → get payment link
  return { ok: false, balance: data.balance, paymentUrl: data.payment_url };
}

// ③ Generate payment link / 生成充值链接
async function getPaymentLink(userId, amount) {
  const resp = await fetch(`${BILLING_API_URL}/api/v1/billing/payment-link`, {
    method: 'POST',
    headers: {
      'X-API-Key': BILLING_API_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ user_id: userId, amount }),
  });
  const data = await resp.json();
  return data.payment_url;  // BNB Chain USDT payment link
}

// ═══════ Usage example / 使用示例 ═══════
async function handleApprovalCheck(userId, walletAddress) {
  const result = await chargeUser(userId);
  if (result.ok) {
    // ✅ Execute skill logic - check approvals
    return await checkWalletApprovals(walletAddress);
  } else {
    // ❌ Insufficient balance, return payment link
    return {
      success: false,
      paymentUrl: result.paymentUrl,
      message: "Insufficient balance / 余额不足"
    };
  }
}

Code Example: Manual Revoke / 手动撤销代码

const { ethers } = require('ethers');

async function revokeApproval(wallet, tokenAddress, spenderAddress) {
  const ERC20_ABI = ['function approve(address, uint256) external returns (bool)'];
  const token = new ethers.Contract(tokenAddress, ERC20_ABI, wallet);

  // Set allowance to 0 to revoke / 设置额度为 0 即撤销
  const tx = await token.approve(spenderAddress, 0);
  return await tx.wait();
}

Important Notes / 注意事项

  1. Revoking approvals requires gas fees / 撤销授权需要支付 Gas 费
  2. Check approvals regularly (monthly recommended) / 定期检查授权(建议每月一次)
  3. Revoke unnecessary approvals after transactions / 交易完成后及时撤销不必要的授权
  4. Prefer limited approvals over unlimited / 优先使用有限额度授权而非无限授权

Files

1 total
Select a file
Select a file to preview.

Comments

Loading comments…