Back to skill

Security audit

API Hunter

Security checks for vulnerabilities and agentic risk

Overview

This skill is a small API-search helper with disclosed network use and no evidence of hidden persistence, credential access, destructive actions, or deception.

Use this only where outbound web requests and a localhost search service are acceptable. Prefer pinned dependencies, remove unused beautifulsoup4, and avoid passing untrusted or internal URLs to check_api_dashboard.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
hunter.py:60
Finding

Arbitrary URL Fetch Enables Server-Side Request Forgery

Content
View full analysis
Dict: """檢查 API 提供者頁面""" result = { 'url': url, 'has_pricing': False, 'has_free_tier': False, 'has_signup': False, 'api_key_location': None, 'direct_link': None } try: resp = self.session.get(url, timeout=10) text = resp.text.lower() # 檢查關鍵詞 if 'pricing' in text or 'price' in text: result['has_pricing'] = True if 'free' in text and ('tier' in text or 'plan' in text): result['has_free_tier'] = True if 'sign up' in text or 'register' in text or 'get api key' in text: result['has_signup'] = True # 找直接連結 if 'get started' in text or 'try free' in text: result['direct_link'] = url except Exception as e: result['error'] = str(e) return result ``` ### Technical Analysis The public `check_api_dashboard()` method accepts a caller-controlled URL and passes it directly to `requests.Session.get()` without validating the URL scheme, destination hostname, resolved IP address, or network range. Redirects are followed by default, and redirected destinations are not revalidated. Consequently, a caller able to invoke this method can cause the host running the Skill to issue HTTP GET requests to loopback interfaces, private network addresses, link-local services, or cloud metadata endpoints. A public URL that redirects to an internal address could also bypass superficial validation added only to the initial URL. The response body is not returned directly, but it is inspected for several keywords. The resulting flags, exceptions, response timing, and request side effects can still provide an attacker with an interna ...[truncated 1371 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
SKILL.md:9
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (4)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The natural-language content of the skill is presented exclusively in Chinese, which can impose a language preference on users without giving them an explicit option to choose another locale. Under the policy, forcing a specific language without user opt-in is a reportable natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The module docstring names the skill entirely in Chinese ('全自動 API 服務商獵人') with no indication that users can choose another language or locale. This creates a natural-language policy concern because it implies a fixed language presentation without documented opt-in or justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The module name and docstrings present the skill entirely in Traditional Chinese, including the title and primary usage descriptions, with no indication that users can choose another language. This can violate a language/locale policy when a skill imposes a fixed language experience without documented opt-in or justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

The package description is written entirely in Chinese ("全自動 API 服務商獵人 - 搜尋免費 API") with no indication that users can choose another language or locale. Under the stated policy, forcing a specific language without user opt-in can be a natural-language policy violation.

Content

No source excerpt is available for this finding.