Back to skill

Security audit

PASM Agent Authoring Kit

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent developer-tool skill for building PASM agents, with disclosed local state and package installation risks.

Install in a virtual environment, consider pinning pasm-skills to a version you trust, and be aware that agents can save local state under ~/.pasm-agents. Review the PyPI package/source if you need stronger assurance because this skill artifact contains documentation only, not the package implementation.

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:56
Finding
Unpinned Third-Party Package Installation## Vulnerability Details **File Location**: `SKILL.md:56-57` **Vulnerability Type**: Unpinned package installation from an external package registry **Risk Level**: Medium **Vulnerable Code Snippet**: ```bash pip install pasm-skills # Base kit (zero dependencies) python -m pasm_skills selftest # Self-test: verify SDK, framework, and discovery ``` ### Technical Analysis The skill directs users to install `pasm-skills` from pip without specifying an exact version, integrity hash, lockfile, or immutable source revision. It then immediately instructs users to execute the installed package. Consequently, the effective executable code is determined by the package registry at installation time and may differ from the code originally reviewed. The audited project contains only `SKILL.md`; it does not include the package implementation or other artifacts that would allow the externally installed code to be verified against the documented behavior. This creates a supply-chain trust boundary. If the package distribution, publisher account, release process, or package registry were compromised—or if a future release introduced malicious behavior—the installation instructions would cause users to retrieve and execute that unreviewed code. ### Attack Path 1. An attacker compromises the package publisher account, distribution pipeline, or another component of the package supply chain. 2. The attacker publishes a malicious release under the expected `pasm-skills` package name. 3. A user follows the skill's unpinned `pip install pasm-skills` instruction. 4. pip resolves and installs the attacker-controlled release from the configured package index. 5. The user runs `python -m pasm_skills selftest` or imports the package while creating an agent. 6. Malicious module initialization or command logic executes with the privileges of the invoking user. ### Impact Assessment Successful exploitation could provide attacker-con ...[truncated 608 chars]
Remediation
## Remediation Suggestions 1. Pin the dependency to a specifically audited release, for example: ```bash python -m pip install "pasm-skills==0.5.0" ``` 2. Distribute verified hashes and require integrity checking: ```bash python -m pip install --require-hashes -r requirements.txt ``` 3. Store the exact version and SHA-256 hashes in a committed lockfile or requirements file. 4. Reference an immutable source revision or signed release artifact and document how users can verify its signature or checksum. 5. Audit the source and built wheel corresponding to the pinned release, including module entry points and initialization behavior. 6. Recommend installation and execution in an isolated virtual environment under an unprivileged account. 7. Avoid immediately executing newly installed dependencies until their provenance and integrity have been verified.
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Ae1

High
Category
analysis-evasion
Content
| `zip-root` | ZIP **根目录直接是 `SKILL.md`** | `dist/zip-root/<name>/SKILL.md` + `<name>-<ver>.zip` |
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
| `zip-root` | ZIP **根目录直接是 `SKILL.md`** | `dist/zip-root/<name>/SKILL.md` + `<name>-<ver>.zip` |
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
| `zip-root` | ZIP **根目录直接是 `SKILL.md`** | `dist/zip-root/<name>/SKILL.md` + `<name>-<ver>.zip` |
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Session Persistence

Medium
Category
Rogue Agent
Content
The base kit for building agents on the PASM cognitive engine. Ships a BaseAgent SDK (observe /
  recall / mood / act / feedback / save with persistent JSON state), an agent framework (registry,
  isolated repo probing, scenario simulation harness, core-contract check toolboxes) and a
  skill-packaging library producing the two archive layouts platforms require. Write an agent by
  subclassing BaseAgent and implementing an action pool plus a reply template; the engine tier (light
  / core / bionic) is always reported, never hidden. Zero LLM dependency, offline-runnable, stdlib
  only.
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
This markdown file presents the user-facing skill description and instructions exclusively in Chinese. Under the policy for natural-language violations, forcing a specific language without offering the user a locale or language choice is a reportable issue unless clearly justified as region-specific, which is not stated here.

Static analysis

No suspicious patterns detected.