Back to skill

Security audit

SparkyFitness

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent for a fitness CLI, but users should review it because it installs an unpinned third-party CLI into a system path and uses it with health data and an API key.

Install only if you trust the SparkyFitness server, the CLI maintainer, and the Homebrew tap/source repository. Prefer a pinned release with checksum or signature verification, avoid system-wide sudo installation when a user-local bin directory works, use HTTPS, and treat the API key and logged health notes as sensitive personal data.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:11
Finding
Unpinned Third-Party CLI Installation Creates a Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md`, lines 11–18 **Vulnerability Type**: Unpinned and unverified third-party dependencies **Risk Level**: Medium **Complete Code Snippet**: ```markdown Install - Homebrew (macOS/Linux): `brew tap aronjanosch/tap && brew install sparky-cli` - Build from source (requires Go 1.21+): ``` git clone https://github.com/aronjanosch/sparky-cli cd sparky-cli go build -o sparky . sudo mv sparky /usr/local/bin/ ``` ``` ### Technical Analysis Both documented installation methods retrieve mutable upstream content without pinning an immutable release, commit, formula revision, checksum, or cryptographic signature. The Homebrew method trusts a custom third-party tap and whatever package definition it serves at installation time. The source-build method clones the repository's current default branch and immediately compiles it. Consequently, the effective code installed by users can change after this skill has been reviewed. The skill's homepage points to `CodeWithCJ/SparkyFitness`, while the CLI installation sources use the `aronjanosch` account. This is not proof of malicious behavior, but the documentation does not establish or verify the trust relationship between those maintainers. The final command uses `sudo` to place the resulting executable in `/usr/local/bin`, making integrity verification especially important. ### Attack Path 1. An attacker compromises the third-party GitHub repository, Homebrew tap, maintainer account, or release infrastructure. 2. The attacker modifies the CLI source or Homebrew formula to include malicious behavior. 3. A user follows the documented installation instructions, which fetch the current mutable upstream content without integrity verification. 4. The user builds or installs the modified CLI and places it in a system-wide executable directory. 5. The user configures the CLI with a SparkyFitness server URL and API key and ...[truncated 1016 chars]
Remediation
## Remediation Suggestions 1. Pin source installations to a reviewed release tag and immutable commit hash rather than cloning the current default branch. 2. Prefer official, versioned release artifacts and publish SHA-256 checksums for every supported platform. 3. Cryptographically sign releases and Homebrew formula updates, and document how users must verify those signatures. 4. Pin the Homebrew formula to a specific release archive with a verified checksum. Avoid installation instructions that depend on mutable branch archives. 5. Clearly document the relationship between the SparkyFitness project owner and the separate CLI and tap maintainers. 6. Recommend installation into a user-owned directory such as `~/.local/bin` instead of requiring `sudo` where feasible. 7. Add dependency and source provenance review to the release process, including automated vulnerability scanning and reproducible-build verification. 8. Document the exact expected CLI version in the skill metadata and provide an upgrade process that repeats integrity verification.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill instructs users to interact with a self-hosted fitness server and explicitly documents logging food, mood, weight, and other biometric data, but it does not warn that these commands transmit sensitive health-related data to a remote service and may also query third-party providers such as Open Food Facts and Free Exercise DB. In a health context, that omission is security- and privacy-relevant because users and agents may disclose regulated or highly sensitive personal information without informed consent or destination awareness.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
git clone https://github.com/aronjanosch/sparky-cli
  cd sparky-cli
  go build -o sparky .
  sudo mv sparky /usr/local/bin/
  ```

Setup (once)
Confidence
70% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Missing User Warnings

Low
Confidence
92% confidence
Finding
The documentation tells users to set an API key with `sparky config set-key <key>` but provides no guidance on secure credential handling, storage, rotation, or avoiding accidental disclosure in shared terminals, shell history, logs, or screenshots. While this is a documentation flaw rather than direct code execution risk, exposed API keys could allow unauthorized access to personal health records on the configured server.

Static analysis

No suspicious patterns detected.