Back to skill

Security audit

strikeradar

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to do its advertised StrikeRadar lookup, but its install and run paths execute unpinned npm tooling from the network and need review before use.

Review before installing. Prefer cloning a reviewed commit and running with a locally installed, pinned `tsx` version or a lockfile-managed workflow instead of copy-pasting the unpinned `npx` commands. Expect the skill to contact api.usstrikeradar.com when used, and avoid relying on its risk scores for safety, financial, or operational decisions.

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:20
Finding
Unpinned npm Packages Are Executed Through npx## Vulnerability Details **File Location**: `SKILL.md:20-23`; additional occurrences in `README.md:10-13` and `README.md:35-38` **Vulnerability Type**: Unpinned third-party package execution through `npx` **Risk Level**: Medium ### Vulnerable Code `SKILL.md:20-23`: ```bash ## Quick Start No dependencies needed. Run directly: ```bash npx tsx {baseDir}/scripts/strikeradar.ts status ``` ``` `README.md:10-13`: ```bash ## Installation ```bash npx skills add alexpolonsky/agent-skill-strikeradar ``` ``` `README.md:35-38`: ```bash Or run it as a standalone CLI: ```bash npx tsx scripts/strikeradar.ts status ``` ``` ### Technical Analysis The documented installation and execution paths invoke the npm packages `skills` and `tsx` through `npx` without specifying exact versions or integrity constraints. Neither package is declared or locked in `package.json`, which contains no dependency list or lockfile-backed resolution. When a requested executable is not already installed locally, `npx` can resolve and download a package from the configured npm registry and immediately execute its package code. Because no version is pinned, the effective executable can change after this skill has been reviewed. A future compromised, malicious, or otherwise unsafe package release could therefore execute during skill installation or normal use. This is a supply-chain weakness rather than evidence that the currently resolved packages are malicious. Exploitation requires compromise of the relevant package, registry resolution, maintainer account, or package source. ### Attack Path 1. An attacker compromises the npm package or publishing account for `tsx` or `skills`, or otherwise influences package resolution through the user's npm registry configuration. 2. The attacker publishes a malicious version that contains executable package logic. 3. A user or agent follows the documented command without an already tru ...[truncated 1270 chars]
Remediation
## Remediation Suggestions 1. Declare required runtime tooling in `package.json` using reviewed, exact versions rather than relying on unconstrained registry resolution. For example, pin `tsx` to an exact version without a caret or tilde. 2. Commit a lockfile generated by the selected package manager and require lockfile-enforced installation, such as `npm ci`, before execution. 3. Replace the documented `npx tsx ...` command with an invocation of the installed, lockfile-controlled executable, such as an npm script: ```json { "scripts": { "strikeradar": "tsx scripts/strikeradar.ts" }, "devDependencies": { "tsx": "REVIEWED_EXACT_VERSION" } } ``` Users can then run: ```bash npm ci npm run strikeradar -- status ``` 4. If `npx` must remain supported, specify an explicitly reviewed version and prevent silent alternative resolution. Version pinning reduces unexpected upgrades, although a committed lockfile and local installation provide stronger reproducibility. 5. Pin or otherwise verify the installer used in `npx skills add ...`; document its expected package identity and reviewed version. 6. Use a trusted npm registry, retain package integrity metadata, and incorporate dependency provenance, vulnerability, and publisher-change checks into release review. 7. Run installation and skill execution in a restricted environment with minimal filesystem access, no unnecessary credentials in environment variables, and limited outbound network permissions.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (13)

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding
The README instructs users to run `npx skills add alexpolonsky/agent-skill-strikeradar` without pinning a specific package version. Because `npx` resolves and executes the current published package, a compromised publisher account, malicious update, or dependency-chain issue could cause arbitrary code execution on the user's machine at install time.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding
The standalone CLI example uses `npx tsx scripts/strikeradar.ts status` without pinning `tsx` to a known version. This causes `npx` to fetch and execute whichever `tsx` release is current in the user's environment, creating a supply-chain execution risk if the package or its distribution path is ever compromised.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding
The alias example again relies on unpinned `npx tsx`, which means every invocation may execute a package version not reviewed by the skill author or user. In a skill context, README commands are often copy-pasted directly, so this increases the practical risk of supply-chain compromise through routine usage.

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill invokes a script that fetches multiple external signals, but the manifest does not declare any tool scope or permissions boundary for network access. This creates an execution/transparency gap: users and hosting platforms cannot reliably constrain or review what outbound access the skill needs, increasing the risk of unexpected data retrieval or abuse if the script changes.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger phrases are broad current-events terms such as 'Iran situation' and 'oil prices Iran', which are likely to match ordinary conversation and auto-activate the skill outside clear user intent. Over-broad activation can cause unintended network access, unexpected geopolitical monitoring behavior, or disclosure of outputs the user did not explicitly request.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
Using `npx tsx` without pinning an exact version allows the runtime to resolve and execute whatever package version is current at execution time. This introduces a supply-chain risk where a malicious or compromised upstream release of `tsx` could execute arbitrary code on the host when the skill is run.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
This command again relies on unpinned `npx tsx`, which means code from the npm ecosystem is fetched/resolved dynamically at runtime without a fixed version guarantee. In a skill that users may execute repeatedly, this materially increases exposure to dependency hijacking or malicious package updates.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The `signal` command uses the same unpinned `npx tsx` execution path, so the host may execute unreviewed upstream code before running the local script. Because this command is intended for targeted investigation, users may trust it in sensitive contexts while still being exposed to arbitrary package behavior.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The `pulse` example repeats the unpinned `npx tsx` pattern, preserving the same supply-chain execution risk. Any compromise of the package or dependency resolution path could lead to arbitrary code execution with the user's privileges.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
Piping the command output does not reduce the underlying risk that `npx tsx` may fetch and execute an unexpected package version. The danger is amplified because the example encourages a standard usage pattern that may be widely copied by users without scrutiny.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding
The shebang uses `npx tsx`, which resolves and may download whatever version of `tsx` is current in the execution environment rather than a pinned, audited dependency. That creates a supply-chain risk: a compromised or breaking upstream release could execute unexpected code whenever this script is launched.

Natural-Language Policy Violations

Low
Confidence
79% confidence
Finding
The description explicitly includes Hebrew trigger phrases alongside English phrases, but it does not explain whether multilingual activation is user-selected or optional. This can be a language/locale policy issue because the skill defines language-specific behavior without documenting user opt-in or locale constraints.

Missing User Warnings

Low
Confidence
84% confidence
Finding
The script performs outbound HTTP requests to api.usstrikeradar.com, including a POST request, but the file provides no user-facing disclosure that running the command will contact a third-party service and share request metadata such as IP address and usage context. For a code file, this qualifies as a missing warning because the network transmission is not accompanied by a confirmation prompt or explicit disclosure in comments/docstrings beyond naming the API.

Static analysis

No suspicious patterns detected.