Back to skill

Security audit

MiniMax React Native Dev

Security checks for vulnerabilities and agentic risk

Overview

This is a straightforward React Native and Expo development guide; its main risk is that some example setup commands run mutable npm tooling, which users should treat with normal developer supply-chain caution.

Before running the setup commands, consider pinning the Expo and create-expo-app versions, reviewing package provenance, and running project generation in a normal non-admin development environment without unnecessary credentials exposed.

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:100
Finding
Unpinned npm Package Download and Execution## Vulnerability Details **File Location**: `SKILL.md`, line 100 **Vulnerability Type**: Unsafe execution of a mutable third-party dependency **Risk Level**: Medium ### Vulnerable Code ```bash npx create-expo-app@latest my-app --template blank-typescript ``` ### Technical Analysis The project setup instructions direct users to execute `create-expo-app` using the mutable `latest` npm distribution tag. The `npx` command can download the selected package from the configured npm registry and immediately execute its code with the privileges of the invoking user. The `latest` tag can be reassigned and does not identify a fixed, previously reviewed package version. Consequently, the effective code executed by this instruction may change after the Skill has been audited. Although invoking project-generation tooling is necessary for the declared React Native and Expo development functionality, using an unpinned release is not necessary and introduces avoidable supply-chain risk. This issue does not demonstrate that `create-expo-app` is currently malicious. The vulnerability is the instruction to trust and execute a mutable upstream package without version pinning or provenance verification. ### Attack Path 1. An attacker compromises the upstream package, a maintainer account, the package publication process, or the npm registry path used by the victim. 2. The attacker publishes a malicious release and causes the mutable `latest` tag to resolve to it. 3. A user follows the Skill's initialization instructions and runs the documented `npx` command. 4. `npx` downloads the attacker-controlled package version and executes its project-generation code. 5. The malicious package operates with the user's current privileges and can access resources available to that user and process. ### Impact Assessment Successful exploitation permits arbitrary code execution under the account running the command. Depending on the local environment a ...[truncated 525 chars]
Remediation
## Remediation Suggestions 1. Replace the mutable `latest` tag with an exact, reviewed version, for example: ```bash npx create-expo-app@X.Y.Z my-app --template blank-typescript ``` 2. Periodically review and deliberately update the pinned version rather than allowing the selected release to change implicitly. 3. Instruct users to verify that the package resolves from the official npm registry and confirm its publisher, provenance, and expected package metadata before execution. 4. Where organizational controls are available, use an approved internal registry proxy, dependency allowlist, or package provenance policy. 5. Run project-generation tools in an isolated development environment with no unnecessary credentials and only the filesystem permissions required to create the target project. 6. Avoid running the initialization command as an administrator or root user.
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 (5)

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding
The skill instructs users to run `npx create-expo-app@latest`, which fetches and executes the latest package version at runtime rather than a reviewed, fixed version. In a developer-facing skill, this creates a supply-chain risk: if the upstream package or a dependency is compromised, users may execute attacker-controlled code locally.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding
The command `npx expo install ...` relies on `npx expo` without an explicit pinned CLI version, so execution may vary over time and may fetch unreviewed code depending on the environment. Because this skill is a setup guide intended to be copied and executed by developers, the lack of version pinning increases exposure to package compromise or breaking changes.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding
This `npx expo install ...` invocation again uses an unpinned package executable, which can pull and run code that differs from what the skill author originally validated. In a mobile-development skill, these commands are highly likely to be executed verbatim, making the supply-chain risk more practical than in purely informational text.

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding
The recommendation `npx expo start` references an unpinned executable, so developers may run whichever version resolves in their environment or is fetched at execution time. While less directly dangerous than arbitrary shell scripting, it still introduces avoidable supply-chain and reproducibility risk in a guide that encourages command execution.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding
The web support installation step uses `npx expo install ...` without pinning the Expo package version, leaving users dependent on mutable upstream state. If the package distribution path is compromised or unexpectedly changed, this command could execute unintended code on the developer workstation.

Static analysis

No suspicious patterns detected.