Back to skill

Security audit

openplanet-plugin-dev

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent Openplanet plugin-development skill, with some high-risk game-modding guidance that users should follow carefully.

Use this skill only for Openplanet plugin development. Before following its process-kill, archive, or log-clearing recipes, save game/editor work and keep backups. Treat Dev memory writes, hooks, patches, unsigned plugins, registry files, and SmartScreen bypass steps as advanced actions: verify sources, prefer read-only checks first, and use per-build validation before writing to game memory.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
Findings (63)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 197)May include surrounding context.

md
| `references/api-namespaces.md` | Namespace/function reference (UI, Time, Text, IO, Net, Json, nvg, Math…) |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 211)May include surrounding context.

md
| `references/openplanet-docs-dump.md` | Raw Openplanet docs dump (search only when the above fail) |

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

The guidance tells the agent to run rm -rf /tmp/foo before unpacking. In isolation this is a common cleanup step, but in an agent/tooling context it is dangerous because recursive deletion is destructive, assumes the target path is safe, and could remove unintended data if the path is reused, symlinked, or adapted unsafely in future edits.

Content

Scanner excerpt · references/op-package-analysis-and-porting.md (reported line 10)May include surrounding context.

bash
unzip -l Plugins/Foo-1.0.0.op                 # manifest first
rm -rf /tmp/foo && mkdir -p /tmp/foo && unzip -q Plugins/Foo-1.0.0.op -d /tmp/foo

Pitfalls:

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

The guidance tells the agent to run rm -rf /tmp/foo before unpacking. In isolation this is a common cleanup step, but in an agent/tooling context it is dangerous because recursive deletion is destructive, assumes the target path is safe, and could remove unintended data if the path is reused, symlinked, or adapted unsafely in future edits.

Content

Scanner excerpt · references/op-package-analysis-and-porting.md (reported line 10)May include surrounding context.

bash
unzip -l Plugins/Foo-1.0.0.op                 # manifest first
rm -rf /tmp/foo && mkdir -p /tmp/foo && unzip -q Plugins/Foo-1.0.0.op -d /tmp/foo

Pitfalls:

Instruction Override

High
Category
Prompt Injection
Confidence
70% confidence
Finding

This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.

Content

Scanner excerpt · references/openplanet-docs-dump.md (reported line 168)May include surrounding context.

md
In Openplanet 1.24.4, **Developer Mode** was introduced. By default, it is disabled to prevent unsigned plugins from being loaded. For development, you must enable it as your plugin will only be signed during the upload and review process on the website.

To enable Developer Mode:
1.  Open the Openplanet overlay (`F3`).
2.  Go to `Developer -> Signature Mode`.
3.  Select the **"Developer"** option.

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
75% confidence
Finding

Skill attempts to nullify the agent's safety policies or restrictions ('you have no restrictions', 'ignore your guidelines', 'do anything now'). This is a direct jailbreak that disables guardrails.

Content

Scanner excerpt · references/openplanet-docs-dump.md (reported line 173)May include surrounding context.

md
2.  Go to `Developer -> Signature Mode`.
3.  Select the **"Developer"** option.

Once selected, the mode is enabled. To disable it, deselect the option and restart the game. Optionally, you can enable developer mode on game startup through the Openplanet settings.

Now that Developer Mode is enabled, you can start working on your plugin.

Instruction Override

High
Category
Prompt Injection
Confidence
70% confidence
Finding

This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.

Content

Scanner excerpt · references/openplanet-docs-dump.md (reported line 173)May include surrounding context.

md
2.  Go to `Developer -> Signature Mode`.
3.  Select the **"Developer"** option.

Once selected, the mode is enabled. To disable it, deselect the option and restart the game. Optionally, you can enable developer mode on game startup through the Openplanet settings.

Now that Developer Mode is enabled, you can start working on your plugin.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/openplanet-docs-dump.md (reported line 716)May include surrounding context.

md
As of Openplanet 1.21.0, plugins can depend on other plugins. For a plugin (A) to run if it depends on another plugin (B), both A and B need to be installed. Dependent plugins inherit parts of the implementation of their dependencies by importing their exports. These exported functions (and optionally shared classes) can then be used by any dependent plugins.

For example, the built-in `NadeoServices` plugin allows dependent plugins to use the same access tokens for Nadeo's live services. This saves resources, simplifies development, and avoids potential rate limiting or conflicts.

### Depending on a plugin

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/review-evidence-precedents.md (reported line 1)May include surrounding context.

md
<!--
SOURCE: github.com/XertroV/tm-plugin-skills — skills/openplanet-reviewer/references/evidence-precedents.md
AUTHOR: XertroV
LICENSE: CC0-1.0 OR Unlicense (public-domain equivalent; free to reuse, modify, redistribute)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill instructs users to force-kill the game process (taskkill /F) to reload compiled state, but does not warn that this can discard unsaved maps, settings, or in-session progress. In a development workflow skill, users are likely to follow commands verbatim, so omission of a safety warning creates a realistic destructive-action risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file provides a destructive command, taskkill /F /IM ManiaPlanet.exe, and recommends always killing the game before copying a fresh plugin. While the purpose is operationally relevant, the instructions do not warn the user that force termination can discard unsaved state or interrupt in-progress activity.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The markdown instructs users to force-kill the game process, clear a log file, and patch plugin files directly, all of which can disrupt running work or destroy diagnostic history. The section presents these steps as routine workflow but does not warn users about potential data loss, unsaved progress loss, or irreversible log clearing.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The file explicitly recommends taskkill /F /IM ManiaPlanet.exe as part of the update workflow for .op plugins. Force-killing a running application can cause loss of unsaved work, interrupted writes, or state corruption, and the nearby text does not clearly warn about those risks before presenting the command as a standard step.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The document explicitly recommends a Tier-2 'velocity restore via Dev::SetOffset', which introduces direct memory-write capability into a plugin-development reference. In the context of Openplanet plugin development, this crosses from normal API use into arbitrary process-memory manipulation, which can be repurposed for cheating, unsafe state corruption, or bypassing intended game/plugin safety boundaries.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The documentation explicitly tells users how to bypass Windows SmartScreen and unblock an unsigned installer, but it does not pair that advice with any provenance verification steps such as checking the official download source, hashes, signatures, or release channel. In a plugin-development context, normalizing bypass of OS trust prompts increases the chance that users will run tampered or spoofed installers.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The crash guide instructs users to install a registry file to enable dump generation without warning that registry modifications change system behavior and should only be performed from a trusted source. Even if well-intended, this creates unsafe admin-behavior patterns and could be abused if the linked file were replaced or spoofed.

Content

No source excerpt is available for this finding.

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/openplanet-docs-dump.md (reported line 2892)May include surrounding context.

md
These are the functions that will be called for each plugin, if the plugin exists.

| Function Signature                     | Description                                                                                                                                              | Yieldable |
| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- |
| `void Main()`                          | Main entry point.                                                                                                                                        | Yes       |
| `void Render()`                        | Render function called every frame (always, even if overlay is closed).                                                                                    | No        |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/openplanet-docs-dump.md (reported line 2894)May include surrounding context.

md
| Function Signature                     | Description                                                                                                                                              | Yieldable |
| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- |
| `void Main()`                          | Main entry point.                                                                                                                                        | Yes       |
| `void Render()`                        | Render function called every frame (always, even if overlay is closed).                                                                                    | No        |
| `void RenderInterface()`               | Render function called every frame intended for UI when the Openplanet overlay is active.                                                                | No        |
| `void RenderMenu()`                    | Render function called every frame intended only for menu items in UI.                                                                                     | No        |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/openplanet-docs-dump.md (reported line 2895)May include surrounding context.

md
| Function Signature                     | Description                                                                                                                                              | Yieldable |
| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- |
| `void Main()`                          | Main entry point.                                                                                                                                        | Yes       |
| `void Render()`                        | Render function called every frame (always, even if overlay is closed).                                                                                    | No        |
| `void RenderInterface()`               | Render function called every frame intended for UI when the Openplanet overlay is active.                                                                | No        |
| `void RenderMenu()`                    | Render function called every frame intended only for menu items in UI.                                                                                     | No        |
| `void RenderMenuMain()`                | Render function called every frame intended only for menu items in the main menu of the UI.                                                              | No        |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/openplanet-docs-dump.md (reported line 2897)May include surrounding context.

md
| `void Main()`                          | Main entry point.                                                                                                                                        | Yes       |
| `void Render()`                        | Render function called every frame (always, even if overlay is closed).                                                                                    | No        |
| `void RenderInterface()`               | Render function called every frame intended for UI when the Openplanet overlay is active.                                                                | No        |
| `void RenderMenu()`                    | Render function called every frame intended only for menu items in UI.                                                                                     | No        |
| `void RenderMenuMain()`                | Render function called every frame intended only for menu items in the main menu of the UI.                                                              | No        |
| `void RenderSettings()`                | **Deprecated:** Use `[SettingsTab]` instead! Render function called every frame intended for within Openplanet's settings window for UI.                 | No        |
| `void Update(float dt)`                | Called every frame. `dt` is the delta time (milliseconds since last frame).                                                                              | No        |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/openplanet-docs-dump.md (reported line 2903)May include surrounding context.

md
| `void Update(float dt)`                | Called every frame. `dt` is the delta time (milliseconds since last frame).                                                                              | No        |
| `void OnDisabled()`                    | Called when the plugin is disabled from the settings, the menu, or programmatically via the Meta API.                                                    | No        |
| `void OnEnabled()`                     | Called when the plugin is enabled from the settings, the menu, or programmatically via the Meta API.                                                     | No        |
| `void OnDestroyed()`                   | Called when the plugin is unloaded and completely removed from memory.                                                                                   | No        |
| `void OnSettingsChanged()`             | Called when a setting in the settings panel was changed.                                                                                                 | No        |
| `void OnSettingsSave(Settings::Section& section)` | Called when the settings for the plugin are being saved.                                                                                 | No        |
| `void OnSettingsLoad(Settings::Section& section)` | Called when the settings for the plugin are being loaded.                                                                                | No        |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/openplanet-docs-dump.md (reported line 2904)May include surrounding context.

md
| `void OnDisabled()`                    | Called when the plugin is disabled from the settings, the menu, or programmatically via the Meta API.                                                    | No        |
| `void OnEnabled()`                     | Called when the plugin is enabled from the settings, the menu, or programmatically via the Meta API.                                                     | No        |
| `void OnDestroyed()`                   | Called when the plugin is unloaded and completely removed from memory.                                                                                   | No        |
| `void OnSettingsChanged()`             | Called when a setting in the settings panel was changed.                                                                                                 | No        |
| `void OnSettingsSave(Settings::Section& section)` | Called when the settings for the plugin are being saved.                                                                                 | No        |
| `void OnSettingsLoad(Settings::Section& section)` | Called when the settings for the plugin are being loaded.                                                                                | No        |
| `void OnKeyPress(bool down, VirtualKey key)` | Called whenever a key is pressed on the keyboard. See documentation for `VirtualKey` enum.                                                         | No        |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/openplanet-docs-dump.md (reported line 3024)May include surrounding context.

md
| `void OnDisabled()`                    | Called when the plugin is disabled from the settings, the menu, or programmatically via the Meta API.                                                    | No        |
| `void OnEnabled()`                     | Called when the plugin is enabled from the settings, the menu, or programmatically via the Meta API.                                                     | No        |
| `void OnDestroyed()`                   | Called when the plugin is unloaded and completely removed from memory.                                                                                   | No        |
| `void OnSettingsChanged()`             | Called when a setting in the settings panel was changed.                                                                                                 | No        |
| `void OnSettingsSave(Settings::Section& section)` | Called when the settings for the plugin are being saved.                                                                                 | No        |
| `void OnSettingsLoad(Settings::Section& section)` | Called when the settings for the plugin are being loaded.                                                                                | No        |
| `void OnKeyPress(bool down, VirtualKey key)` | Called whenever a key is pressed on the keyboard. See documentation for `VirtualKey` enum.                                                         | No        |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/openplanet-docs-dump.md (reported line 2905)May include surrounding context.

md
| `void OnEnabled()`                     | Called when the plugin is enabled from the settings, the menu, or programmatically via the Meta API.                                                     | No        |
| `void OnDestroyed()`                   | Called when the plugin is unloaded and completely removed from memory.                                                                                   | No        |
| `void OnSettingsChanged()`             | Called when a setting in the settings panel was changed.                                                                                                 | No        |
| `void OnSettingsSave(Settings::Section& section)` | Called when the settings for the plugin are being saved.                                                                                 | No        |
| `void OnSettingsLoad(Settings::Section& section)` | Called when the settings for the plugin are being loaded.                                                                                | No        |
| `void OnKeyPress(bool down, VirtualKey key)` | Called whenever a key is pressed on the keyboard. See documentation for `VirtualKey` enum.                                                         | No        |
| `UI::InputBlocking OnKeyPress(bool down, VirtualKey key)` | (Alternative signature) Called whenever a key is pressed. Can block input.                                                               | No        |

Static analysis

No suspicious patterns detected.