Back to skill

Security audit

Unihiker K10 Arduino

Security checks across malware telemetry and agentic risk

Overview

The skill matches its K10 Arduino purpose, but its setup script can run unverified remote installer code and make privileged system changes, and its camera, microphone, and face-recognition examples need clearer privacy warnings.

Review the setup script before running it. Prefer installing arduino-cli through a trusted package manager or pinned release, avoid sudo fallback unless you intentionally want a system-wide install, and consider using an isolated Python environment for mpremote and ampy. For projects using camera, face recognition, motion detection, QR scanning, microphone recording, or continuous ASR, add clear user notice, consent, visible active indicators, and deletion/retention controls before deploying beyond personal experiments.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • 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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (16)

Missing User Warnings

Medium
Confidence
87% confidence
Finding
The face detection example activates the camera and processes human facial data without any user-facing notice, consent guidance, or privacy caveat. In an educational hardware skill this is not inherently malicious, but normalized examples that omit disclosure can lead downstream developers to build camera features that silently collect or analyze biometric-related data.

Missing User Warnings

High
Confidence
95% confidence
Finding
This example goes beyond detection and demonstrates biometric enrollment and recognition, yet provides no warning that it stores and matches face identities. Biometric data is highly sensitive, and omission of consent, retention, deletion, and access-control guidance can enable unauthorized enrollment or identification of individuals.

Missing User Warnings

Medium
Confidence
79% confidence
Finding
The dog/cat recognition example still turns on a camera and continuously analyzes the environment, but provides no disclosure that surrounding real-world content may be captured. Even if the target is animals rather than people, indoor scenes or bystanders can be incidentally recorded or monitored.

Missing User Warnings

Medium
Confidence
86% confidence
Finding
Continuous movement detection implies ongoing camera monitoring, but the example does not tell users that environmental activity is being watched in real time. This can be repurposed as covert occupancy or behavior monitoring, especially because the code runs indefinitely and changes state based on observed motion.

Missing User Warnings

Low
Confidence
70% confidence
Finding
QR scanning is lower risk than biometric recognition, but it still uses the camera to inspect physical surroundings and can unexpectedly capture sensitive nearby content. Without any disclosure, developers may ship scanning features that activate the camera without making this obvious to end users.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The speech recognition example initializes continuous listening for a wake phrase and commands but does not warn that the microphone is actively monitoring audio. Silent or poorly disclosed always-listening behavior can create privacy and trust issues and may expose nearby conversations to unintended processing.

Missing User Warnings

Medium
Confidence
83% confidence
Finding
The script performs package installation, configuration changes, and filesystem writes immediately when run, without an interactive warning or consent flow by default. In a skill context, users may execute setup scripts expecting limited configuration, so silent system modification increases the risk of unwanted changes or accidental privilege use.

Missing User Warnings

High
Confidence
98% confidence
Finding
The script downloads a remote installer from GitHub and pipes it directly into the shell, which executes unpinned code without integrity verification. If the upstream script, network path, or repository is compromised, arbitrary code runs on the user's machine during setup.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The fallback path escalates to sudo to place a binary in a system directory without an explicit warning before prompting for elevated privileges. This is risky because users may not realize the setup will modify global system state rather than only user-local files.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The script installs Python packages from package indexes without default disclosure or isolation, modifying the user's Python environment implicitly. This can create environment contamination, dependency conflicts, or arbitrary code execution during package installation if a dependency is malicious or the index path is tampered with.

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
90% confidence
Finding
Use of sudo is not inherently malicious, but here it enables a setup script to modify /usr/local/bin as root. Combined with remote installation behavior, privileged file placement increases the blast radius if the downloaded binary or prior steps are compromised.

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
90% confidence
Finding
This path uses sudo to install arduino-cli system-wide on macOS when Homebrew is unavailable, again creating privileged system changes during setup. Even if intended for convenience, privileged writes amplify any compromise in earlier download or execution stages.

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
97% confidence
Finding
Fetching an external script at runtime from a mutable URL introduces supply-chain risk, especially when the content is not pinned to a commit or verified cryptographically. In this setup script, that external content is part of the trusted installation path, making compromise of the source immediately dangerous.

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
97% confidence
Finding
The macOS fallback repeats the same mutable external fetch pattern, exposing users to arbitrary code execution from a compromised upstream installer. Because this is a setup script users are likely to trust, the context makes the supply-chain risk more significant.

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 dangerous command chain because it eliminates the opportunity to verify, inspect, or pin the executed code. In a developer setup skill, users may run this with high trust, making supply-chain compromise especially impactful.

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 network-to-shell chaining pattern exists in the macOS branch and carries the same arbitrary code execution risk. Executing mutable remote code during setup is one of the highest-risk behaviors in installer scripts.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.