T09 · Insecure Skill Coding Practices
- Location
scripts/neuron_skill.py:127- Finding
Unauthenticated UDP discovery permits peer-list poisoning and unsafe task distribution
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is purpose-aligned, but it automatically shares prompts and results with unauthenticated LAN peers, which creates a real privacy and answer-integrity risk.
Install only in a trusted, controlled LAN and avoid sending secrets, credentials, private business data, or regulated personal data through it. Treat peer answers as untrusted unless peers are authenticated and allowlisted; review memory exports carefully because they may contain full prompts and results.
scripts/neuron_skill.py:127Unauthenticated UDP discovery permits peer-list poisoning and unsafe task distribution
scripts/neuron_skill.py:260Untrusted peer responses enable prompt injection during result aggregation
scripts/neuron_skill.py:53Hostname-bearing persistent identity and local IP are unnecessarily exposed
scripts/config.json:1Out-of-range default UDP port prevents discovery and causes repeated errors
The documentation advertises broadcasting final results for collective learning, which implies generated outputs may be shared network-wide without clear disclosure of the privacy and confidentiality consequences. Final answers can contain user secrets, proprietary data, or derived sensitive inferences, so rebroadcasting them materially expands the exposure surface beyond the originating node.
The skill states that user questions are automatically distributed to all available LAN nodes, but it does not provide a prominent, explicit warning at the point of use that user-supplied content will be transmitted to other machines. Because prompts often contain sensitive business, personal, or credential-bearing data, automatic forwarding across the network can cause unintended data disclosure to every discovered node.
The skill documents code capabilities that include environment access and file read/write behavior, but it does not declare any explicit tool scope or permissions boundary in the manifest. In a distributed skill that persists node identity and reads configuration, this omission increases the risk of over-privileged execution and makes it harder for operators to understand or restrict what the skill can access.
Data from a source is assigned to a variable that is later passed to a sink, creating a variable-mediated taint flow.
"ip": self.local_ip,
"timestamp": time.time()
}).encode()
sock.sendto(msg, ('<broadcast>', self.config["discovery_port"]))
except Exception as e:
print(f"广播错误: {e}")
The skill distributes user questions to peer nodes and later broadcasts final aggregated results without any explicit consent, disclosure, trust model, or node authentication. In the context of a distributed AI skill, this is particularly risky because prompts and outputs may contain sensitive user data and are shared across the LAN with potentially untrusted or spoofed nodes.
The skill exposes generic import/export of its full task memory to arbitrary local file paths, which goes beyond the core LAN distribution purpose and can persist or ingest sensitive prompts, results, and metadata. In an agent environment, this increases the risk of unintended data exfiltration, unsafe file writes, and loading attacker-controlled JSON into runtime state.
Exporting the in-memory task store writes potentially sensitive questions, intermediate node outputs, and final results to an arbitrary file path with no warning, redaction, or access control. This creates a straightforward confidentiality risk if the file is written to a shared, predictable, or attacker-influenced location.
The file presents the skill description and operating instructions exclusively in Chinese. If organizational policy requires offering language or locale choice rather than forcing a single language, this is a natural-language policy concern because no opt-in or documented locale constraint is provided.
User-facing docstrings, CLI descriptions, help text, and status messages are consistently Chinese-only. Under the language/locale policy, forcing a single language without opt-in or documented justification can be a natural-language policy issue.