Back to skill

Security audit

Airdrop Hunter

Security checks for vulnerabilities and agentic risk

Overview

This skill is openly an airdrop-hunting and paid SkillPay tool, but it includes under-scoped billing code and practical multi-account anti-detection guidance that users should review carefully.

Install only if you are comfortable with a paid airdrop-farming assistant that may encourage multi-account tactics and automation. Review the billing implementation first: the exposed SkillPay API key should be revoked, billing should use secure server-side authorization, and any charge should require clear user confirmation. Also treat the wallet, proxy, fingerprint-browser, and automation guidance as high-risk because it may violate project or platform rules and can expose funds if copied carelessly.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
payment.py:10
Finding

Hard-Coded Billing API Credential Exposed in Source Code

Content
View full analysis

Vulnerability Details

File Location: payment.py, lines 10-17
Vulnerability Type: Hard-coded secret and plaintext credential exposure
Risk Level: High

Vulnerable Code

python
BILLING_API_URL = "https://skillpay.me"
BILLING_API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2"
SKILL_ID = "befb923c-ea67-4dc4-ae05-386df450a32c"
SKILL_NAME = "airdrop-hunter"
PRICE_PER_CALL = 0.01  # USDT

HEADERS = {
    "X-API-Key": BILLING_API_KEY,
    "Content-Type": "application/json"
}

Technical Analysis

The billing API credential is embedded directly in distributable source code and is automatically placed in the X-API-Key header for billing requests. Anyone who can download, inspect, log, or otherwise access the Skill package can recover and reuse the credential independently of the Skill.

This implementation also conflicts with _meta.json, which declares SKILLPAY_API_KEY as the intended environment variable for the billing credential. Consequently, rotating or isolating credentials through deployment configuration is ineffective unless the source code is changed.

The requests transmit the credential over HTTPS, but transport encryption does not protect a secret already disclosed in source code. The actual extent of exploitation depends on the billing provider's server-side authorization and validation controls.

Attack Path

  1. An attacker obtains a copy of the Skill package or reads its source repository.
  2. The attacker extracts BILLING_API_KEY from payment.py.
  3. The attacker constructs requests to the billing endpoints used by the Skill, including:
    • /api/v1/billing/balance
    • /api/v1/billing/charge
    • /api/v1/billing/payment-link
  4. The attacker supplies the extracted value through the X-API-Key header.
  5. If the provider does not strictly bind requests to authorized users, Skill IDs, operations, or origins, the attacker can ...[truncated 790 chars]
Remediation
View remediation

Remediation Suggestions

  1. Revoke the exposed credential immediately and issue a replacement.

  2. Remove the literal key from source code and load it from the environment as declared in _meta.json:

    python
    BILLING_API_KEY = os.environ.get("SKILLPAY_API_KEY")
    if not BILLING_API_KEY:
        raise RuntimeError("SKILLPAY_API_KEY is required")
    
  3. Store the replacement in an approved secret manager or protected runtime configuration rather than in source control, package files, examples, logs, or generated artifacts.

  4. Review repository and package history for prior exposure. If the key appeared in any published revision, treat it as permanently compromised.

  5. Restrict the replacement credential to the minimum required endpoints and actions. Bind it to the expected Skill ID where supported.

  6. Enforce server-side authorization for every billing operation; do not rely solely on possession of a shared API key.

  7. Add rate limits, anomaly detection, request auditing, and alerts for unusual balance checks, charge attempts, or payment-link generation.

  8. Avoid deploying a reusable provider credential to untrusted client environments. Prefer a controlled backend that authenticates the caller and performs narrowly scoped billing operations.

  9. Add automated secret scanning to source-control and release pipelines to prevent recurrence.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (36)

Tainted flow: 'user_id' from os.environ.get (line 96, credential/environment) → requests.get (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · payment.py (reported line 29)May include surrounding context.

python
def check_balance(user_id: str) -> float:
    """查询用户余额"""
    try:
        resp = requests.get(
            f"{BILLING_API_URL}/api/v1/billing/balance",
            params={"user_id": user_id},
            headers=HEADERS,

Tainted flow: 'user_id' from os.environ.get (line 96, credential/environment) → requests.post (network output)

Critical
Category
Data Flow
Confidence
97% confidence
Finding

The code transmits an environment-sourced user_id to an external billing service and attempts to charge that identity automatically. Because the identifier is taken from SKILLPAY_USER_ID without local authentication or integrity checks, a caller or runtime that can influence environment variables may cause unauthorized billing actions against another account.

Content

Scanner excerpt · payment.py (reported line 48)May include surrounding context.

python
返回: {"ok": bool, "balance": float, "payment_url": str|None}
    """
    try:
        resp = requests.post(
            f"{BILLING_API_URL}/api/v1/billing/charge",
            headers=HEADERS,
            json={

Tainted flow: 'user_id' from os.environ.get (line 96, credential/environment) → requests.post (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · payment.py (reported line 79)May include surrounding context.

python
def get_payment_link(user_id: str, amount: float = 5.0) -> str:
    """生成充值链接"""
    try:
        resp = requests.post(
            f"{BILLING_API_URL}/api/v1/billing/payment-link",
            headers=HEADERS,
            json={"user_id": user_id, "amount": amount},

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill declares itself as an airdrop analysis assistant, but the content introduces external paid access through SkillPay without clearly describing billing behavior in the metadata or providing transparent operational boundaries. The static finding also indicates undeclared balance checks, payment link generation, and hardcoded third-party payment credentials; if present in the broader skill package, that would represent sensitive secret exposure and unauthorized financial behavior far outside the stated purpose.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The file is entirely dedicated to third-party billing and payment enforcement, which is unrelated to the advertised airdrop-analysis purpose of the skill. Hidden monetization logic embedded in a skill creates a trust and abuse risk because users may invoke the skill expecting analysis, while the code silently introduces charge-related side effects and external dependency on an unrelated service.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

Automatic billing is triggered as soon as verify_payment() runs, without prior warning, confirmation, or an opportunity to cancel. This is especially dangerous in this skill context because billing is not part of the advertised airdrop assistant purpose, so users are more likely to be surprised by unauthorized charges.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

Advising users to use different IPs for multiple applications is a direct anti-detection tactic that helps conceal coordinated or duplicate account activity. This is dangerous because it enables evasion of safeguards designed to prevent fraud, Sybil behavior, and unfair distribution in whitelists or airdrops.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The automation section includes executable examples for automated faucet interaction and batch on-chain transfers. This moves the skill from informational assistance into operational enablement for scripted claim farming and mass wallet activity, which can be abused at scale and may also encourage unsafe key-handling practices.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The recommendation strings explicitly advise evasion of anti-sybil controls, including batch operation, avoiding account linkage, and varying behavior across accounts. Given the skill's stated purpose of managing multiple accounts for airdrops, this materially increases the likelihood of abuse and turns the tool into assistance for circumventing platform enforcement.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill text instructs the agent to proactively use network access, references script files, and mentions a paid SkillPay integration, yet it declares no explicit tool scope or permissions. This creates an authorization gap where a host agent may grant broader capabilities than users expect, increasing the risk of unintended network access, file operations, or payment-related actions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest description is entirely in Chinese and presents the skill's usage and purpose without indicating that users may choose another language. Under the policy, a skill that implicitly enforces a specific language without opt-in can be a natural-language policy violation unless the locale constraint is clearly justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The top-level description uses Chinese (自动集成付费验证功能) and the user-facing messages throughout the file are also hardcoded in Chinese. There is no indication that language selection is optional or that the skill is region-specific, which can violate language/locale policy expectations.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The code actively enforces external charges and balance checks without clear justification from the skill's stated functionality. In context, this makes the skill more dangerous because it can deny service or trigger payment actions for an unrelated cryptocurrency-analysis tool, increasing the chance of deceptive charging and user harm.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

The code sends billing data, including user_id, skill_id, and charge amount, to an external service and initiates a financial transaction. External transmission is expected for payments, but in this context it is risky because it occurs in a skill that does not disclose billing as core functionality and lacks evidence of authenticated, consented user authorization.

Content

Scanner excerpt · payment.py (reported line 48)May include surrounding context.

python
返回: {"ok": bool, "balance": float, "payment_url": str|None}
    """
    try:
        resp = requests.post(
            f"{BILLING_API_URL}/api/v1/billing/charge",
            headers=HEADERS,
            json={

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

This transmits user billing identifiers to an external service to create a payment link. While such transmission may be operationally necessary, it still creates privacy and trust risk here because the skill embeds undisclosed third-party payment handling unrelated to its stated purpose.

Content

Scanner excerpt · payment.py (reported line 79)May include surrounding context.

python
def get_payment_link(user_id: str, amount: float = 5.0) -> str:
    """生成充值链接"""
    try:
        resp = requests.post(
            f"{BILLING_API_URL}/api/v1/billing/payment-link",
            headers=HEADERS,
            json={"user_id": user_id, "amount": amount},

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The function is documented as payment verification, but it actually performs a charge attempt by calling charge_user(). This mismatch is dangerous because callers may invoke it assuming it is read-only, causing unexpected financial side effects and making accidental or repeated charges more likely.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The entire document is written in Chinese and does not offer any language choice, translation option, or note that the skill is intentionally region-specific. Under the stated policy, forcing a specific language without user opt-in is a natural-language locale violation.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This section gives concrete anti-detection guidance for operating multiple accounts, including IP isolation, fingerprint browsers, fund separation, and behavior randomization. In the context of an airdrop-hunting skill, that materially enables users to evade anti-Sybil controls rather than merely understand risks, which can facilitate fraud, platform abuse, and account policy evasion.

Content

No source excerpt is available for this finding.

Ssd 4

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The document presents a scalable playbook for multi-account airdrop farming, explicitly describing account matrices and progressive anti-linkage measures to avoid detection. Because the skill’s stated purpose includes managing multiple accounts for airdrops, this context makes the content more dangerous: it is actionable operational support for evading anti-abuse mechanisms, not neutral education.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The guide tells users to prepare multiple email, Twitter, Discord, and wallet accounts without warning that this may violate platform rules or trigger fraud controls. This normalizes multi-account participation for gain-seeking behavior and can expose users and target platforms to abuse, bans, and reputation harm.

Content

No source excerpt is available for this finding.

Ssd 4

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Taken together, the workflow of preparing multiple identities and separating IPs provides a practical playbook for Sybil-style account farming. In an airdrop-hunting assistant, that context makes the issue more dangerous because the content is specifically oriented toward extracting rewards from eligibility programs, increasing the chance of real-world abuse.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The guide explicitly recommends using different IPs to improve success with multiple accounts, which facilitates evasion of platform anti-abuse controls and coordinated account farming. In the context of an airdrop-hunting skill, this moves beyond neutral education into operational guidance for deceptive participation and policy circumvention.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The recommended tools include fingerprint browsers, proxies/VPNs, and automation frameworks that can be used to disguise identity and scale account farming. In this skill’s context, bundling these tools with an airdrop strategy guide materially increases the likelihood of abuse against project eligibility systems and third-party platforms.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This tutorial instructs users to connect wallets, bridge assets, stake, swap, and deploy contracts across multiple third-party testnet services, but it does not present prominent upfront security guidance about wallet isolation, phishing risk, contract approval risk, or the need to avoid using a primary wallet. In the context of an airdrop-hunting skill, users may be especially motivated to follow links and transact quickly, which increases the chance of wallet compromise, malicious approvals, or accidental use of real funds on the wrong network.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The referenced section explicitly advises users how to reduce Sybil detection risk by spreading interaction timing, varying funding sources, and simulating 'real user' behavior. In the context of an airdrop-hunting skill, this is not neutral security guidance; it facilitates evasion of anti-abuse controls used by projects to prevent multi-account farming and unfair distribution. The surrounding skill context makes this more dangerous because the skill is specifically designed to optimize airdrop participation, so these instructions can directly support abusive campaign behavior at scale.

Content

No source excerpt is available for this finding.