Back to skill

Security audit

Step

Security checks for vulnerabilities and agentic risk

Overview

This is an offline step/wellness logger, but it persistently stores broad free-form health-related text locally with weak scoping and a misleading export command path.

Review before installing. Use it only for non-sensitive step or fitness notes on a private account, check permissions on ~/.local/share/step, and be aware that exports may not work as documented because the export command is captured by a logging handler.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/script.sh:6
Finding

Health Records Are Stored Without Explicit Restrictive Permissions

Content
View full analysis
> "$DATA_DIR/log.log" ``` Other command handlers and the export function use the same directory without explicitly setting restrictive file permissions. ### Technical Analysis The Skill stores potentially sensitive health and wellness information in `~/.local/share/step`, but it does not set a restrictive process `umask`, create the directory with mode `0700`, or create data files with mode `0600`. Consequently, the permissions of the directory, log files, history, and exports depend on the environment's inherited `umask`. With a commonly used `022` umask, newly created files may receive mode `0644` and the directory may receive mode `0755`. On systems where the user's home directory is traversable, other local accounts could read stored step counts, goals, reminders, activity timestamps, and arbitrary health-related notes. This issue does not provide remote code execution, privilege escalation, or write access to privileged system resources. It creates a local confidentiality exposure limited to records accessible through the resulting filesystem permissions. The script also contains a separate correctness issue: command handlers use `local` outside functions and may terminate before reaching their write operations in Bash. This can prevent the intended logging path from operating in the current version, but it does not provide a reliable security boundary and may disappear after routine maintenance. ### Attack Path 1. The Skill is run in an environment with a permissive `umask`, such as `022`. 2. The initialization code creates `~/.local/share/step` without an e ...[truncated 1173 chars]
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (7)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill is presented as a narrowly scoped step-tracking tool, but the documented behavior includes generic text logging, broad search/export functions, and multiple loosely related categories beyond step tracking. This mismatch can cause an agent or user to invoke the skill in situations involving more sensitive or unrelated data than expected, increasing the risk of over-collection and unintended disclosure via status, search, or export features.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script defines two export) case labels, and the first one captures the command, causing step export <fmt> to log arbitrary user input instead of performing an export. In a health-tracking context, this can mislead users into believing they exported data safely while instead appending sensitive content to persistent local logs, increasing privacy exposure and undermining user expectations about data handling.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The description uses broad activation wording such as 'Use when logging counts, tracking progress, charting trends, setting goals' without clear exclusions or domain limits. In an agent environment, that ambiguity can cause over-triggering for loosely related wellness, tracking, or goal-setting tasks, resulting in accidental storage of unrelated personal information.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The command list contains short, underspecified verbs like 'log', 'track', 'chart', 'goal', and 'compare' without defining accepted inputs or safe boundaries. Combined with examples showing arbitrary '$input' being saved, this makes it easy for an agent to route free-form user content into persistent local storage, broadening data capture beyond the intended step-tracking context.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest describes a narrowly scoped step-tracking tool for logging counts, setting fitness goals, and charting walking trends. In contrast, the command set and handlers store arbitrary user input across generic buckets such as remind, weekly, monthly, compare, milestone, and export, without any step-specific validation or walking-focused analysis.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The export routine aggregates all logged records into new files on disk, potentially creating additional copies of sensitive health data in JSON, CSV, or text formats. In this skill's context, that increases exposure because exported files are easier to share accidentally, sync to cloud backup, or leave behind without the user realizing a second copy was created.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill stores free-form health-related entries under ~/.local/share/step without any consent prompt, retention notice, or privacy warning. Because users may enter sensitive wellness information, persistent local storage can expose that data to other local processes, backups, shared accounts, or anyone with filesystem access.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.