Back to skill

Security audit

Time Analyzer

Security checks for vulnerabilities and agentic risk

Overview

This is mostly a local time-tracking tool, but it needs Review because its documentation includes a persistent cron setup command that can replace the user's existing crontab.

Review before installing. The core tool appears local and purpose-aligned, but do not run the documented crontab command as written because it may erase existing scheduled jobs and creates persistent daily execution. Be aware that tracked activities are stored in ~/.time-analyzer and may reveal personal routines; use it only if you are comfortable managing that local history.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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)

T06 · System Persistence

Error
Location
SKILL.md:103
Finding
Persistent Scheduled Task Installation Replaces the User's Existing Crontab## Vulnerability Details **File Location**: `SKILL.md`, lines 103-107 **Vulnerability Type**: Scheduled-task persistence and destructive crontab replacement **Risk Level**: High **Complete Code Snippet**: ```markdown ## Automatic Tracking The current version supports manual start/stop tracking. Automatic reports can be enabled via cron jobs: ```bash # Add to crontab to generate daily report at 22:00 echo "0 22 * * * /usr/local/bin/time-analyzer report" | crontab - ``` ``` ### Technical Analysis The documented command installs a recurring cron task that survives the current Skill invocation and runs `/usr/local/bin/time-analyzer report` every day at 22:00. This constitutes cross-session system persistence. Scheduled report generation is related to the Skill's reporting functionality, but persistence is not necessary for its core manual tracking, analysis, and on-demand reporting features. It should therefore be an explicit, carefully implemented opt-in feature. The command is also destructive. `crontab -` treats standard input as the user's complete replacement crontab. Because the command supplies only one line, following the instructions replaces all existing cron entries rather than appending a new entry. ### Attack Path 1. A user installs the CLI globally and follows the automatic-report instructions in `SKILL.md`. 2. The shell sends a single cron entry to `crontab -`. 3. The user's existing crontab is replaced, deleting any previously configured scheduled jobs. 4. The `time-analyzer report` command executes automatically every day at 22:00 under the affected user's account. 5. If `/usr/local/bin/time-analyzer` is subsequently replaced or compromised, the replacement code is also executed automatically by cron. ### Impact Assessment The immediate scope is the invoking user's crontab and account privileges. Existing scheduled tasks may be silently removed, potentially disrupting backups, maintenance, ...[truncated 318 chars]
Remediation
## Remediation Suggestions - Remove the direct `echo ... | crontab -` instruction. - Keep scheduled reporting explicitly opt-in and clearly disclose that it creates a persistent user-level task. - Prefer instructing users to add the entry through `crontab -e`, which avoids replacing unrelated entries. - If automation is provided, safely merge a uniquely marked entry with the existing crontab, validate that it is not already present, and preserve all unrelated jobs. - Resolve and quote the actual executable path rather than assuming `/usr/local/bin/time-analyzer`. - Provide a matching uninstall command that removes only the uniquely marked Time Analyzer entry. - Display the proposed schedule and obtain explicit confirmation before installation. - Document the permissions and execution environment used by the cron task.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
Findings (9)

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger list is broad and includes common phrases like 'start tracking', 'stop tracking', and 'time tracking', which can cause the skill to activate in contexts where the user did not explicitly intend to use this tool. Unintended invocation matters here because the skill stores user activity data and may start recording sensitive behavioral information without sufficiently explicit consent.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The documentation states that activity records are stored under the user's home directory, but the skill description and trigger surface do not clearly warn users before use that persistent behavioral data will be written locally. In the context of a time-tracking skill, this is particularly sensitive because records can reveal routines, work patterns, sleep habits, and other personal activity data.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The trigger phrases are generic productivity/time-management terms that are likely to appear in ordinary user requests, which can cause the skill to activate when the user did not explicitly intend to invoke it. In a time-tracking skill, unintended activation is meaningful because it may start monitoring or analyzing user activity under ambiguous conditions, increasing privacy and consent risk.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The skill hard-codes Chinese labels for categories and uses Chinese throughout user-facing CLI output, with additional forced locale formatting via `toLocaleString('zh-CN')` and `toLocaleDateString('zh-CN')`. This imposes a specific language/locale on all users without opt-in or a documented regional justification, which matches the language/locale policy violation criteria.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The skill hardcodes Chinese category names for all user-facing labels, and the rest of the CLI also emits Chinese text. This imposes a specific language/locale on all users without offering a choice or documenting a justified region-specific constraint, which matches the language/locale policy violation criteria.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The code formats timestamps using toLocaleString('zh-CN'), which forces a Chinese locale regardless of user preference or environment. Because no opt-in or documented locale restriction is provided, this is a natural-language locale policy issue.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
The help text and many user-facing console messages throughout the CLI are written in Chinese, making the interface language fixed rather than user-selectable. This is a language policy concern because the skill does not offer users a choice or state that it is intentionally limited to a Chinese-language audience.

Natural-Language Policy Violations

Low
Confidence
80% confidence
Finding
The manifest mixes Chinese and English trigger phrases without declaring locale scope or how user language preference is determined. This can cause accidental matching across multilingual environments and make activation behavior less predictable, which modestly increases the chance of unintended skill use.

Static analysis

No suspicious patterns detected.