Back to skill

Security audit

全网数据探测虾

Security checks for vulnerabilities and agentic risk

Overview

The skill is a mostly coherent website-monitoring tool, but it gives the agent broad local-network fetching ability and includes anti-bot bypass guidance that users should review before installing.

Install only if you are comfortable with a script that can fetch any URL reachable from your machine and store page snapshots locally. Use it only for sites you are authorized to monitor, avoid CAPTCHA or anti-bot bypass tactics, do not monitor authenticated or sensitive pages, pin and review dependencies, and prefer adding URL allowlists/private-network blocking before use.

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

Error
Location
scripts/web-monitor.sh:30
Finding

Unrestricted URL Fetching Enables Server-Side Request Forgery

Content
View full analysis
/dev/null) echo "$http_code" } ``` The URL is accepted directly from a command-line argument: ```bash cmd_add_task() { local url="" frequency="daily" selector="" threshold="5" notify="feishu" name="" while [[ $# -gt 0 ]]; do case "$1" in --url) url="$2"; shift 2 ;; --frequency) frequency="$2"; shift 2 ;; --selector) selector="$2"; shift 2 ;; --threshold) threshold="$2"; shift 2 ;; --notify) notify="$2"; shift 2 ;; --name) name="$2"; shift 2 ;; *) shift ;; esac done ``` The stored value is later fetched without destination validation: ```bash local url selector threshold url=$(echo "$task" | jq -r '.url') selector=$(echo "$task" | jq -r '.selector // ""') threshold=$(echo "$task" | jq -r '.threshold // "5"') log "INFO" "开始检查任务 $task_id: $url" # 抓取页面 local tmp_html tmp_html=$(mktemp /tmp/web-monitor-XXXXXX.html) local http_code http_code=$(fetch_page "$url" "$tmp_html") ``` ### Technical Analysis The monitoring URL is entirely user-controlled and is passed to `curl` without validation of: - The URL scheme. - The initial hostname or resolved IP address. - Loopback, private, link-local, multicast, and reserved address ranges. - ...[truncated 2512 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:74
Finding

Mutable Third-Party Dependency Installation Using an Unpinned Version

Content
View full analysis
Remediation
View remediation
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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (19)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The documented behavior promises threshold-based change detection and automatic notifications, but the described implementation does not actually enforce thresholds or implement notification delivery. This is dangerous because users may rely on the skill for monitoring/compliance use cases and miss important events, while also misunderstanding what data is being transmitted or stored.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 31)May include surrounding context.

md
使用 `scripts/web-monitor.sh` 执行首次抓取:

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 33)May include surrounding context.

md
使用 `scripts/web-monitor.sh` 执行首次抓取:

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 39)May include surrounding context.

md
使用 `scripts/web-monitor.sh` 执行首次抓取:

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill instructs use of a shell script (scripts/web-monitor.sh) but declares no permissions or allowed-tools scope. This creates an authorization and review gap: the runtime may expose shell execution without an explicit least-privilege declaration, making command execution harder to govern and increasing the chance of unsafe future changes.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The listed activation keywords include very generic terms such as "监控", "爬虫", "数据采集", and the English phrasing broadly says to use the skill whenever a user wants to monitor a website or scrape web data. This lacks clear scope boundaries or exclusion conditions, making unintended invocation more likely for ordinary monitoring or data-collection discussions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill explicitly archives scraped data and may send notifications to external services, but the description does not warn users about these data handling and outbound transfer behaviors. This creates a transparency and privacy risk: users may provide targets or content without understanding retention, sharing, or third-party exposure implications.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The document provides explicit anti-detection guidance including proxy rotation and advice to use third-party CAPTCHA-solving services, which materially enables bypassing access controls and anti-bot defenses rather than ordinary website monitoring. In the context of a scraping/monitoring skill, these instructions lower the barrier to evasive collection against target sites and can facilitate unauthorized access patterns, account/IP bans, legal exposure, and abuse at scale.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The CAPTCHA section normalizes OCR, browser automation, and third-party solving services without a prominent warning that these actions may violate site terms, privacy expectations, or legal restrictions. Because the skill is specifically designed for periodic web monitoring, this omission makes unsafe operational use more likely and encourages escalation from passive monitoring into deliberate defense evasion.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The template includes a concrete curl example that sends session cookies directly in a scraping request, but provides no warning that these values are sensitive credentials. In a web-monitoring/scraping skill, users may copy this pattern into logs, scripts, shared repos, or notifications, leading to credential leakage or unintended authenticated scraping against protected resources.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The entire markdown file is written in Chinese and does not offer any language or locale choice, nor does it document that the skill is intended only for a Chinese-speaking or region-specific audience. Under the policy rule, forcing a specific language without opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill fetches arbitrary web content and persists extracted content and diffs under a user directory without clearly warning that monitored pages may contain sensitive, proprietary, or personal data. In this skill context, persistent storage is core functionality, which makes the issue less suspicious than malware but still risky because users may unintentionally retain regulated or confidential content locally.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

Hard-coding Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 causes outbound requests to disclose a language/regional preference the user did not choose, which can influence content served and contribute to request fingerprinting. In a web-monitoring skill this is not highly dangerous, but it is an unnecessary privacy leak and can also distort monitoring results by fetching locale-specific page variants.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest describes automatic巡查并在关键内容变化时发送通知, and the CLI exposes a --notify option, but the implementation only records diffs locally and prints JSON results. No email, webhook, Feishu, or other outbound notification logic exists anywhere in the script, so the implemented behavior falls short of the claimed skill behavior.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The task configuration and help text present --threshold as a meaningful percentage for change detection, implying only sufficiently large changes should trigger alerts. In practice, cmd_run_check merely loads threshold and never uses it; any non-empty diff is reported as changed, which contradicts the documented intent of threshold-based monitoring.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The inline CLI documentation says --notify selects a notification method such as feishu, email, or webhook. However, notify is only stored in tasks.json and is never consulted during run-check or any other command, so the documented behavior contradicts the implementation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

The primary skill description is presented in Chinese only, while the file does not state that the skill is intentionally limited to Chinese-language users or offer language/locale choice. This can constitute a language policy issue when a skill implicitly enforces one language without user opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The hard-coded header Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 imposes a specific language/locale preference in the skill content. There is no indication that this locale is optional, user-selected, or required for a region-specific purpose.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The curl example explicitly sets Accept-Language: zh-CN,zh;q=0.9, which imposes a specific locale preference. There is no indication that this skill is region-specific or that users may choose a different language, so this is a natural-language locale policy issue.

Content

No source excerpt is available for this finding.