Back to skill

Security audit

苹果智能日程提醒

Security checks for vulnerabilities and agentic risk

Overview

This macOS scheduling skill is mostly purpose-aligned, but it needs Review because its Calendar/Reminders automation scripts handle user-supplied text unsafely and can read or modify sensitive synced data with loose scoping.

Install only if you are comfortable granting the invoking macOS app access to read and modify Calendar and Reminders data that may sync through iCloud. Review or fix the AppleScript argument handling before using untrusted schedule text, avoid ALL-calendar searches unless necessary, verify calendar/list names instead of relying on fallbacks, and do not install the optional remindctl tap without checking its source and version.

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

T09 · Insecure Skill Coding Practices

Error
Location
scripts/create_event.sh:39
Finding

AppleScript Injection Through Incomplete Escaping of Untrusted Arguments

Content
View full analysis
&1 on run set eventTitle to "$T_E" set calName to "$C_E" set locStr to "$L_E" set notesStr to "$N_E" ``` `scripts/create_reminder.sh:49-54`: ```bash esc() { printf '%s' "$1" | sed 's/"/\\"/g'; } T_E=$(esc "$TITLE"); L_E=$(esc "$LIST") /usr/bin/osascript <&1 on run set t to "$T_E" set lName to "$L_E" ``` `scripts/find_event.sh:40-43`: ```bash esc() { printf '%s' "$1" | sed 's/"/\\"/g'; } C_E=$(esc "$CAL"); K_E=$(esc "$KW") /usr/bin/osascript <&1 on run set calName to "$C_E" set kw to "$K_E" ``` `scripts/update_event.sh:60-71`: ```bash esc() { local s="${1//\"/\\\"}" out="" line while IFS= read -r line; do [ -n "$out" ] && out+='" & linefeed & "' out+="$line" done <<< "$s" printf '%s' "$out" } K_E=$(esc "$KEY"); T_E=$(esc "$TITLE"); L_E=$(esc "$LOC"); N_E=$(esc "$NOTES") /usr/bin/osascript <&1 on run set keyStr to "$K_E" set titleStr to "$T_E" set locStr to "$L_E" set notesStr to "$N_E" ``` ### Technical Analysis The scripts generate AppleScript source through unquoted heredocs and interpolate values derived from command-line arguments directly into AppleScript string literals. These arguments can include event titles, notes, locations, calendar names, reminder-list names, search keywords, and event identifiers. The escaping functions only add a backslash b ...[truncated 2272 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:142
Finding

Unpinned Optional Dependency Installed from a Mutable Third-Party Homebrew Tap

Content
View full analysis
/dev/null 2>&1; then remindctl add --title "$TITLE" --list "$LIST" --due "$DUE_RC" 2>&1 fi ``` Consequently, security depends on both the ongoing integrity of the external tap and the executable resolved from the user’s `PATH`. No malicious behavior by the current dependency is established by the audited files; the finding concerns the mutable, unverified installation and execution trust path. ### Attack Path 1. A user follows the Skill documentation and runs the provided Homebrew installation command. 2. Homebrew retrieves the current formula and artifacts from the external tap and its referenced sources. 3. If the tap, maintainer account, formula, or upstream artifact is compromised or changed maliciously, attacker-controlled installation logic or binaries are installed. 4. The Skill detects `remindctl` through `command -v`. 5. Reminder operations execute that binary with user-supplied reminder information and the privileges of the invoking user. ### Impact Assessment A compromised dependency or installation formula could execute commands with the installing use ...[truncated 691 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (19)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

This version of the mismatch is more security-relevant because the skill presents itself as a creator of events/reminders while also instructing broad search across all calendars and exporting event metadata for deduplication and updates. That expands access from user-requested creation into read/query access over potentially sensitive personal, shared, or subscribed calendars, which can expose more data than users expect.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

This version of the mismatch is more security-relevant because the skill presents itself as a creator of events/reminders while also instructing broad search across all calendars and exporting event metadata for deduplication and updates. That expands access from user-requested creation into read/query access over potentially sensitive personal, shared, or subscribed calendars, which can expose more data than users expect.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This version of the mismatch is more security-relevant because the skill presents itself as a creator of events/reminders while also instructing broad search across all calendars and exporting event metadata for deduplication and updates. That expands access from user-requested creation into read/query access over potentially sensitive personal, shared, or subscribed calendars, which can expose more data than users expect.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This version of the mismatch is more security-relevant because the skill presents itself as a creator of events/reminders while also instructing broad search across all calendars and exporting event metadata for deduplication and updates. That expands access from user-requested creation into read/query access over potentially sensitive personal, shared, or subscribed calendars, which can expose more data than users expect.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The changelog explicitly tells users to click the macOS authorization prompt ('点「好」即可') without explaining what permissions are being granted or the security implications. In a skill that automates Calendar and Reminders via AppleScript, normalizing blind approval can cause users to grant broad automation access they do not understand, increasing the chance of privacy-impacting misuse if the skill or its execution environment is compromised.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger language is extremely broad and says the skill must always be used for common scheduling phrases. In an agent ecosystem, overbroad mandatory invocation increases the chance the skill will be activated on ambiguous requests and gain Calendar/Reminders write access in situations where a lighter or read-only workflow would have been sufficient.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The documentation strongly nudges users to approve macOS Automation prompts ('click OK') without an equally prominent warning that doing so grants the calling terminal/app the ability to modify Calendar and Reminders content. This can normalize consent and reduce user scrutiny around a sensitive permission that affects personal data integrity and privacy.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill states that ticket/order numbers should not be recorded for privacy reasons, but later examples instruct storing a hotel booking number in event notes. This inconsistency can lead to unnecessary storage of sensitive reservation identifiers inside Calendar data that syncs across devices and may be visible in notifications or shared contexts.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The documentation tells the agent to persist user reminder preferences by editing local config.json, extending behavior beyond the immediate requested calendar action into durable state changes. Persistent preference writes can surprise users, create cross-session side effects, and potentially store sensitive behavioral data without clear consent boundaries.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Hard-coding the timezone to Asia/Shanghai can cause calendar events and reminders to be created at incorrect times if the user is in another locale or traveling. In a scheduling skill handling flights, court dates, meetings, and deadlines, silent timezone misinterpretation can lead to missed departures, missed hearings, or missed filing deadlines.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

If the requested calendar name is not found, the script silently falls back to the first calendar and still writes the event there. This can cause data integrity and privacy problems by placing sensitive appointments into the wrong calendar, potentially exposing them through unintended sharing rules or organizational accounts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script enumerates calendar events and returns sensitive metadata including title, location, and description/notes, which can contain private travel, medical, legal, or business information. In this skill’s context, those fields are especially sensitive, and the code has no built-in minimization, consent prompt, or restriction to only the specific event data needed for deduplication, so it can over-collect and expose personal data.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file’s natural-language interface is entirely in Chinese, including the purpose, usage, and return-value documentation, with no indication that the user can choose another language or that the skill is intentionally region-specific. This can violate a language/locale policy that requires user opt-in or documented justification for locale constraints.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

This manifest-style JSON includes a natural-language description stating the skill only runs on macOS and syncs via iCloud, but it does not clearly describe the exact context in which these constraints apply or any exclusion conditions beyond unsupported platforms. For manifest/config files, vague operational descriptions without explicit scope can create ambiguity about when the skill is intended to be used.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The script directly creates Calendar events and relies on iCloud synchronization, but provides no explicit user-facing confirmation or warning that it will modify the user's calendar data across devices. In this skill's context, writing to Calendar is the intended function, so the issue is not covert code execution, but it still creates a consent and transparency risk if invoked from loosely phrased user requests or automated agent flows.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The script performs a state-changing write to the user's Reminders data, which is typically iCloud-synced, without any runtime disclosure or confirmation at the point of execution. In an agent setting, this can cause unintended persistence across the user's Apple devices if the skill is triggered on ambiguous or attacker-influenced input.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The osascript fallback also creates a persistent reminder in the user's Reminders app without a pre-action warning or confirmation, and silently falls back to the default list if the requested list is missing. In an agent workflow, that increases the chance of unauthorized or surprising writes to synced personal data, especially because the fallback path may be less visible to the user than the primary tool.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The natural-language comment on L3 is written only in Chinese and provides no indication that language choice is optional. Per the policy, forcing a specific language or locale without user opt-in is a natural-language policy violation unless the constraint is justified or explicitly optional.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script’s user-facing comments and echo output are entirely in Chinese, including operational instructions such as granting permissions. This imposes a specific language/locale on all users without offering an alternative or documenting that the skill is intentionally limited to Chinese-speaking users.

Content

No source excerpt is available for this finding.