Back to skill

Security audit

Clawhub Upload

Security checks for vulnerabilities and agentic risk

Overview

This macOS security skill mostly performs local security checks, but it requests broad permissions and advertises app-blocking and many features that the reviewed code does not actually provide.

Review before installing. The basic checks are local macOS diagnostics, but the package asks for more permissions than the code appears to need and its documentation overstates security features. Do not rely on block-app or the advertised larger command set as protective controls in this version.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Tool Hijacking and SpoofingModifies or replaces tools so legitimate-looking calls execute attacker logic
  • 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 (3)

T01 · Skill Instruction Hijacking

Note
Location
src/index.ts:50
Finding
Security command responses inject unrelated commercial promotions<![CDATA[ ## Vulnerability Details **File Location**: `src/index.ts:50-52`, `src/index.ts:74-76`, `src/index.ts:116-118`, `src/index.ts:143-145`, `src/index.ts:174-176`, `src/index.ts:199-207` **Vulnerability Type**: T01: Skill Instruction Hijacking **Risk Level**: Low ### Vulnerable Code ```ts `💡 **Upgrade to MaclawPro** for real-time alerts and blocking\n` + `→ https://maclawpro.com`; ``` Similar promotional output is embedded in several other command responses: ```ts `💡 **MaclawPro Pro** shows exactly which apps with blocking options\n` + `→ https://maclawpro.com/pricing`; ``` ```ts `💡 **MaclawPro** includes VPN leak detection and monitoring\n` + `→ https://maclawpro.com`; ``` ```ts `💡 **MaclawPro Pro** provides detailed port analysis and blocking\n` + `→ https://maclawpro.com/pricing`; ``` ```ts `💡 **MaclawPro** provides full WiFi security analysis\n` + `→ https://maclawpro.com`; ``` The `block-app` response is principally a commercial promotion: ```ts return `🛡️ **APP BLOCKING**\n\n` + `This feature requires **MaclawPro Pro** for secure app removal.\n\n` + `**MaclawPro Pro includes:**\n` + `• Instant app blocking\n` + `• Protected apps whitelist\n` + `• Reversible (moves to Trash)\n` + `• Multiple security layers\n\n` + `**Get MaclawPro Pro** ($49/year):\n` + `→ https://maclawpro.com/pricing\n\n` + `💼 **Enterprise?** Contact info@sequr.ca for custom solutions`; ``` ### Technical Analysis Multiple security-related command handlers append hard-coded promotional messages and external purchase links to their operational results. This modifies agent-facing responses with content unrelated to the immediate diagnostic request. The behavior is deterministic and does not depend on an external payload. No evidence was found that the links are automatically opened or that remote code is retrieved. The security concern is limited to response manipulation: users requesting local security information are repeatedly directed toward a c ...[truncated 816 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Return only the diagnostic result requested by the user. - Remove upgrade advertisements and purchase links from normal command output. - Move optional product information to `README.md`, package metadata, or a separately invoked informational command. - Ensure security warnings clearly distinguish operational findings from promotional content. - Add response tests that reject unrelated external links in diagnostic command results. ]]>

T07 · Tool Hijacking and Spoofing

Warning
Location
src/index.ts:186
Finding
Declared security capabilities do not match implemented command behavior<![CDATA[ ## Vulnerability Details **File Location**: `README.md:32-99`, `SKILL.md:9-21`, `SKILL.md:48-56`, `src/index.ts:186-207` **Vulnerability Type**: T07: Tool Hijacking and Spoofing **Risk Level**: Medium ### Vulnerable Code and Documentation The README represents `block-app` as an effective security control: ```md /block-app <name> Block malicious app ``` It also provides an example claiming that an application was removed: ```md User: /block-app Malware MaclawPro: 🚨 BLOCKED Malware.app moved to Trash ``` The actual implementation performs no blocking, removal, process termination, permission change, or filesystem operation: ```ts export async function blockApp(appName: string): Promise<string> { if (!appName) { return `❌ Please specify an app name\n\nUsage: /block-app <AppName>`; } return `🛡️ **APP BLOCKING**\n\n` + `This feature requires **MaclawPro Pro** for secure app removal.\n\n` + `**MaclawPro Pro includes:**\n` + `• Instant app blocking\n` + `• Protected apps whitelist\n` + `• Reversible (moves to Trash)\n` + `• Multiple security layers\n\n` + `**Get MaclawPro Pro** ($49/year):\n` + `→ https://maclawpro.com/pricing\n\n` + `💼 **Enterprise?** Contact info@sequr.ca for custom solutions`; } ``` The documentation also advertises “52+ professional macOS security tasks,” while the implementation exports only these seven handlers: ```ts commands: { 'camera-status': cameraStatus, 'microphone-status': microphoneStatus, 'firewall-status': firewallStatus, 'vpn-checker': vpnChecker, 'open-ports': openPorts, 'wifi-scanner': wifiScanner, 'block-app': blockApp } ``` ### Technical Analysis The public interface and documentation represent the skill as providing application blocking, removal, real-time monitoring, and more than 52 security tasks. The reviewed implementation exposes seven handlers, and the handler registered as `block-app` only validates that a name was suppli ...[truncated 1476 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Remove `block-app` from exported commands until functional blocking is implemented. - Remove examples claiming that applications are blocked or moved to Trash when no such operation occurs. - Replace “52+ tasks” and real-time monitoring claims with an exact list of implemented capabilities. - If application blocking is implemented: - Resolve applications through trusted macOS APIs or validated absolute paths. - Require explicit user confirmation before termination, quarantine, or deletion. - Avoid interpolating application names into shell commands. - Prevent path traversal, shell metacharacters, symlink attacks, and blocking of protected system applications. - Verify the post-operation state and return an explicit success or failure result. - Support safe recovery or quarantine rather than irreversible deletion. - Add integration tests verifying that every documented command produces the stated system effect. ]]>

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
package.json:52
Finding
Manifest requests filesystem and network permissions not used by the implementation<![CDATA[ ## Vulnerability Details **File Location**: `package.json:52-56` **Vulnerability Type**: T05: Unauthorized Access and Privilege Escalation **Risk Level**: Medium ### Vulnerable Configuration ```json "permissions": [ "exec", "fs.read", "network" ] ``` ### Technical Analysis The reviewed implementation uses `child_process.exec` to execute fixed local macOS diagnostic commands. It does not use Node.js filesystem APIs and does not initiate outbound network requests. Consequently, the declared `fs.read` and `network` permissions exceed the demonstrated requirements of version 1.0.4. This violates least-privilege principles. The exact enforcement semantics depend on the OpenClaw host, but if declared permissions are granted to the skill runtime, the package receives capabilities that are unnecessary for its current implementation. No evidence was found that the present code actively abuses these permissions, reads sensitive files, or exfiltrates data. The finding concerns unnecessary authority and the increased impact of a future package compromise or malicious update. ### Attack Path 1. A user installs the skill and approves the permissions declared in `package.json`. 2. The host grants execution, filesystem-read, and network capabilities to the skill runtime. 3. The current implementation leaves the filesystem and network capabilities unused. 4. A compromised future release, injected runtime code, or other code executing within the same permission boundary could read accessible local data. 5. The same code could use the network permission to transmit that data externally. ### Impact Assessment Potential scope depends on the OpenClaw permission model. If permissions are strongly enforced, unnecessary `fs.read` access may expose files available to the skill context, while `network` access may permit outbound communication and data exfiltration. The issue does not itself establish administrator or root access, and no active exploitation was id ...[truncated 36 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Remove the unused `fs.read` and `network` permissions from the package manifest. - Retain only the minimum permission required by the implemented version, currently `exec`. - If future functionality requires file access, request narrowly scoped read access to specific files or directories rather than unrestricted filesystem reads. - If future functionality requires networking, restrict destinations, protocols, and operations where supported. - Document why each requested permission is necessary and map it to a specific implemented command. - Add a release check that compares declared permissions against imported APIs and actual runtime behavior. - Require a new user approval when an update adds permissions. ]]>
Vulnerability Patterns
  • 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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (23)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
This is a real trust-boundary issue: the skill is framed as security monitoring, but the documented behavior includes shell/system command execution, access to sensitive host telemetry, and product-promotion behavior not reflected in the declared purpose. In an agent ecosystem, this kind of description-behavior mismatch can bypass user scrutiny and policy checks, leading to over-privileged installation or unsafe execution on the host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
This is a real trust-boundary issue: the skill is framed as security monitoring, but the documented behavior includes shell/system command execution, access to sensitive host telemetry, and product-promotion behavior not reflected in the declared purpose. In an agent ecosystem, this kind of description-behavior mismatch can bypass user scrutiny and policy checks, leading to over-privileged installation or unsafe execution on the host.

Intent-Code Divergence

High
Confidence
98% confidence
Finding
The code advertises app blocking and secure removal, but the function never blocks or removes anything and only returns promotional text. In a security product, this deception can cause operators to rely on a nonexistent containment control, delaying real mitigation against malicious software and increasing the chance of continued compromise.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The README advertises a destructive command (`/block-app <name>`) and even shows an example where an app is moved to Trash, but it provides no warning, confirmation requirement, or scope limitations. In an agent/skill context, documenting destructive actions as one-step commands increases the chance of accidental or coerced removal of legitimate applications.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The documented `uninstall <name>` command implies software removal capability without any warning about permanence, privilege needs, or risk of deleting the wrong target. In a security-themed skill, users may overtrust the command and trigger unintended system changes, making this more dangerous than a generic informational tool.

Missing User Warnings

Medium
Confidence
86% confidence
Finding
Advertising an app-blocking feature without a prominent warning about system impact is unsafe because users may invoke it expecting a harmless inspection command, when blocking applications can disrupt workflows or interfere with legitimate software. In a security-themed skill, users are more likely to trust forceful actions, which increases the risk of unintended denial-of-service against local applications.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The documented 'block-app <name>' command lacks user-facing safety guidance despite implying a potentially destructive action on the host. Without warnings, confirmation, or reversibility information, an agent or end user could trigger service disruption or block legitimate software under the assumption that the command is safe and routine.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
This code file declares `openPorts()` and `wifiScanner()` functions, which imply network/system scanning that could affect privacy or reveal sensitive environment details. The declarations and adjacent comments provide no confirmation prompt, logging, or user-facing warning about these actions.

Description-Behavior Mismatch

Medium
Confidence
94% confidence
Finding
The manifest context says the skill is for macOS security monitoring, which implies observing or reporting system state. The exported `blockApp` command adds an enforcement/modification capability rather than monitoring, expanding behavior beyond the described scope.

Missing User Warnings

Medium
Confidence
84% confidence
Finding
The `blockApp(appName: string)` function suggests changing system or application behavior in a way that may disrupt user workflows. In this code file, there is no visible warning, confirmation requirement, or explanatory disclosure indicating that the command can block an app.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The camera status check enumerates local process activity using lsof and infers camera usage without any user-facing disclosure, consent prompt, or privacy notice. In a security-monitoring skill this is somewhat expected, but silently inspecting sensitive device usage can expose application activity patterns and normalize covert local surveillance.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The microphone status check inspects local process activity via lsof/coreaudiod matching without warning the user that sensitive device-usage information is being examined. Although aligned with the skill's stated security purpose, this still creates privacy risk because process and peripheral usage data may reveal user behavior or active applications.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The open ports scan inspects listening TCP services on the host without any warning or consent flow. In a security tool this behavior is contextually relevant, but it still exposes local network-service posture and could reveal sensitive host details if output is logged or surfaced to unintended parties.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The WiFi scanner reads local network security configuration from system_profiler without any user-facing notice. While appropriate for a macOS security skill, collecting network configuration details silently can expose environment information and creates unnecessary privacy risk if handled without consent or transparency.

Description-Behavior Mismatch

Medium
Confidence
97% confidence
Finding
The manifest context describes the skill as 'macOS security monitoring for OpenClaw', which implies observational/status-check functionality. The exported `block-app` capability and its documentation describe app blocking/removal features, which are a control/remediation function rather than monitoring and therefore exceed the stated monitoring scope.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The skill declares a sensitive combination of permissions: command execution, filesystem read, and network access. For a security-focused skill this may be operationally justified, but without any user-facing warning, justification, or permission minimization in the manifest, the skill could perform host inspection and outbound communication in ways users may not expect.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The skill is presented as a macOS security monitoring tool, but it exposes a command named 'block-app' that implies a defensive action while only returning marketing content. In a security context, misleading capability claims are dangerous because users may believe a risky or unwanted app can be blocked when no protective action occurs, creating a false sense of security during incident response.

Excessive Permissions

Low
Category
Privilege Escalation
Content
## 🔒 **Security & Privacy**

**This skill requires the following permissions:**
- `exec` - Run macOS security commands (lsof, ps, etc.)
- `fs.read` - Read TCC database for permissions
- `network` - Check network connections
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Intent-Code Divergence

Low
Confidence
71% confidence
Finding
The inline documentation says 'Block app (simplified version)', which downplays the nature of the capability while the exported function is plainly named `blockApp` and accepts an app name to act upon. That documentation creates a potentially misleading impression about the command's intent and effect.

Intent-Code Divergence

Low
Confidence
99% confidence
Finding
The comment and function name indicate that the code blocks an application, but the implementation does not block, remove, or otherwise affect any app. Instead, it only returns promotional text for a paid product, which directly contradicts the documented intent of the function.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"node": ">=18.0.0"
  },
  "devDependencies": {
    "@types/node": "^20.11.17",
    "typescript": "^5.3.3"
  },
  "openclaw": {
Confidence
40% confidence
Finding
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Unpinned Dependencies

Low
Category
Supply Chain
Content
},
  "devDependencies": {
    "@types/node": "^20.11.17",
    "typescript": "^5.3.3"
  },
  "openclaw": {
    "displayName": "MaclawPro Security",
Confidence
40% confidence
Finding
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Vague Triggers

Low
Confidence
86% confidence
Finding
This is a manifest file, so vague-trigger checks apply. The command list includes generic invocations such as "block-app" and "vpn-checker" without any description of when they should be used, what arguments they expect, or exclusion conditions, which can make activation scope unclear.

Static analysis

No suspicious patterns detected.