Back to skill

Security audit

ical

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed calendar CLI helper, but it normalizes forceful calendar changes and includes agent-skill installation behavior that users should review before installing.

Review this carefully before installing. Use a pinned, trusted release instead of `@latest` where possible, grant Calendar permissions only if you want the tool to read and modify your calendars, avoid allowing agents to run delete/update/import commands with `--force` unless you explicitly approved the exact target, and treat `ical skills install` as a change to your local agent behavior because it writes into agent skill directories.

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:14
Finding
Unpinned Third-Party CLI Installation## Vulnerability Details **File Location**: `SKILL.md`, lines 14-18 **Vulnerability Type**: Unpinned and mutable third-party dependency installation **Risk Level**: Medium ```bash ## Installation ```bash go install github.com/BRO3886/ical/cmd/ical@latest ``` ``` ### Technical Analysis The installation command uses the mutable Go module selector `@latest`. Consequently, the source code downloaded, compiled, and installed at execution time may differ from the version that was reviewed during this audit. The project does not specify an immutable version or commit, verify a checksum or signature, or require inspection of the resolved dependency before execution. Although no malicious behavior was identified in the audited documentation itself, this installation approach creates a supply-chain trust boundary. A compromise of the upstream repository, its release process, the maintainer account, or the dependency-resolution path could cause users to compile and install attacker-controlled code. ### Attack Path 1. An attacker compromises the upstream repository, release workflow, maintainer credentials, or another relevant supply-chain component. 2. The attacker publishes a malicious version that Go resolves through the `@latest` selector. 3. A user or AI agent follows the documented installation command. 4. Go retrieves and compiles the mutable upstream source. 5. The resulting binary is installed and later executed with the invoking user's permissions. 6. The malicious binary can abuse those permissions and any Calendar access granted to the application. ### Impact Assessment Successful exploitation could result in arbitrary code execution under the invoking user's account. The malicious binary could access or modify files available to that user, manipulate Calendar data after receiving the required macOS permissions, or perform other actions within the user's privilege boundary. The documentation does not request elevated administrative privileges, so pr ...[truncated 170 chars]
Remediation
## Remediation Suggestions 1. Replace `@latest` with a reviewed, immutable semantic version: ```bash go install github.com/BRO3886/ical/cmd/ical@vX.Y.Z ``` 2. For stronger reproducibility, document the exact audited commit and provide a controlled source-build procedure. 3. Publish expected source or release-artifact checksums and require integrity verification before installation. 4. Document how maintainers authenticate releases, preferably using signed tags or signed release artifacts. 5. Review the selected release and its transitive dependencies before updating the pinned version. 6. Replace the placeholder clone URL in the source-build instructions with the exact repository URL and require checkout of a pinned tag or commit before building.
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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 (13)

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill documents `ical calendars delete` as deleting a calendar and all its events, but it does so without an adjacent, explicit warning about irreversible data loss. In an agent context, this increases the chance that a model or user invokes a highly destructive command without appreciating its scope, leading to bulk deletion of calendar data.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
ical list --from today --to "next week"   # Shows #1, #2, #3...
ical show 2                                # Show details for row #2
ical update 3 --title "New title"          # Update row #3
ical delete 1 --force                      # Delete row #1 (skip confirmation)
ical delete 1                              # Delete row #1 (prompts for confirmation)
```
Confidence
87% confidence
Finding
The documentation explicitly instructs agents and scripts to use `ical delete ... --force` to skip confirmation, enabling autonomous deletion of calendar events without a user approval checkpoint. Combined with row-number targeting that depends on a cached previous listing, this can cause unintended or incorrect event deletion in automated workflows.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
| Flag      | Short | Description              | Default |
| --------- | ----- | ------------------------ | ------- |
| `--force` | `-f`  | Skip confirmation prompt | false   |

Aliases: `rm`, `remove`
Confidence
85% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
| Flag      | Short | Description              | Default |
| --------- | ----- | ------------------------ | ------- |
| `--force` | `-f`  | Skip confirmation prompt | false   |

Aliases: `rm`, `remove`
Confidence
85% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
| Flag      | Short | Description              | Default |
| --------- | ----- | ------------------------ | ------- |
| `--force` | `-f`  | Skip confirmation prompt | false   |

Aliases: `rm`, `remove`
Confidence
85% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
Event selection: same as `show` (no args = picker, number = row, string = event ID, `--id` = exact).

> `--id` and a positional argument are mutually exclusive — passing both is an error.
> `update` has **no** `--force` flag and requires no confirmation — changes apply immediately.

Aliases: `edit`
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
Documenting that event updates apply immediately with no confirmation increases the chance of unintended destructive modification, especially for automated agents or scripts operating on ambiguous selections. In this skill context, calendar data may include important scheduling, recurrence, and notification settings, so silent mistakes can cause real operational disruption.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
Delete an event. Asks for confirmation by default.

```bash
ical delete 1 --force                              # Row number, skip confirmation
ical rm 2 --force                                  # Alias
ical delete                                        # Interactive picker
ical delete 3 --span future                        # Delete this and future occurrences
Confidence
85% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
Event selection: same as `show` (no args = picker, number = row, string = event ID, `--id` = exact).

> `--id` and a positional argument are mutually exclusive — passing both is an error.
> `update` does **not** have a `--force` flag — it applies changes immediately without confirmation.

Aliases: `rm`, `remove`
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Description-Behavior Mismatch

Medium
Confidence
96% confidence
Finding
The documentation introduces AI-agent skill installation and management behavior that is outside the stated calendar-management scope. That scope expansion matters because it enables writes into agent skill directories, increasing the attack surface and creating a path for persistence or unauthorized modification of agent behavior if users invoke those commands.

Context-Inappropriate Capability

Medium
Confidence
97% confidence
Finding
Agent skill installation/uninstallation is unjustified within a calendar-management skill and gives the tool the ability to modify other agents' local skill directories. In a security-sensitive environment, that creates an unnecessary capability for cross-tool persistence, privilege overreach, or supply-chain style abuse if the binary or distributed skill content is compromised.

Missing User Warnings

Low
Confidence
87% confidence
Finding
Writing into agent skill directories without an explicit warning obscures the user impact of the action and can lead to unintentional modification of other tooling. Although this is not direct code execution by itself, it changes agent behavior surfaces and can create persistence or trust-boundary confusion.

Description-Behavior Mismatch

Low
Confidence
84% confidence
Finding
The manifest frames the skill as a terminal interface for Apple Calendar automation, but the command reference says `ical version` may check for newer versions and notes a background update check controlled by `ICAL_NO_UPDATE_CHECK`. Update-check functionality is not part of the described calendar-management purpose and represents additional behavior outside that scope.

Static analysis

No suspicious patterns detected.