Back to skill

Security audit

ClawNet

Security checks for vulnerabilities and agentic risk

Overview

ClawNet is a real P2P discovery and messaging skill, but it includes under-disclosed active network scanning and internet-facing daemon behavior that users should review before installing.

Install only if you intend to expose a bot to an internet-based P2P discovery and messaging network. Review firewall rules, avoid scanning networks you do not control, treat the identity key and peer/friend stores as sensitive, and be aware that daemon mode can receive unsolicited network traffic.

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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
src/discovery.rs:71
Finding

Unauthenticated UDP Reflection and Amplification

Content
View full analysis
result, Ok(Err(e)) => { tracing::debug!("discovery recv error: {e}"); continue; } Err(_) => continue, }; if len < PROBE_SIZE { continue; } if buf[..4] != PROBE_MAGIC { continue; } if buf[4] != PROBE_VERSION { continue; } if let Err(e) = self.send_response(src).await { tracing::debug!("failed to send discovery response to {src}: {e}"); } } tracing::info!("discovery listener stopped"); } async fn send_response(&self, dest: SocketAddr) -> Result<()> { let mut response = ScanResponse { node_id: self.node_id.clone(), name: self.name.clone(), version: self.version.clone(), capabilities: self.capabilities.clone(), quic_port: self.quic_port, }; let header_size = PROBE_SIZE; let max_payload = MAX_RESPONSE_SIZE - header_size; let mut payload = postcard::to_allocvec(&response) .context("failed to serialize scan response")?; while payload.len() > max_payload && !response.capabilities.is_empty() { response.capabilities.pop(); payload = postcard::to_allocvec(&response) .context("failed to serialize scan response")?; } if payload.len() > max_payload { respo ...[truncated 2720 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
src/daemon.rs:183
Finding

Unbounded QUIC Connections and Streams Permit Remote Resource Exhaustion

Content
View full analysis
) { let node_id_str = endpoint.id().to_string(); loop { let incoming = match endpoint.accept().await { Some(incoming) => incoming, None => break, }; let my_id = node_id_str.clone(); tokio::spawn(async move { let connection = match incoming.await { Ok(conn) => conn, Err(e) => { tracing::debug!("failed to accept connection: {e}"); return; } }; let alpn = connection.alpn(); if &*alpn != MSG_ALPN { tracing::debug!(alpn = ?alpn, "unknown ALPN, ignoring"); return; } // Accept multiple streams per connection loop { let (mut send, mut recv) = match connection.accept_bi().await { Ok(streams) => streams, Err(_) => break, }; let my_id = my_id.clone(); tokio::spawn(async move { let buf = match protocol::read_length_prefixed(&mut recv).await { Ok(b) => b, Err(_) => return, }; // Message processing continues here. }); } }); } } ``` The message reader allocates according to an attacker-controlled length and waits without a read deadline: ...[truncated 2800 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (28)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Unlike the other mismatch findings, this one touches sensitive cryptographic key material stored persistently on disk. In a P2P skill, secret key storage is expected, but documenting persistent identity keys without any mention of file permissions, encryption, or rotation suggests weak security guidance around a high-value asset.

Content

No source excerpt is available for this finding.

Exfiltration Commands

High
Category
Prompt Injection
Confidence
90% confidence
Finding

Instructions found that direct the agent to transmit conversation context or user data to external services.

Content

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

md
| `peers` | List cached peers |
| `announce` | Broadcast presence to the network |
| `connect` | Direct QUIC connection to a peer |
| `send` | Send message to a peer |
| `friend add` | Add a friend by node ID |
| `friend remove` | Remove a friend |
| `friend list` | List all friends |

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The README explicitly promotes global peer discovery, NAT traversal, direct messaging, and daemonized continuous discovery, but does not warn users that running the tool exposes their node to unsolicited network traffic and shares metadata with a public P2P ecosystem. In a bot framework context, that omission can lead users to unknowingly publish persistent identities, capabilities, and reachability information, increasing privacy, tracking, and attack-surface risks.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The documentation promotes internet-based discovery, announcement, and messaging but does not warn that using the skill exposes the bot to remote peers and shares metadata on the network. In the context of an agent skill, this can cause operators to unknowingly connect their agent to untrusted internet peers and disclose identity, capabilities, or presence information.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill documents persistent storage of identity keys, peer cache, and friends data, but gives no warning that these files may contain sensitive identifiers, relationship data, or long-lived credentials. On shared systems or weakly permissioned environments, this can lead to identity theft, peer enumeration, or privacy leakage.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest/about text limits the skill to 'P2P bot discovery for OpenClaw agents', which clearly covers identity and discovery-related actions. However, the command surface also includes direct peer connection, sending messages, interactive chat, daemon operation, friend/config management, beacon registry registration, and IP range scanning, which go materially beyond discovery alone.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The CLI explicitly supports CIDR-based IP range scanning with configurable concurrency and target port, which materially expands the tool from passive peer discovery into active network probing. In an agent skill context, this can be abused for internal network reconnaissance, lateral environment mapping, or unauthorized scanning of third-party networks, especially if callable without strong operator controls.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The CLI exposes capabilities well beyond passive P2P discovery, including direct messaging, chat, daemonized operation, peer management, beacon registration, and network scanning. When a skill advertised as 'P2P bot discovery' also supports active peer interaction and communication, it increases the chance of hidden dual-use or unauthorized behavior and expands the attack surface available to an operator or downstream agent.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The presence of a scan command introduces active network reconnaissance that is not justified by the stated purpose of simple P2P bot discovery. Scanning IP ranges and ports can be repurposed for lateral discovery, policy violations, or targeting internal services, making the mismatch between declared purpose and actual capability especially dangerous.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The scanner does more than discovery: it automatically converts scan results into durable peer-store entries without any consent, disclosure, or policy check at the point of scanning. In a P2P bot discovery context, this creates an integrity and privacy risk because any host that can reply to the probe can influence the local peer database, potentially seeding untrusted, spoofed, or unwanted peers for later use by the agent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Discovered peers are silently persisted as a side effect of scanning, which violates least surprise and allows network-originated data to alter local state without user awareness. In this skill's context, that is more dangerous because the component is explicitly performing broad peer discovery, so an attacker responding to probes could poison the store with arbitrary node identities, names, capabilities, and addresses that may later be trusted by other parts of the system.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The reset function replaces the existing configuration file contents with defaults, which is a destructive operation affecting user data. Although the function name suggests its behavior to developers, this file contains no confirmation prompt, warning log, or other user-visible disclosure around that overwrite.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.