Back to skill

Security audit

GERMANIC

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent local JSON validation and compilation helper, but users should verify the external CLI they install.

Install only if you trust the germanic CLI source and package channel. Prefer a pinned version or verified release artifact where available, and run the tool on workspace data you intend to validate or compile. Review MCP configuration before enabling it in a client because that makes the germanic commands callable through that client, even though no hidden persistence or credential access was found in the skill text.

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:24
Finding
Unpinned Third-Party CLI Installation Creates a Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md:11` and `SKILL.md:24-29` **Vulnerability Type**: Unpinned third-party dependency installation **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: {"openclaw":{"emoji":"🔒","requires":{"bins":["germanic"]},"install":[{"id":"brew-install","kind":"brew","formula":"germanicdev/germanic/germanic","bins":["germanic"],"label":"Install GERMANIC CLI (Homebrew)"}]}} ``` ```bash brew tap germanicdev/germanic && brew install germanic ``` ```text Verify: `germanic --version` should print `0.2.3`. Alternative (from source): `cargo install germanic` ``` ### Technical Analysis The Skill directs users or agents to install and execute an externally maintained CLI through a third-party Homebrew tap or Cargo without pinning an immutable version, source revision, checksum, or cryptographic signature. The Homebrew command adds the external `germanicdev/germanic` tap and installs whichever formula revision is current at resolution time. Similarly, `cargo install germanic` resolves the current registry release and its build dependencies. The documented version check is performed only after installation, so it does not prevent package installation or build-time code from executing first. The audited project contains only documentation and does not include the CLI source, a dependency lock file, vendored dependencies, release checksums, or signatures. Therefore, claims that the CLI is offline, has no telemetry, and contains no unsafe behavior cannot be independently verified from this package. ### Attack Path 1. An attacker compromises the upstream Homebrew tap, formula repository, Cargo crate, maintainer account, release process, or a build dependency. 2. The attacker publishes a malicious or modified package under the expected package identity. 3. A user or agent follows the Skill's unpinned Homebrew or Cargo installation instructions. 4. The package manager r ...[truncated 992 chars]
Remediation
## Remediation Suggestions 1. Pin installation to an exact CLI version and, where possible, an immutable source commit or artifact digest. 2. Publish SHA-256 or stronger checksums for release artifacts and verify them before installation or execution. 3. Cryptographically sign release artifacts and document signature verification using a trusted, independently distributed public key. 4. Pin Rust dependencies with a reviewed `Cargo.lock` and use locked builds, such as `cargo install --version 0.2.3 --locked germanic`, while recognizing that version pinning alone does not replace artifact verification. 5. Pin the Homebrew formula to a reviewed revision and ensure the formula references a versioned release archive with a verified checksum. 6. Prefer reproducible builds or vendored, audited source over dynamically resolving the latest package. 7. Perform integrity and provenance verification before any installer, build script, or binary is executed; a post-installation `--version` check is insufficient. 8. Run installation and the CLI with least privilege in a sandbox or isolated environment with restricted filesystem and network access. 9. Include the audited CLI implementation or a verifiable Software Bill of Materials so the documented security and offline-operation claims can be independently assessed.
Vulnerability Patterns
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • 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
Findings (5)

Natural-Language Policy Violations

Medium
Confidence
86% confidence
Finding
The text states that schema fields are intentionally in German and frames this as a fixed design choice, while only noting that English translations exist under separate schema IDs. This can violate language/locale policy because it defaults users into a specific language convention rather than explicitly offering a neutral choice up front.

Intent-Code Divergence

Medium
Confidence
96% confidence
Finding
The Trust & Safety section states the binary only reads JSON and writes `.grm`, but the same document describes commands for schema discovery, inspection, validation, initialization, conversion, and an MCP server mode. This misleading safety claim can cause reviewers or agents to under-assess capabilities, creating a documentation-driven security risk where broader behavior is trusted without appropriate scrutiny.

Description-Behavior Mismatch

Medium
Confidence
93% confidence
Finding
The skill manifest and primary description position the tool as a local JSON validator/compiler, but the documentation also exposes an MCP server that provides multiple callable tools over stdio. This capability expansion materially changes the attack surface and trust model: an agent or user may install the skill expecting only file validation while actually enabling a long-running tool server with additional commands and integration paths.

Natural-Language Policy Violations

Medium
Confidence
87% confidence
Finding
The heading "GERMANIC Workflow Examples" frames the skill around a specific language/locale context, and the examples consistently use German field names and German-specific schema identifiers. Because the document does not explicitly state that this locale focus is optional or limited to a region-specific use case, it can be read as enforcing a locale convention without user choice.

Natural-Language Policy Violations

Low
Confidence
77% confidence
Finding
The title 'GERMANIC Schema Types' suggests a language/locale-specific scope, and the schema-ID examples prioritize locale prefixes such as 'de' and 'en'. Because the document does not explain why this locale framing is required or indicate that other locales are equally supported, it may be read as imposing a locale policy without opt-in.

Static analysis

No suspicious patterns detected.