Back to skill

Security audit

Algae Feeding

Security checks for vulnerabilities and agentic risk

Overview

This is a purpose-built algae feeding calculator with no hidden network, credential, persistence, or privilege behavior, though it has correctness and input-validation issues to review.

Install only if you are comfortable with a Chinese-language algae-feeding calculator. Review calculated outputs against the farm standard before operational use, and avoid feeding it untrusted or oversized report text until pool-number bounds and validation are added.

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

Warning
Location
scripts/calculate_feeding.py:52
Finding

Unbounded Pool Range Expansion Enables Resource Exhaustion

Content
View full analysis
Remediation
View remediation
List[int]: pools = [] for raw_part in pool_range.split(','): part = raw_part.strip() if not part: raise ValueError("Empty pool-range component") if '-' in part: components = part.split('-') if len(components) != 2: raise ValueError("Invalid pool-range format") start, end = map(int, components) if start > end: raise ValueError("Pool-range start exceeds end") if start < MIN_POOL or end > MAX_POOL: raise ValueError("Pool number is outside the allowed range") if len(pools) + (end - start + 1) > MAX_EXPANDED_POOLS: raise ValueError("Too many pools in one record") pools.extend(range(start, end + 1)) else: pool = int(part) if pool < MIN_POOL or pool > MAX_POOL: raise ValueError("Pool number is outside the allowed range") if len(pools) >= MAX_EXPANDED_POOLS: raise ValueError("Too many pools in one record") pools.append(pool) return sorted(set(pools)) ``` ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • 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
Findings (6)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest description and the body of the markdown are entirely in Chinese and instruct a strict output format in Chinese, but there is no indication that the user can choose another language. Under the policy, forcing a specific language without opt-in is a natural-language policy violation unless the locale constraint is explicitly documented and justified.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The rules at L048-L049 state that days 1-2 should feed 小海链藻 and days 3-4 should feed 大海链藻. But the usage example says '假设当前是4月10日上午(第2天上午)' at L095, then shows both a 小海链藻 section and a 大海链藻 section in the output at L098-L105, which conflicts with the documented day-based feeding rule.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The '重要规则' section says '按藻类类型分别统计,只在大海链藻段显示总量' at L050, which means totals should only be displayed in the large-chain algae section. Later formatting rules and examples require totals in both the 小海链藻 and 大海链藻 sections at L078-L079 and L083, so the documented intent is internally contradictory.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

This markdown file is natural-language instructional content and appears to require Chinese comprehension throughout, including headings, tables, and usage steps. Under the policy rule for language or locale constraints, forcing a specific language without user opt-in or justification can be a violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

This code file contains user-facing natural-language documentation entirely in Chinese, including the module description and function/doc comments, with no indication that the skill is region-specific or that another language is supported. Under the policy rule, forcing a specific language without user opt-in can be a locale policy violation.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

calculate_feeding_amount 的注释在 L157-L159 明确写第 3-4 天投“大海莲藻”,但 format_output 在 L277-L293 对同一 large_algae 分支输出的标题却是“大海链藻”。这不是单纯信息不全,而是代码内文档/命名对实际业务对象给出了互相冲突的表述,容易导致开发者或调用方误解该分支代表的藻种。

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.