Back to skill

Security audit

Longarm Control

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Android remote-control helper, but it documents plaintext remote control with optional bearer tokens and sensitive screenshots, which needs careful review before use.

Install only if you trust the longarm device/server and can keep it on a trusted network or encrypted tunnel. Avoid sending tokens over plaintext HTTP, enable authentication, treat screenshots and exported history as sensitive, and confirm destructive or device-changing actions before letting an agent run them.

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
scripts/longarm.sh:47
Finding

Remote device control and bearer credentials may be transmitted over plaintext HTTP

Content
View full analysis
:`, shown in longarm after the web server starts. - Optional bearer token: required only when longarm's "require token" setting is enabled. ``` ```bash export LONGARM_URL="http://192.168.1.50:8080" export LONGARM_TOKEN="la_xxxxx" # omit if token auth is disabled ``` The API reference similarly specifies: ```markdown Base URL: `http://:`. If token auth is enabled, send `Authorization: Bearer ` on every request. Missing or invalid tokens return `401`. ``` ### Technical Analysis The helper accepts any URL in `LONGARM_URL` and provides a plaintext HTTP URL as its recommended example. When `LONGARM_TOKEN` is set, the bearer credential is placed in an `Authorization` header without verifying that the connection uses TLS. Consequently, an HTTP deployment transmits the token, API request bodies, API responses, screenshots, device information, intent data, and batch automation inf ...[truncated 2192 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/longarm.sh:65
Finding

Unescaped command arguments allow JSON request-body injection

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (11)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The reference specifies a base URL using plain HTTP while instructing clients to send a bearer token on every request, which exposes credentials and all remote-control traffic to interception or modification by anyone on the network path. In the context of an Android remote-control API, a stolen token could enable screenshots, app launches, gestures, and batch automation, making this substantially more dangerous than a typical low-sensitivity API.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/longarm.sh (reported line 85)May include surrounding context.

sh
batch-get) [[ $# -ge 1 ]] || die "batch-get needs: ID"; get "/api/batch/$1"; echo ;;
  batch-create-file) [[ $# -ge 1 ]] || die "batch-create-file needs: TASK.json"; post_file /api/batch "$1"; echo ;;
  batch-update-file) [[ $# -ge 2 ]] || die "batch-update-file needs: ID TASK.json"; put_file "/api/batch/$1" "$2"; echo ;;
  batch-delete) [[ $# -ge 1 ]] || die "batch-delete needs: ID"; delete "/api/batch/$1"; echo ;;
  batch-run) [[ $# -ge 1 ]] || die "batch-run needs: ID"; post "/api/batch/$1/run" "{}"; echo ;;
  batch-run-file) [[ $# -ge 1 ]] || die "batch-run-file needs: TASK.json"; post_file /api/batch/run "$1"; echo ;;
  batch-status) get /api/batch/status; echo ;;

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/longarm.sh (reported line 91)May include surrounding context.

sh
batch-status) get /api/batch/status; echo ;;
  batch-history) get /api/batch/history; echo ;;
  batch-history-get) [[ $# -ge 1 ]] || die "batch-history-get needs: RUN_ID"; get "/api/batch/history/$1"; echo ;;
  batch-history-delete) [[ $# -ge 1 ]] || die "batch-history-delete needs: RUN_ID"; delete "/api/batch/history/$1"; echo ;;
  batch-history-clear) delete /api/batch/history; echo ;;
  batch-shot) [[ $# -ge 2 ]] || die "batch-shot needs: RUN_ID SHOT_ID [OUT.png]"; out="${3:-longarm-batch-shot.png}"; download "/api/batch/history/$1/screenshots/$2" "$out"; echo "saved $out" ;;
  batch-export) [[ $# -ge 1 ]] || die "batch-export needs: RUN_ID [OUT.zip]"; out="${2:-longarm-batch-screenshots.zip}"; download "/api/batch/history/$1/export" "$out"; echo "saved $out" ;;

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/longarm.sh (reported line 92)May include surrounding context.

sh
batch-history) get /api/batch/history; echo ;;
  batch-history-get) [[ $# -ge 1 ]] || die "batch-history-get needs: RUN_ID"; get "/api/batch/history/$1"; echo ;;
  batch-history-delete) [[ $# -ge 1 ]] || die "batch-history-delete needs: RUN_ID"; delete "/api/batch/history/$1"; echo ;;
  batch-history-clear) delete /api/batch/history; echo ;;
  batch-shot) [[ $# -ge 2 ]] || die "batch-shot needs: RUN_ID SHOT_ID [OUT.png]"; out="${3:-longarm-batch-shot.png}"; download "/api/batch/history/$1/screenshots/$2" "$out"; echo "saved $out" ;;
  batch-export) [[ $# -ge 1 ]] || die "batch-export needs: RUN_ID [OUT.zip]"; out="${2:-longarm-batch-screenshots.zip}"; download "/api/batch/history/$1/export" "$out"; echo "saved $out" ;;
  *) die "unknown command '$cmd' (run: longarm.sh help)" ;;

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill invokes shell-based control via scripts/longarm.sh but does not declare any tool scope such as permissions or allowed-tools. That creates an under-specified trust boundary: an agent may be allowed to execute networked remote-control actions without explicit restriction or visibility, increasing the chance of unintended command execution against a real device.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill can launch apps, open URLs, perform gestures, and run automation batches that change device state, yet the description does not clearly warn about these real-world side effects. In a remote-control skill, lack of an explicit caution can lead to unintended actions on a live device, including navigation to malicious content, disruptive app launches, or automated state changes triggered without adequate user confirmation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill supports screenshot capture, screenshot grids, and batch history/screenshots, but it does not warn that screenshots may contain sensitive personal or enterprise data and may be stored on disk or in batch history. In a remote Android control context, this omission is meaningful because users or downstream agents may capture authentication codes, messages, account data, or other secrets without informed consent or careful handling.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file describes behaviors that can affect user privacy and stored data, including taking screenshots and later deleting history/screenshots, but it does not include any cautionary note or disclosure about those effects. Under the markdown criteria for missing user warnings, user-visible warnings are expected when a skill can access sensitive visual data or remove stored artifacts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The MCP reference exposes destructive and privacy-sensitive tools such as batch_delete, batch_history_delete, and batch_history_export without documenting any warning, confirmation expectation, or side-effect caveat. In this skill context, those operations can delete saved tasks/history or export screenshots containing sensitive device data, making accidental or unsafe agent use more likely.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/longarm.sh (reported line 58)May include surrounding context.

sh
AUTH=(-H "Authorization: Bearer ${LONGARM_TOKEN}")
fi

get() { curl -fsS "${AUTH[@]}" -H "Accept: application/json" "${BASE}$1"; }
download() { curl -fsS "${AUTH[@]}" "${BASE}$1" -o "$2"; }
delete() { curl -fsS "${AUTH[@]}" -X DELETE -H "Accept: application/json" "${BASE}$1"; }
post() { curl -fsS "${AUTH[@]}" -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d "$2" "${BASE}$1"; }

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This shell script exposes DELETE operations for batch records and history, including clearing all batch history, but these commands have no confirmation prompt and no explicit warning comment or user-facing disclosure beyond the command names. Because these are irreversible remote deletions, users may trigger them without adequate notice of their destructive effect.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.