Back to skill

Security audit

Aport Standup

Security checks for vulnerabilities and agentic risk

Overview

The skill’s main standup purpose is coherent, but it asks agents to follow mutable remote instructions and recommends unpinned local package execution during setup.

Review the setup path before installing. Prefer the web passport flow, avoid running unpinned `npx` commands unless you trust the package source, and do not let the agent follow remote instructions from the APort site as authoritative skill behavior. Treat generated standups as potentially sensitive because they can reveal your work history and policy outcomes.

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:27
Finding
Unaudited Remote Instructions Can Hijack Agent Behavior<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 27-31 **Vulnerability Type**: `T01: Skill Instruction Hijacking` **Risk Level**: High ### Vulnerable Code ```markdown ## Prerequisites You must have an APort passport. If you don't have one: - **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 the agent to retrieve content from `https://aport.id/skill` and follow its instructions. Those remote instructions are not included in the reviewed package and are not pinned to a version, content digest, or cryptographically authenticated artifact. Consequently, the effective behavior of the Skill can change after review without any corresponding modification to `SKILL.md`. Treating externally hosted text as executable agent instructions creates an instruction-hijacking boundary: whoever controls the remote endpoint, its hosting account, or a compromised delivery path can supply new commands to the agent. The network request used to retrieve APort decision history is consistent with the declared standup functionality. In contrast, delegating behavioral control to mutable remote instructions exceeds what is necessary; local onboarding instructions or ordinary reference documentation would be sufficient. ### Attack Path 1. A user invokes the Skill without an existing APort passport. 2. The Skill directs the agent to open `https://aport.id/skill`. 3. The remote page is modified by its operator or compromised by an attacker. 4. The page supplies instructions that request additional tool calls, sensitive files, environment variables, credentials, or unrelated network actions. 5. Because the local Skill says to “follow the instructions,” the agent may treat the remote content as trusted Skill instructions. 6. The agent performs actions that were not present in, or assessable from, the reviewed package. ### Impact As ...[truncated 743 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the instruction to read and follow remotely hosted agent instructions. 2. Include all required onboarding steps directly in the reviewed `SKILL.md`. 3. If external documentation remains necessary, clearly label it as untrusted reference material rather than executable instructions. 4. Instruct the agent not to follow commands found in retrieved web content. 5. Require explicit, informed user approval before performing any onboarding action that accesses local data, invokes tools, or sends information over the network. 6. If machine-readable remote configuration is unavoidable, define a restrictive schema, reject instruction-like free text, pin an expected version or content digest, and verify a trusted digital signature before processing it. 7. Ensure remote content cannot expand the Skill’s permissions or authorize access beyond the minimum needed to create a passport and retrieve the user’s decision history. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:30
Finding
Unpinned npm Package Execution Creates a Supply-Chain Risk<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, line 30 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Vulnerable Code ```markdown - **CLI:** `npx aport-id` ``` The same unpinned command is repeated at line 139: ```markdown - Create a passport: https://aport.id (web) or `npx aport-id` (CLI) or https://aport.id/skill (agent) ``` ### Technical Analysis The Skill recommends executing `npx aport-id` without specifying an exact package version, package integrity value, trusted registry, or verified publisher identity. Depending on the local npm and `npx` configuration, this command can retrieve the currently resolved package from a package registry and execute its code immediately. Because package resolution is mutable, the code executed by a future invocation may differ from the code that existed when this Skill was audited. A compromised release, publisher-account takeover, ownership transfer, registry misconfiguration, or unsafe registry override could therefore turn the prerequisite command into an arbitrary local code-execution channel. The CLI is only one of several documented passport-creation methods and is not required for generating a standup after an identity has been configured. Recommending unrestricted package retrieval and execution therefore introduces avoidable privileges beyond the minimum needed for the core reporting function. ### Attack Path 1. A user follows the prerequisite instructions and runs `npx aport-id`. 2. `npx` resolves the unpinned package through the user’s configured npm registry. 3. An attacker has compromised the package, its publisher account, a newly published version, or the configured registry. 4. `npx` downloads and executes the attacker-controlled package code. 5. The package runs with the operating-system privileges and environment of the invoking user. 6. Malicious code accesses available local resources or performs further network and system actions. ### Impact ...[truncated 667 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace the unversioned command with an exact, reviewed package version, for example `npx --yes aport-id@<audited-version>`. 2. Document the expected package registry, publisher identity, package provenance, and release checksum. 3. Prefer installing through a lockfile-controlled project dependency and verify the package integrity recorded in the lockfile. 4. Disable lifecycle scripts during installation where they are not required, and review the package’s executable entry point before use. 5. Avoid silently running the command from the Skill; present it to the user and require explicit confirmation. 6. Prefer a non-executable browser-based onboarding process when practical. 7. Periodically re-audit the pinned version before updating it, rather than automatically resolving the newest available release. ]]>
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (4)

Vague Triggers

Medium
Confidence
90% confidence
Finding
The 'When to use this skill' section includes phrases like 'what did I do yesterday?' and 'what have you been doing?', which are common everyday utterances and not narrowly scoped to this specific skill. Because the file does not provide explicit trigger constraints or negative examples, these examples could cause unintended invocation by a generic agent router.

Rp1

Medium
Category
MCP Rug Pull
Confidence
86% confidence
Finding
The skill instructs users to run `npx aport-id` without pinning a specific package version, which can cause execution of whatever version is currently published. That creates a supply-chain risk: a compromised maintainer account, dependency hijack, or malicious new release could lead to arbitrary code execution on the user's machine.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The skill directs the agent to fetch decision history associated with `APORT_AGENT_ID` without discussing consent, minimization, or the sensitivity of audit/history data. If triggered in the wrong context, it could expose behavioral history, timestamps, policy outcomes, and identifiers to a user who did not explicitly request that data or to an unintended audience in a shared/team setting.

Rp1

Medium
Category
MCP Rug Pull
Confidence
86% confidence
Finding
Repeating the unpinned `npx aport-id` command in the links section reinforces the same unsafe installation pattern and increases the chance users will execute an unreviewed latest version. Because `npx` fetches and runs code, the exposure is direct code execution rather than a purely informational issue.

Static analysis

No suspicious patterns detected.