Back to skill

Security audit

Computer-Use Skill

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a real desktop automation skill, but it grants powerful screen, input, clipboard, and app-control access without the separate user approval its tooling describes.

Review before installing. Use this only on a trusted, isolated desktop where you are comfortable with an agent seeing the screen, opening apps, clicking, typing, and reading or writing the clipboard. Close sensitive apps and avoid finance, admin, secrets, and personal-account workflows unless the skill adds a real interactive approval or allowlist flow and pinned runtime dependencies.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
project/platforms/linux/src/session.ts:23
Finding
Application and Sensitive Capability Requests Are Silently Auto-Approved<![CDATA[ ## Vulnerability Details **File Locations**: - `project/platforms/linux/src/session.ts:23-48,65` - `project/platforms/macos/src/session.ts:23-48,65` - `project/platforms/windows/src/session.ts:23-48,65` - Related permission flow: `project/platforms/linux/src/vendor/computer-use-mcp/toolCalls.ts:917-945`, with equivalent code in the macOS and Windows platform directories **Vulnerability Type**: Authorization bypass through automatic permission approval **Risk Level**: High ### Vulnerable Code The following implementation is duplicated across the Linux, macOS, and Windows session modules: ```ts function autoApprovePermission(req: CuPermissionRequest): CuPermissionResponse { const granted = req.apps .filter(app => app.resolved && !app.alreadyGranted) .map(app => ({ bundleId: app.resolved!.bundleId, displayName: app.resolved!.displayName, grantedAt: Date.now(), tier: app.proposedTier, })) const denied = req.apps .filter(app => !app.resolved) .map(app => ({ bundleId: app.requestedName, reason: 'not_installed' as const, })) return { granted, denied, flags: { ...DEFAULT_GRANT_FLAGS, ...req.requestedFlags, }, } } ``` The automatic approval function is installed as the permission handler: ```ts onPermissionRequest: async req => autoApprovePermission(req), ``` Sensitive permission requests reach that handler through the MCP access-request flow: ```ts if (typeof args.clipboardRead === "boolean") { requestedFlags.clipboardRead = args.clipboardRead; } if (typeof args.clipboardWrite === "boolean") { requestedFlags.clipboardWrite = args.clipboardWrite; } if (typeof args.systemKeyCombos === "boolean") { requestedFlags.systemKeyCombos = args.systemKeyCombos; } if (needDialog.length > 0 || Object.keys(requestedFlags).length > 0) { const req: CuPermissionRequest = { requestId: randomUUID(), reason, apps: needDialog, requestedFlags, screen ...[truncated 3182 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace `autoApprovePermission()` with a trusted, interactive user-consent provider. 2. Default-deny requests when no interactive approval provider is available. 3. Require a distinct, explicit user decision for every newly requested application. 4. Require separate opt-in approval for: - Clipboard reads - Clipboard writes - System-level key combinations 5. Do not merge `req.requestedFlags` directly into returned grants. Construct the response only from flags explicitly selected by the user. 6. Default unknown or unclassified applications to `read` or deny them entirely rather than granting `full`. 7. Maintain an explicit user-configured allowlist and denylist outside Agent control. 8. Record an auditable grant event containing the application, tier, flags, user decision, and session identifier. 9. Add tests proving that: - Permission requests cannot succeed without user confirmation. - Unknown applications do not receive full control automatically. - Clipboard and system-key permissions remain disabled unless separately approved. 10. Apply the correction consistently to Linux, macOS, Windows, and any generated distribution artifacts. ]]>

T08 · Insecure Dependencies

Warning
Location
project/platforms/linux/src/computer-use/pythonBridge.ts:82
Finding
Unpinned Python Dependencies Are Downloaded and Installed at Runtime<![CDATA[ ## Vulnerability Details **File Locations**: - `project/platforms/linux/src/computer-use/pythonBridge.ts:82-87` - `project/platforms/macos/src/computer-use/pythonBridge.ts:64-69` - `project/platforms/windows/src/computer-use/pythonBridge.ts:82-87` - `project/platforms/linux/runtime/requirements.txt:1-5` - `project/platforms/macos/runtime/requirements.txt:1-6` - `project/platforms/windows/runtime/requirements.txt:1-5` **Vulnerability Type**: Unlocked runtime dependency installation **Risk Level**: Medium ### Vulnerable Code The Linux and Windows bootstrap implementations use the following runtime installation process, with equivalent behavior in the macOS implementation: ```ts if (installedDigest !== digest) { logDebug('installing python runtime dependencies') await runOrThrow( pythonBinPath(), ['-m', 'pip', 'install', '--upgrade', 'pip'], 'pip upgrade', ) await runOrThrow( pythonBinPath(), ['-m', 'pip', 'install', '-r', requirementsPath], 'python dependency install', ) await writeFile(installStampPath, `${digest}\n`, 'utf8') } ``` Linux requirements: ```text mss>=10.1.0 Pillow>=11.3.0 pyautogui>=0.9.54 psutil>=7.0.0 python-xlib>=0.33 ``` macOS requirements: ```text mss>=10.1.0 Pillow>=11.3.0 pyautogui>=0.9.54 pyobjc-core>=11.1 pyobjc-framework-Cocoa>=11.1 pyobjc-framework-Quartz>=11.1 ``` Windows requirements: ```text mss>=10.1.0 Pillow>=11.3.0 pyautogui>=0.9.54 psutil>=7.0.0 pywin32>=310 ``` ### Technical Analysis The bootstrap process upgrades pip to the newest available version and then installs packages using lower-bound-only constraints. A requirement such as `mss>=10.1.0` permits any future release that satisfies the lower bound. The requirements digest does not provide artifact integrity. It hashes only the text of `requirements.txt`; it does not identify the exact package versions selected by pip or authenticate downloaded wheels and source distributions. As a result, two installations using the ...[truncated 1989 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace every lower-bound-only dependency constraint with an exact reviewed version using `==`. 2. Generate platform-specific lock files that include all transitive dependencies. 3. Require package hashes during installation, for example through pip's `--require-hashes` option. 4. Remove the unconditional runtime pip upgrade or pin pip itself to a reviewed version and hash. 5. Prefer prebuilt and signed runtime environments so ordinary GUI operations do not trigger package installation. 6. If runtime installation remains necessary: - Use an explicitly allowlisted package index. - Enforce TLS certificate validation. - Disable untrusted extra indexes. - Prefer reviewed binary wheels. - Reject source builds unless specifically required and audited. 7. Store and verify a lock-file or artifact manifest digest rather than hashing only `requirements.txt`. 8. Run dependency vulnerability and provenance checks during release preparation. 9. Apply the same controls independently to Linux, macOS, and Windows because their dependency graphs differ. 10. Document the first-run network dependency installation clearly so users can make an informed trust decision. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (170)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
92% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
Even within the markdown, the skill is clearly a trusted-local computer-use package that can be built and run as a local desktop automation runtime, while the top-level description underplays the sensitive surface area. In this context, under-disclosure is more dangerous because the skill targets direct host interaction, and the note that screenshot filtering is 'none' indicates potentially unrestricted visual data access with safety delegated elsewhere.

Missing User Warnings

High
Confidence
98% confidence
Finding
The README explicitly states that `screenshotFiltering: none` is returned, meaning screenshots may contain any visible sensitive information, yet it does not pair this with a strong user-facing warning about privacy exposure. In the context of a desktop-control skill whose core function is screen capture and interaction, disabling filtering without clear warnings materially increases the risk of credential, token, personal data, or confidential document exposure.

Known Vulnerable Dependency: fast-uri==3.1.0 — 7 advisory(ies): CVE-2026-13676 (fast-uri vulnerable to host confusion via failed IDN canonicalization); CVE-2026-18446 (fast-uri vulnerable to host confusion via backslash authority introducer); CVE-2026-75975 (fast-uri vulnerable to server-side request forgery via malformed IPv6 normalizat) +4 more

High
Category
Supply Chain
Confidence
84% confidence
Finding
fast-uri 3.1.0 is a real vulnerable dependency with multiple host confusion and SSRF-related advisories. In a computer-use skill that may broker networked operations or validate/construct URLs through upstream libraries, URI parsing ambiguities can become security-relevant even if this lockfile alone does not show the call sites.

Known Vulnerable Dependency: hono==4.12.9 — 16 advisory(ies): CVE-2026-56762 (Hono missing validation of cookie name on write path in setCookie()); CVE-2026-47676 (Hono: app.mount() strips mount prefix using undecoded path, causing incorrect ro); CVE-2026-47675 (Hono: Cookie helper does not sanitize sameSite and priority, allowing Set-Cookie) +13 more

High
Category
Supply Chain
Confidence
89% confidence
Finding
hono 4.12.9 is a real vulnerable dependency with numerous advisories affecting cookies, routing, and path handling. Since the MCP SDK brings in web server capabilities and this skill is a cross-platform computer-use component that may expose local or remote control surfaces, framework-level request parsing or routing flaws can materially increase attack surface.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
project/platforms/linux/src/lib/execFileNoThrow.ts:9

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
project/platforms/macos/dist/lib/execFileNoThrow.js:4

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
project/platforms/macos/src/lib/execFileNoThrow.ts:9

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
project/platforms/windows/src/lib/execFileNoThrow.ts:9