Back to skill

Security audit

Aport Status

Security checks for vulnerabilities and agentic risk

Overview

This status skill is coherent, but it asks agents to follow mutable remote setup instructions and treat external passport data as authority over their behavior.

Review this skill carefully before installing. It is mainly a status viewer, but agents should not treat APort responses or the remote setup page as instructions that override local policy, actual tool permissions, user instructions, or safety rules. Prefer the web setup path or a verified pinned CLI version, and avoid displaying owner emails or internal identifiers unless the user explicitly asks and understands the exposure.

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 (3)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:17
Finding
External Passport Service Is Treated as an Authority Over Agent Behavior## Vulnerability Details **File Location**: `SKILL.md`, lines 17–25, 81–86, 104–109, and 128–143 **Vulnerability Type**: External instruction and authorization hijacking **Risk Level**: High **Vulnerable code snippets**: ```markdown Shows your passport, what you're allowed to do, what your deliverable contract requires, and the state of any tasks you've started. Run this any time you want to understand your own standing. ## When to use this skill - At the start of a session to orient yourself - When a user asks "what can you do?" or "what are your limits?" - Before attempting an action to check you have the capability ``` ```markdown DELIVERABLE CONTRACT (what I must produce) Written summary required (min. 20 words) Tests passing required: no Different reviewer required: no Output scanned for: TODO, FIXME, console.log ``` ```markdown **If passport is SUSPENDED:** ``` Your passport is suspended. You cannot complete tasks or use restricted capabilities. Contact APort at https://aport.io ``` ``` ```markdown ## Step 5 — Answer capability questions If a user asks "can you do X?", use the status to answer directly: ``` User: Can you merge this PR? You: [check capabilities list for repo.merge] Yes — repo.merge is in my passport Before I can call it done, I need: [deliverable contract requirements] User: Can you send an email? You: [check capabilities list for messaging.send] No — messaging.send is not in my passport To add it, create a new passport at https://aport.id ``` ``` ### Technical Analysis The skill instructs the agent to use mutable data obtained from an external passport service as the authority for what the agent may do, what it must produce, and whether it may complete a task. This goes beyond displaying status information: it allows externally supplied capability lists, suspension states, and deliverable contracts to alter ...[truncated 1478 chars]
Remediation
## Remediation Suggestions - Treat all passport and decision API responses as untrusted, display-only data. - Explicitly state that remote passport fields cannot override system, developer, or user instructions, actual tool permissions, local policy, or security controls. - Do not use remote capability lists to authorize actions or remote suspension states to determine whether a task may be completed. - Rename behavioral labels such as “what I must produce” to clarify that they are informational claims made by the service. - Validate responses against a strict schema, enforce field length and type limits, and render values as inert quoted data. - Make authorization decisions through trusted local controls rather than through mutable content returned by a third-party status API. - Clearly distinguish verified local capabilities from externally asserted passport metadata in all displayed output.

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:36
Finding
Mutable Remote Instructions Are Imported and Followed## Vulnerability Details **File Location**: `SKILL.md`, line 36 **Vulnerability Type**: Dynamic external instruction loading **Risk Level**: High **Vulnerable code snippet**: ```markdown - **Agent skill:** Read https://aport.id/skill and follow the instructions ``` ### Technical Analysis The skill directs the agent to retrieve instructions from a remote URL and follow them. Those instructions are not included in the audited project and can be changed after this package has been reviewed. This creates a prompt-injection channel through which the effective behavior of the skill can be modified without changing `SKILL.md`. The remote content is instruction text rather than locally shipped executable code, so the best matching classification is skill instruction hijacking. The dangerous operation is not merely reading documentation; it is the explicit requirement to follow whatever instructions the mutable remote resource returns. ### Attack Path 1. The agent determines that it does not have a passport. 2. It follows the prerequisite guidance and requests `https://aport.id/skill`. 3. The remote site, its hosting account, DNS path, or content-delivery path is compromised or changed. 4. The response includes malicious instructions, such as requests to reveal data, invoke tools, alter task goals, or contact additional endpoints. 5. Because the local skill explicitly says to follow the remote instructions, the agent adopts the unaudited content as operational guidance. 6. The malicious instructions affect the current session and may cause unauthorized actions within the agent's existing tool permissions. ### Impact Assessment Exploitation can alter the agent's current-session objectives and safety posture. The attainable privilege is bounded by the tools and data already available to the agent, but within that boundary the remote content could attempt data disclosure, unauthorized network requests, unsafe commands, or aband ...[truncated 124 chars]
Remediation
## Remediation Suggestions - Remove the directive to “follow the instructions” from the remote page. - Bundle all required setup instructions inside the reviewed skill package. - If remote documentation must remain available, label it as untrusted reference material that must not supersede local instructions. - Do not execute commands, disclose information, or change agent behavior solely because a remote document requests it. - If immutable external content is unavoidable, pin a specific version and verify it using a cryptographic digest or authenticated signed manifest. - Apply strict trust-boundary language requiring the agent to ignore instructions embedded in fetched content.

T08 · Insecure Dependencies

Warning
Location
SKILL.md:35
Finding
Unpinned Third-Party Package Is Executed Through npx## Vulnerability Details **File Location**: `SKILL.md`, lines 35 and 157 **Vulnerability Type**: Unpinned dependency execution **Risk Level**: Medium **Vulnerable code snippets**: ```markdown - **CLI:** `npx aport-id` ``` ```markdown - Create a passport: https://aport.id (web) or `npx aport-id` (CLI) or https://aport.id/skill (agent) ``` ### Technical Analysis The documented `npx aport-id` command does not specify an exact package version, lockfile, source revision, or integrity value. Depending on the local npm configuration and cache state, `npx` may obtain the current package from a remote registry and execute it immediately. This makes the command dependent on mutable supply-chain state. A malicious package release, compromised publisher account, registry compromise, or package-name takeover could cause arbitrary package or lifecycle code to run under the privileges of the user invoking the command. ### Attack Path 1. A user or agent follows the skill's passport-creation prerequisite. 2. It runs `npx aport-id`. 3. `npx` resolves the unversioned package from the configured package registry. 4. An attacker has published a malicious release or compromised the package distribution channel. 5. The malicious package is downloaded and executed. 6. Its code runs with the invoking user's filesystem, environment, and network access. ### Impact Assessment A compromised dependency could execute arbitrary code with the privileges of the invoking account. Potential impact includes reading accessible files and environment variables, modifying project or user files, making outbound network requests, stealing credentials, and installing additional payloads. The exact scope depends on the user's operating-system permissions and execution environment.
Remediation
## Remediation Suggestions - Replace the unversioned command with an audited, exact package version. - Provide a lockfile or equivalent immutable dependency manifest. - Verify package integrity using a trusted checksum, registry integrity metadata, or signed provenance. - Document the expected package publisher, registry, and source repository so users can verify authenticity. - Review package lifecycle scripts and CLI entry points before recommending execution. - Prefer installing the pinned package in an isolated environment rather than downloading and executing mutable registry content in one step. - Consider providing a non-executable web-based registration workflow as the default option.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Rp1

Medium
Category
MCP Rug Pull
Confidence
87% confidence
Finding
The skill instructs users to run `npx aport-id` without pinning a specific package version. This creates a supply-chain risk because a future malicious or compromised package release could be executed automatically in the user's environment. In a skill intended for AI agents and assistants, that risk is elevated because users may follow setup steps with little scrutiny.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The skill directs the agent to fetch passport and decision data tied to an agent identifier and then display identity, ownership, capabilities, and recent decisions, but it provides no privacy warning, minimization guidance, or handling restrictions. This can expose sensitive operational metadata to users or logs, especially if the passport or decision endpoints return more information than expected or if agents surface owner email and internal status details by default.

Rp1

Medium
Category
MCP Rug Pull
Confidence
87% confidence
Finding
This is the same unpinned `npx aport-id` execution pattern repeated in the links section. Unpinned remote package execution can lead to arbitrary code execution if the package is updated maliciously, transferred, typo-squatted, or compromised after the skill is published.

Static analysis

No suspicious patterns detected.