Back to skill

Security audit

屏幕自动化工程师

Security checks across malware telemetry and agentic risk

Overview

This screen-control skill mostly matches its stated purpose, but it should be reviewed because it runs a local helper selected from spoofable local paths.

Before installing, verify that the official Screen Automation Helper is installed from the publisher you trust and avoid using environment-variable or PATH overrides unless you intentionally point to a known helper binary. Supervise first runs, keep sensitive windows out of scope, and only allow screenshot sharing after checking the provider, region, and purpose.

Vulnerability Patterns
  • Tool Hijacking and SpoofingModifies or replaces tools so legitimate-looking calls execute attacker logic
  • 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)

T07 · Tool Hijacking and Spoofing

Warning
Location
scripts/resolve_cli.ps1:3
Finding
Unverified Helper Executable Resolution Enables Local Tool Spoofing<![CDATA[ ## Vulnerability Details **File Locations**: - `scripts/resolve_cli.ps1:3-24` - `scripts/workflow_dev.ps1:62-111` - `scripts/workflow_dev.ps1:124-152` - `scripts/resolve_cli.sh:4-12` - `scripts/workflow_dev.sh:20-31` - `scripts/workflow_dev.sh:45-55` **Vulnerability Type**: Unauthenticated executable and application-bundle resolution **Risk Level**: Medium **Classification**: T07: Tool Hijacking and Spoofing ### Vulnerable Code Windows resolver: ```powershell $ErrorActionPreference = "Stop" $candidates = [System.Collections.Generic.List[string]]::new() foreach ($candidate in @( $Executable, $env:SCREEN_AUTOMATION_HELPER_EXE, (Join-Path $env:LOCALAPPDATA "Programs\Xiaozs\ScreenAutomationHelper\ScreenAutomationHelper.exe") )) { if (-not [string]::IsNullOrWhiteSpace($candidate)) { $candidates.Add($candidate) } } $appPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\ScreenAutomationHelper.exe" if (Test-Path -LiteralPath $appPath) { $registered = (Get-Item -LiteralPath $appPath).GetValue("") if ($registered) { $candidates.Add([string]$registered) } } $command = Get-Command "ScreenAutomationHelper.exe" -ErrorAction SilentlyContinue if ($command -and $command.Source) { $candidates.Add($command.Source) } foreach ($candidate in $candidates) { $fullPath = [IO.Path]::GetFullPath([Environment]::ExpandEnvironmentVariables($candidate)) if (Test-Path -LiteralPath $fullPath -PathType Leaf) { return $fullPath } } ``` The workflow wrapper implements equivalent resolution logic and then executes the selected file: ```powershell $resolvedExecutable = Resolve-HelperExecutable -RequestedPath $Executable switch ($Action) { "cli-path" { $resolvedExecutable } "status" { $desktopStatus = (& $resolvedExecutable cli status | Out-String | ConvertFrom-Json) [ordered]@{ ok = $true executable = $resolvedExecutable desktop = $desktopStatus } | ConvertTo-Json ...[truncated 4992 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. **Verify Windows executable signatures** - Call `Get-AuthenticodeSignature` for every candidate. - Require a valid signature and compare the signing certificate or publisher against an embedded allowlist. - Reject unsigned files, invalid signatures, and unexpected publishers. 2. **Verify macOS bundle identity** - Use the platform code-signing APIs or `codesign` verification. - Validate the expected Team ID, bundle identifier, and designated requirement. - Verify both the main CLI and relevant bundled executable code. 3. **Remove ambiguous discovery fallbacks** - Do not resolve this helper through the general Windows `PATH`. - Prefer canonical installation directories established by a trusted installer. - Treat HKCU and environment-based values as untrusted hints rather than proof of identity. 4. **Restrict development overrides** - Allow `-Executable`, `SCREEN_AUTOMATION_HELPER_EXE`, and `SCREEN_AUTOMATION_MAC_APP` only in an explicit development mode. - Display the resolved path and require informed user approval before first execution of an override. - Document that environment overrides cross a code-execution trust boundary. 5. **Validate filesystem properties** - Resolve paths to their canonical targets before validation. - Reject unexpected symbolic links, junctions, and reparse points. - Reject candidates located in directories writable by untrusted users. - Confirm expected ownership and permissions where supported. 6. **Apply checks consistently** - Centralize helper resolution and authenticity verification so `resolve_cli` and `workflow_dev` cannot diverge. - Apply the same verification before executing the macOS embedded Python interpreter or bridge. - Fail closed when identity validation cannot be completed. ]]>
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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 (1)

Vague Triggers

Medium
Confidence
95% confidence
Finding
The default activation prompt is extremely broad: it asks the skill to inspect a nearby window and perform a generic screen task, which can match many ordinary user requests and cause unintended invocation. In a screen-control skill, overbroad triggering is especially dangerous because accidental activation can expose sensitive on-screen data or initiate UI actions in the wrong context.

VirusTotal

64/64 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.