Back to skill

Security audit

calendar-reminder-free

Security checks for vulnerabilities and agentic risk

Overview

The skill describes a useful calendar reminder, but it registers a persistent daily task that runs an unbundled Python file that was not included for review.

Review before installing. Only use this if you can inspect and trust the missing calendar_reminder.py file at the scheduled path, understand that Outlook calendar details may be sent to Feishu, and are comfortable with a daily persistent task running in the main agent session. Prefer a version that bundles the script, pins or verifies its hash, uses a least-privileged session, and documents how to remove the cron job.

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:113
Finding

Persistent Scheduled Execution of Unbundled and Unverified Code

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 113-121
Vulnerability Type: Persistent scheduled task executing code outside the audited package
Risk Level: High

Vulnerable Code

bash
skill-platform cron add \
  --name "calendar-daily-scan" \
  --cron "0 22 * * *" \
  --tz "Asia/Shanghai" \
  --session main \
  --system-event "CALENDAR_SCAN: 请立即运行 python3 ~/.skill-platform/workspace/skills/calendar-reminder/calendar_reminder.py 并等待完成" \
  --description "每晚22:00扫描明天日历并设置提醒"

Technical Analysis

The installation instructions register a persistent daily cron task through skill-platform. At 22:00 each day, the task injects a system event into the main Agent session instructing it to execute:

text
python3 ~/.skill-platform/workspace/skills/calendar-reminder/calendar_reminder.py

The audited project contains only SKILL.md; the referenced calendar_reminder.py implementation is not included. Consequently, the scheduled payload cannot be reviewed, its integrity is not pinned or verified, and the behavior claimed by the documentation cannot be validated from the supplied artifact.

This creates a persistent execution channel whose effective payload is determined by the contents of a mutable file outside the reviewed package. If that file is created or replaced after review, the cron task may execute the substituted code in future sessions.

The documented manual verification does not mitigate this issue because it only runs echo "implementation_ready" and neither checks the referenced script nor verifies its integrity.

Attack Path

  1. A user follows the installation instructions and registers calendar-daily-scan.
  2. The cron registration persists beyond the current Skill invocation and targets the main Agent session.
  3. An attacker or another compromised component with write access to the referenced workspace path creates or replaces calendar_reminder.py.

...[truncated 941 chars]

Remediation
View remediation

Remediation Suggestions

  1. Include calendar_reminder.py in the Skill package so its complete implementation can be audited before execution.
  2. Execute a package-relative, canonical path rather than a mutable external workspace location.
  3. Verify the script with a cryptographic hash or signed manifest immediately before scheduled execution, and fail closed on mismatch.
  4. Require explicit, informed user confirmation before creating the persistent cron task.
  5. Display the exact schedule, session, command, target file, required permissions, and persistence implications before registration.
  6. Use a dedicated least-privileged session instead of --session main.
  7. Restrict write permissions on the installed script and its parent directories.
  8. Replace the placeholder validation command with checks that confirm the script exists, resolves to the expected canonical path, matches the approved integrity value, and can perform a safe dry run.
  9. Provide and document an uninstall command that removes the task, such as the appropriate skill-platform cron deletion operation.
  10. Avoid instruction-based system events where possible; configure the scheduler to invoke a fixed, verified executable directly with a constrained environment.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill handles calendar contents and pushes meeting details to Feishu, but the description does not clearly warn users that potentially sensitive calendar metadata will be transmitted to a third-party messaging platform. Users may unknowingly expose private schedules, meeting subjects, organizers, or locations to external systems or chat logs.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The skill hardcodes operation at Asia/Shanghai timezone and bases reminders on that locale, but the natural-language documentation does not offer users a timezone choice or clearly justify this as a region-specific tool. This can violate language/locale policy expectations when a skill imposes a locale-specific behavior without explicit opt-in.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 160)May include surrounding context.

md
### 3. zoneinfo 模块导入失败

**原因**: Python 版本低于 3.9 或 Linux 未安装 tzdata.
**处理**: 升级 Python 到 3.9+;在 Debian/Ubuntu 执行 `sudo apt install tzdata`;macOS 通常已内置.
### 4. cron 任务未触发

**原因**: skill-platform 服务未运行或时区配置错误.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The limitations and upgrade sections say the free version is restricted to basic reminder strategies and reserve advanced functionality for the paid version. However, the '核心痛点解决' table claims the skill provides '自动识别冲突并提醒' and '自动更新日程', which directly contradicts the earlier stated limitations and paid-only feature boundary.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill is positioned as a narrowly scoped Outlook-to-Feishu reminder, but later advertises broad file-processing and command-execution abilities. This scope drift can mislead users and agent runtimes into granting or exercising more powerful capabilities than necessary, increasing the risk of unintended file access or command execution under the guise of a simple reminder tool.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.