Back to skill

Security audit

temporal-cortex-datetime

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed offline datetime helper, with the main caution being that it installs a third-party MCP binary during setup.

Install this only if you are comfortable running a third-party MCP binary. Prefer the pinned package path, verify the published checksums before first use, avoid running installation with elevated privileges, and use the documented Docker network isolation when you want stronger containment.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:52
Finding

Installation Executes a Remotely Retrieved, Externally Maintained Binary

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 52-53
Vulnerability Type: Remote payload retrieval through an npm lifecycle script and third-party supply chain
Risk Level: High

text
1. `npx` resolves `@temporal-cortex/cortex-mcp` from the npm registry (one-time, cached locally after first download)
2. The postinstall script downloads the platform-specific binary from the [GitHub Release](https://github.com/temporal-cortex/mcp/releases/tag/mcp-v0.9.1) and verifies its SHA256 checksum against the embedded `checksums.json` — **installation halts on mismatch**

The associated package declaration appears at SKILL.md, lines 17-20:

yaml
install:
  - kind: node
    package: "@temporal-cortex/cortex-mcp@0.9.1"
    bins: [cortex-mcp]

An alternative installation method at SKILL.md, line 95 also builds from a remote, unpinned Git repository reference:

bash
docker build -t cortex-mcp https://github.com/temporal-cortex/mcp.git

Technical Analysis

The audited project does not contain the MCP server implementation or the installer responsible for retrieving its executable. Installation resolves an npm package and permits its postinstall lifecycle script to download a platform-specific binary from GitHub. Consequently, the code ultimately executed is outside the reviewed project and cannot be validated from the supplied files.

Pinning the npm package to version 0.9.1 reduces accidental version drift but does not eliminate supply-chain risk. The documented embedded checksums.json check establishes artifact integrity only relative to a checksum delivered through the same package or release process. If an attacker compromises the relevant npm publisher, release workflow, repository, or both the binary and its expected checksum, the check may still succeed.

The suggested independent SHA256SUMS.txt verification provides useful defense in depth, but the checksum is also retrie ...[truncated 2755 chars]

Remediation
View remediation

Remediation Suggestions

  1. Vendor the reviewed MCP source or reviewed platform binaries into a controlled release process so that the executable being run is directly associated with the audited Skill version.
  2. Avoid automatic network retrieval from npm lifecycle scripts. Install dependencies with lifecycle scripts disabled where feasible, then retrieve and verify the required executable through an explicit, separately reviewed process.
  3. Publish cryptographically signed checksums or provenance attestations and verify them with a trusted public key distributed independently from npm and GitHub release artifacts.
  4. Pin the Docker build to an immutable Git commit and, where possible, use a base image and resulting image identified by cryptographic digests rather than mutable tags or repository tips.
  5. Require reproducible builds and compare locally produced binaries with published artifacts.
  6. Run installation as an unprivileged user in an isolated environment with access limited to required directories. Do not use sudo for npm installation.
  7. Enforce runtime containment using a read-only filesystem, no host volume mounts, dropped Linux capabilities, a non-root container user, resource limits, and --network=none.
  8. Document the exact expected binary hashes for every supported platform in an immutable, reviewed Skill release, while still retaining signature verification.
  9. Audit the external Rust source, npm installer, lifecycle scripts, release workflow, and Dockerfile before approving the dependency, because those components were absent from this audit artifact.
Vulnerability Patterns
  • 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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (1)

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.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.