Back to skill

Security audit

Dingtalk Calendar

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed DingTalk calendar helper, but users should be careful because it can change calendar data and relies on a globally installed third-party CLI.

Install only if you trust mcporter and the DingTalk MCP endpoints you configure. Use the skill with the minimum calendar, contact, and room-booking permissions needed, confirm event IDs before updates or deletions, and follow your organization's rules before looking up coworkers' details or free/busy status.

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:17
Finding
Unpinned Third-Party CLI Installed Globally<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:17-24` and `package.json:26-28` **Vulnerability Type**: Unpinned third-party dependency and unsafe global installation guidance **Risk Level**: Medium ### Vulnerable Code `SKILL.md:17-24`: ```bash npm install -g mcporter bun install -g mcporter ``` `package.json:26-28`: ```json "dependencies": { "mcporter": ">=0.7.0" } ``` ### Technical Analysis The skill instructs users to install the `mcporter` package globally without specifying an exact, reviewed version or verifying package integrity. The package manifest similarly permits any version equal to or newer than `0.7.0`. This configuration allows dependency resolution to select a future release that was not available during the audit. If the package publisher account, package registry, or upstream release process is compromised, a malicious accepted release could be installed. Depending on package-manager configuration, package lifecycle scripts may execute during installation. The installed CLI will also execute later with the permissions of the invoking user. Global installation increases exposure because the package becomes available across projects and sessions rather than remaining isolated to this skill. No lockfile, checksum, integrity value, or documented package provenance validation is present. ### Attack Path 1. An attacker compromises the upstream package, publisher account, or release pipeline for `mcporter`. 2. The attacker publishes a malicious version that satisfies the unrestricted `>=0.7.0` dependency range. 3. A user follows the skill instructions and runs `npm install -g mcporter`, or otherwise resolves dependencies from `package.json`. 4. The package manager downloads the compromised release. 5. Malicious lifecycle code may execute during installation, or malicious behavior executes when the globally installed CLI is invoked. 6. The payload operates with the invoking user's privileges and may access data available ...[truncated 921 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin `mcporter` to an exact reviewed version in `package.json`, for example: ```json "dependencies": { "mcporter": "0.7.0" } ``` 2. Update the installation instructions to use the same exact version: ```bash npm install --global mcporter@0.7.0 ``` 3. Prefer a project-local installation over a global installation and invoke the local binary through the package manager. 4. Commit a lockfile containing resolved package versions and integrity hashes. 5. Verify the package name, publisher, registry source, release signatures, and checksums before recommending a new version. 6. Review dependency changes before upgrades rather than automatically accepting all future releases. 7. Where compatible with the package, disable lifecycle scripts during installation and enable only those explicitly reviewed and required. 8. Document the trusted registry and official upstream repository so users can detect typosquatted or substituted packages. ]]>
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 (6)

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The changelog states the skill supports contact-directory user search and user detail lookup, which expands the documented capability beyond the declared calendar and meeting-room scope. In an enterprise messaging platform context, directory lookup can expose personal or organizational information and enable user enumeration if users or reviewers rely on the narrower manifest description.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill explicitly documents querying other users' busy status but provides no authorization, consent, or privacy guidance. In a calendar/contacts integration, this can enable privacy-invasive access patterns or normalization of checking coworkers' availability without validating that the caller is permitted to view that information.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill exposes deletion of calendar events as a simple command without any warning about destructive consequences, validation steps, or confirmation requirements. This increases the risk of accidental or unauthorized event deletion, which can disrupt meetings, remove records, and impact multiple attendees.

Vague Triggers

Medium
Confidence
88% confidence
Finding
The activation scope is ambiguous because the metadata exposes broad calendar-management capabilities but does not define clear boundaries for when the skill should engage versus when a general assistant should merely discuss scheduling. Given that the skill supports actions affecting calendars, free/busy visibility, contact lookup, and room booking, ambiguous activation can lead to unintended access attempts or unauthorized-looking operations in enterprise contexts.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The trigger phrases include common natural-language requests such as '创建日程' and '会议预订', which are broad enough to match ordinary user intent without clear scoping to this specific skill. In a skill that can create, update, delete calendar entries and book rooms, overly broad activation increases the chance of accidental invocation and unintended actions against a user's calendar or organizational resources.

Natural-Language Policy Violations

Low
Confidence
93% confidence
Finding
The natural-language entries in this file are entirely Chinese, which can constitute a language/locale policy issue when no user opt-in or justification is provided. The file does not indicate that the skill is region-specific or that alternate languages are available.

Static analysis

No suspicious patterns detected.