Back to skill

Security audit

android-arm64-devkit-skill

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent Android ARM64 build-and-deploy helper, but users should be careful with its privileged package-install steps and ADB key troubleshooting advice.

Install only if you are comfortable running Debian/Ubuntu package installs, using ADB against your device, and optionally using SSH/SCP for a remote ADB host. Prefer approving the current host on the Android device instead of copying ~/.android/adbkey; if you do copy it, treat it like a private credential, transfer it securely, restrict permissions, and consider revoking old ADB authorizations afterward.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (14)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The declared description presents the skill as an end-to-end APK creation/build/deployment capability for ARM64 Linux, including adb-based installation and verification. The supplied code chunk is much narrower: it is a setup/diagnostic script for ensuring a native aarch64 aapt2 and related Debian Android packages are present, and for optionally writing a Gradle override property. That setup work supports ARM64 APK workflows, but it does not itself create, build, or deploy APKs, nor does it invoke adb or verify installs. Additionally, it can modify the host by installing packages with sudo apt-get, which is a substantive behavior absent from the declared description. This is a material description-behavior mismatch rather than a minor implementation detail.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
`adb-connect.sh` never guesses the port: it reads it from an existing wireless

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
`adb-connect.sh` never guesses the port: it reads it from an existing wireless

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
`adb-install-verify.sh` prints the install result, the installed version/time,

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
`adb-install-verify.sh` prints the install result, the installed version/time,

Ssd 3

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

This section explicitly describes reusing an authorized ADB private key from one host on another host to obtain device access. That bypasses the normal trust-establishment flow and creates a credential-sharing pattern that can enable unauthorized access if the key is copied beyond tightly controlled systems.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
95% 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/adb-disconnect.sh (reported line 21)May include surrounding context.

sh
adb_call start-server || true
fi

rm -f "$HERE/../.adb-device"
echo "done"

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · scripts/setup-aapt2-arm64.sh (reported line 59)May include surrounding context.

sh
echo "  missing: $AAPT2"
  if [ "$DO_INSTALL" = 1 ]; then
    echo "  installing: ${PACKAGES[*]}"
    sudo apt-get update -qq && sudo apt-get install -y "${PACKAGES[@]}"
    printf '  run  : '; "$AAPT2" version 2>&1 | head -1
  else
    echo "  run this script with --install to get them"

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · README.md (reported line 22)May include surrounding context.

bash
# 1) native aarch64 toolchain (Debian/Ubuntu)
sudo apt-get install -y android-sdk-build-tools android-sdk-platform-tools android-libaapt
./scripts/setup-aapt2-arm64.sh

# 2) point Gradle at the native aapt2

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

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

file. Gradle-side values (sdk.dir, android.aapt2FromMavenOverride) belong to the project's local.properties / gradle.properties.

Create an app (scaffold)

bash
{baseDir}/scripts/new-project.sh ~/apps/MyApp com.example.myapp "My App"

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
86% confidence
Finding

The skill instructs the user to run sudo apt-get install, which executes with elevated privileges and can modify the host system. While this is common for package installation, any root-requiring step increases risk if users run it without verifying package sources, package names, or understanding the system-wide changes being made.

Content

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

Build branch (ARM64 host)

bash
sudo apt-get install -y android-sdk-build-tools android-sdk-platform-tools android-libaapt
{baseDir}/scripts/setup-aapt2-arm64.sh
{baseDir}/scripts/setup-aapt2-arm64.sh --write-gradle-property path/to/project
cd path/to/project && ./gradlew clean assembleDebug

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation instructs users to copy an already-authorized ADB private key from another host, but does not clearly warn that this key is a sensitive authentication credential. Anyone obtaining that key can impersonate the authorized host to the device, potentially gaining shell access, installing APKs, or extracting data over ADB.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
80% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · docs/troubleshooting.md (reported line 90)May include surrounding context.

bash
cp /path/from/authorized/host/.android/adbkey      ~/.android/adbkey
cp /path/from/authorized/host/.android/adbkey.pub  ~/.android/adbkey.pub
chmod 600 ~/.android/adbkey
adb kill-server && adb start-server

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · scripts/setup-aapt2-arm64.sh (reported line 59)May include surrounding context.

sh
echo "  missing: $AAPT2"
  if [ "$DO_INSTALL" = 1 ]; then
    echo "  installing: ${PACKAGES[*]}"
    sudo apt-get update -qq && sudo apt-get install -y "${PACKAGES[@]}"
    printf '  run  : '; "$AAPT2" version 2>&1 | head -1
  else
    echo "  run this script with --install to get them"