Back to skill

Security audit

Unihiker K10 Micropython

Security checks across malware telemetry and agentic risk

Overview

This skill is mostly coherent for K10 MicroPython development, but its setup script can run unverified remote installer code, use sudo, and modify developer tooling with limited default disclosure.

Review scripts/setup.sh before installing. Prefer installing arduino-cli, mpremote, and ampy yourself through trusted package managers or isolated environments, and avoid running the setup script unattended or with sudo unless you accept the host-level changes.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (10)

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The default execution path performs package installation, board index updates, pip installs, and filesystem writes while suppressing most user-facing output unless --show is provided. That creates a transparency and consent problem: users may trigger broad environment changes without clear disclosure, which is risky in an agent skill that may be invoked automatically.

Missing User Warnings

High
Confidence
99% confidence
Finding
This line downloads a remote shell script from GitHub and immediately executes it with sh, giving the remote content direct code execution on the host. If the upstream script, transport, repository, or DNS path is compromised, the user's machine can be fully compromised during setup.

Missing User Warnings

High
Confidence
99% confidence
Finding
The macOS fallback path has the same unsafe pattern of executing a remotely fetched installer script without review or integrity verification. Because this occurs in an installation script, users may run it with elevated trust, amplifying the chance of host compromise if the source is tampered with.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The script installs Python packages into the user's environment via pip/pip3 without clear default disclosure, which can alter global or user Python state and pull transitive code from package indexes. In an agent-driven setup flow, silent dependency installation increases supply-chain and environment-integrity risk.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
linux)
            # Download and install
            curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
            mv bin/arduino-cli "${HOME}/.local/bin/" 2>/dev/null || sudo mv bin/arduino-cli /usr/local/bin/
            rm -rf bin/
            ;;
        macos)
Confidence
84% confidence
Finding
This path attempts to move the binary into /usr/local/bin using sudo if a user-local install fails, causing privilege escalation during setup. While common in installers, invoking sudo from an agent skill increases risk because a compromised prior step or substituted binary could be written into a privileged path.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
brew install arduino-cli
            else
                curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
                sudo mv bin/arduino-cli /usr/local/bin/
                rm -rf bin/
            fi
            ;;
Confidence
84% confidence
Finding
The macOS fallback installs a downloaded binary into /usr/local/bin with sudo, which elevates the consequences of any earlier supply-chain compromise. In this script, that risk is compounded by the preceding remote script execution path.

External Script Fetching

Low
Category
Supply Chain
Content
case $OS in
        linux)
            # Download and install
            curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
            mv bin/arduino-cli "${HOME}/.local/bin/" 2>/dev/null || sudo mv bin/arduino-cli /usr/local/bin/
            rm -rf bin/
            ;;
Confidence
98% confidence
Finding
Fetching an external installer script at runtime introduces supply-chain risk and makes behavior depend on mutable remote content. In a setup script for developer tooling, that is especially dangerous because it executes on the host machine and may be trusted implicitly.

External Script Fetching

Low
Category
Supply Chain
Content
if command -v brew >/dev/null 2>&1; then
                brew install arduino-cli
            else
                curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
                sudo mv bin/arduino-cli /usr/local/bin/
                rm -rf bin/
            fi
Confidence
98% confidence
Finding
The fallback macOS installer fetches external executable content from a remote source, making the security of the setup depend on third-party infrastructure and mutable upstream state. Because this is host-side setup code, compromise of that source can lead to arbitrary code execution.

Chaining Abuse

High
Category
Tool Misuse
Content
case $OS in
        linux)
            # Download and install
            curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
            mv bin/arduino-cli "${HOME}/.local/bin/" 2>/dev/null || sudo mv bin/arduino-cli /usr/local/bin/
            rm -rf bin/
            ;;
Confidence
98% confidence
Finding
Piping downloaded content directly into sh is a classic dangerous command chain because it removes any opportunity for integrity verification, review, or safe failure handling before execution. In this skill context, that means a setup action can become arbitrary host code execution from a mutable remote source.

Chaining Abuse

High
Category
Tool Misuse
Content
if command -v brew >/dev/null 2>&1; then
                brew install arduino-cli
            else
                curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
                sudo mv bin/arduino-cli /usr/local/bin/
                rm -rf bin/
            fi
Confidence
98% confidence
Finding
The same unsafe chaining pattern exists in the macOS fallback path, where remote content is streamed directly into the shell. This significantly increases exposure to supply-chain attacks and accidental execution of altered installer content.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.