Back to skill

Security audit

Postman

Security checks for vulnerabilities and agentic risk

Overview

This Postman skill is mostly purpose-aligned, but it hides setup behavior, persists API workflow details without clear consent, and recommends unpinned npm execution.

Review this skill before installing. It can be useful for API testing, but do not let it silently store API project or auth-pattern details unless you are comfortable with that persistence. Prefer pinned, project-local npm dependencies over the documented global installs or npx command, and avoid putting real tokens directly in command-line arguments or committed environment files.

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:187
Finding
Unpinned npm Packages Are Downloaded and Executed## Vulnerability Details **File Locations**: - `SKILL.md:187-190` - `setup.md:44-50` - `newman.md:4-6` - `newman.md:74-75` - `newman.md:86-90` - `newman.md:94-98` **Vulnerability Type**: Unpinned third-party package installation and execution **Risk Level**: Medium ### Vulnerable Code `SKILL.md:187-190`: ```bash Or via CLI: ```bash npx openapi-to-postmanv2 -s openapi.yaml -o collection.json ``` ``` `setup.md:44-50`: ```bash If they need automated testing, ensure Newman is installed: ```bash npm install -g newman ``` For HTML reports: ```bash npm install -g newman-reporter-htmlextra ``` ``` `newman.md:4-6`: ```bash ## Installation ```bash npm install -g newman ``` ``` `newman.md:74-75`: ```bash # HTML report (install: npm i -g newman-reporter-htmlextra) newman run collection.json -r htmlextra --reporter-htmlextra-export report.html ``` `newman.md:86-90`: ```yaml ### GitHub Actions ```yaml - name: Run API Tests run: | npm install -g newman newman run collection.json -e ${{ env.ENV }}.json --bail ``` ``` `newman.md:94-98`: ```yaml ### GitLab CI ```yaml api_tests: script: - npm install -g newman - newman run collection.json -e ci.json --reporters cli,junit --reporter-junit-export results.xml ``` ``` ### Technical Analysis The documented commands retrieve mutable package versions from the npm registry without pinning an audited version or verifying package integrity. In particular, `npx openapi-to-postmanv2` can download and immediately execute the currently resolved package. The global installation commands similarly install the latest resolved Newman or reporter package and may execute npm lifecycle scripts during installation. Because no lockfile, integrity hash, package provenance check, or approved version is specified, the code ultimately executed can change after this skill has been reviewed. This ...[truncated 2196 chars]
Remediation
## Remediation Suggestions 1. Pin every dependency to a reviewed, exact version, for example: ```bash npm install --save-dev --save-exact newman@5.3.2 npm install --save-dev --save-exact newman-reporter-htmlextra@1.23.1 npm install --save-dev --save-exact openapi-to-postmanv2@5.0.0 ``` Version examples must be replaced with currently supported versions that have been independently reviewed. 2. Store dependencies in `package.json` and commit the generated lockfile. In CI, install them using: ```bash npm ci --ignore-scripts ``` If a dependency demonstrably requires lifecycle scripts, review those scripts and permit them only in a controlled installation stage. 3. Replace ad hoc `npx` retrieval with the locked project-local executable: ```bash ./node_modules/.bin/openapi2postmanv2 -s openapi.yaml -o collection.json ``` 4. Avoid global package installation. Project-local dependencies provide stronger version isolation, reproducibility, and lockfile enforcement. 5. Verify package provenance, registry source, publisher identity, and lockfile integrity before adoption. Use dependency scanning and npm audit tooling as supplementary controls. 6. Run package installation and API tests in a minimally privileged, isolated environment. Do not expose unrelated CI secrets to the installation step, restrict outbound network access where practical, and use short-lived API credentials. 7. Configure automated dependency updates to require review and security checks rather than silently accepting new package versions.
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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (8)

Credential Access

High
Category
Privilege Escalation
Content
newman run collection.json -g globals.json

# Multiple environments
newman run collection.json -e dev.json -e secrets.json
```

## Filtering
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The instruction to read `setup.md` silently directs the agent to consume additional instructions without notifying the user, which can hide behavior changes, tool execution, or prompt injection contained in that file. In a security context, undisclosed retrieval of secondary instruction files reduces transparency and makes malicious or unsafe setup content harder for users to detect or contest.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding
Using `npx openapi-to-postmanv2` without pinning a specific version allows execution of whatever package version is current at runtime. This creates a supply-chain risk: a compromised latest release, typosquat, or breaking update could execute unexpected code on the user's machine when they follow the skill guidance.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The documentation recommends passing sensitive values such as API tokens directly on the command line via --env-var, which can expose secrets through shell history, process listings, CI job logs, and debugging output. In a CI/CD and API testing context, these examples are likely to be copied verbatim, increasing the chance of accidental credential disclosure.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The activation condition is broad and implicit: the setup content should trigger whenever `~/postman/` does not exist, while also instructing the agent to hide that setup behavior from the user. This can cause the skill to run in situations the user did not explicitly request, leading to unsolicited behavior changes and silent state initialization that may affect subsequent interactions.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The skill directs the agent to persist workflow details, API projects, authentication patterns, and environment naming conventions into `~/postman/memory.md` without any disclosure or consent flow. This creates a privacy and security risk because it stores potentially sensitive operational metadata locally, including information about environments and auth usage, outside the user's explicit awareness.

Missing User Warnings

Low
Confidence
87% confidence
Finding
This markdown file includes a DELETE request template that removes an item, but the surrounding documentation provides no warning that the operation may be destructive or irreversible. Under the markdown-specific warning criteria, examples that could affect user data should disclose that impact.

Missing User Warnings

Low
Confidence
85% confidence
Finding
The markdown includes a file upload request template that sends a local file to a remote endpoint, but it does not warn users that file contents may be transmitted externally. For markdown skill descriptions, behaviors affecting user data or privacy should be explicitly disclosed.

Static analysis

No suspicious patterns detected.