Back to skill

Security audit

Aport Handoff

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its handoff purpose, but it tells agents to follow mutable remote instructions and recommends unpinned external execution, so it should receive human review before installation.

Install only after reviewing the remote-instruction and setup paths. Prefer the web setup flow or a pinned, verified CLI version; do not let an agent blindly follow https://aport.id/skill as executable instructions. Before saving or posting handoffs, redact secrets and sensitive project details, confirm the recipient and channel are approved, and store local copies only where retention is acceptable.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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 (2)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:29
Finding
Untrusted Remote Instructions Are Retrieved and Followed<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 29-33 **Vulnerability Type**: Remote instruction injection **Risk Level**: High ### Vulnerable Code ```markdown If you don't have a passport: - **Web:** https://aport.id - **CLI:** `npx aport-id` - **Agent skill:** Read https://aport.id/skill and follow the instructions ``` ### Technical Analysis The skill explicitly instructs an agent to retrieve content from `https://aport.id/skill` and follow its instructions. The remote document is not included in the audited artifact and can change independently after this skill has been reviewed or installed. Because the retrieved content is treated as authoritative instructions rather than untrusted external data, an operator who controls or compromises the remote endpoint could alter the agent's current goals, request access to sensitive information, invoke tools, or induce other actions not represented in the reviewed `SKILL.md`. This constitutes a trust-boundary violation: mutable third-party content is allowed to extend the skill's executable instruction set without integrity pinning, local validation, or explicit approval of each resulting action. ### Attack Path 1. A user or agent loads the `aport-handoff` skill. 2. The prerequisite check determines that no APort passport is available. 3. The agent follows the instruction to retrieve `https://aport.id/skill`. 4. The remote endpoint serves instructions that differ from those present when this package was audited, whether through intentional modification or compromise. 5. The agent treats the returned content as trusted instructions and follows it. 6. The remote instructions can attempt to redirect the session, request sensitive data, or induce tool and network operations under the agent's available permissions. ### Impact Assessment Successful exploitation could influence the current agent session and trigger actions within the privileges already granted to the agent. Depending on avail ...[truncated 300 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Remove the instruction to blindly “follow” content retrieved from a mutable remote endpoint. - Include all required operational instructions directly in the reviewed skill package. - If remote documentation must be consulted, explicitly classify it as untrusted reference material rather than executable instructions. - Define a fixed schema for any required remote data and reject responses containing commands or behavioral directives. - Require explicit user approval before performing actions suggested by external content. - Pin remotely consumed resources to an immutable, content-addressed version and verify a cryptographic digest or signature before use. - Document the precise network requests, data transmitted, permissions required, and expected response structure. ]]>

T08 · Insecure Dependencies

Error
Location
SKILL.md:32
Finding
Unpinned npm Package Is Executed Through npx<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, line 32; repeated at line 143 **Vulnerability Type**: Unsafe third-party dependency execution **Risk Level**: High ### Vulnerable Code ```markdown If you don't have a passport: - **Web:** https://aport.id - **CLI:** `npx aport-id` - **Agent skill:** Read https://aport.id/skill and follow the instructions ``` The same command is repeated in the links section: ```markdown - Create a passport: https://aport.id (web) or `npx aport-id` (CLI) or https://aport.id/skill (agent) ``` ### Technical Analysis The command `npx aport-id` can resolve, download, and execute a package from the configured npm registry. It does not specify an exact version, lockfile, integrity digest, or verified distribution source. Consequently, the code executed at invocation time may differ from the code that existed when this skill was audited. This exposes users to package takeover, registry compromise, malicious version publication, and configuration-based redirection to an untrusted registry. npm package execution can invoke package CLI code and may also involve lifecycle behavior, giving a compromised dependency code execution under the account that runs `npx`. ### Attack Path 1. A user follows the passport prerequisite in `SKILL.md`. 2. The user or agent runs `npx aport-id`. 3. `npx` resolves the package through the configured npm registry without an exact audited version or integrity constraint. 4. An attacker publishes a compromised release, takes control of the package, compromises the registry path, or influences registry configuration. 5. `npx` downloads and executes the attacker-controlled package. 6. The package runs with the permissions and environment of the invoking user or agent. ### Impact Assessment A compromised package could execute arbitrary code with the invoking process's existing privileges. Potential effects include reading or modifying accessible files, stealing environment variables or authe ...[truncated 323 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Replace `npx aport-id` with an exact, reviewed version such as `npx --yes aport-id@<audited-version>`. - Verify the package's authoritative publisher, source repository, and release provenance before recommending execution. - Prefer installation through a committed lockfile with npm integrity metadata. - Verify package signatures, provenance attestations, or a published cryptographic digest where supported. - Use a trusted, explicitly configured registry and prevent project or user configuration from silently redirecting package resolution. - Run the tool in a sandbox or least-privilege environment without unnecessary credentials, sensitive environment variables, or broad filesystem access. - Review the resolved package and its dependency tree before updating the pinned version. - Avoid automatic execution when a browser-based or locally audited implementation can provide the same functionality. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (4)

Rp1

Medium
Category
MCP Rug Pull
Confidence
87% confidence
Finding
The skill tells users to run `npx aport-id` without pinning a specific package version or integrity source. Because `npx` fetches the latest published package by default, a compromised maintainer account, malicious update, or dependency hijack could cause arbitrary code execution on the user's machine or agent host.

Missing User Warnings

Medium
Confidence
84% confidence
Finding
The skill encourages delivering handoff content through GitHub, Slack, Discord, or messaging tools without any general warning about confidentiality, audience scope, retention, or third-party exposure. Since the handoff can include project status, evidence strings, decision IDs, and contextual notes, posting it externally or broadly could leak sensitive operational or business information.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The skill mandates saving a local copy of the handoff document but does not warn that the document may contain sensitive project details, internal identifiers, recipient information, or decision evidence. This can create unnecessary data at rest on local disks or shared workspaces, increasing the chance of accidental disclosure, persistence beyond need, or pickup by other tools and agents.

Rp1

Medium
Category
MCP Rug Pull
Confidence
87% confidence
Finding
This repeats the same unsafe instruction to execute `npx aport-id` without a pinned version. Unpinned `npx` execution allows remote code retrieval at runtime, which increases supply-chain risk and could lead to arbitrary code execution if the package or its dependency chain is compromised.

Static analysis

No suspicious patterns detected.