Back to skill

Security audit

Gemma Gemma3

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly purpose-aligned, but it under-discloses the installed tool's default telemetry while claiming all data stays on the user's network.

Review the Ollama Herd package before installing, pin a specific version or use hashes where possible, run it in an isolated non-admin environment, and set `FLEET_NODE_TELEMETRY=false` before first start if you do not want daily usage telemetry sent outside your network.

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:29
Finding
Unpinned Third-Party Package Installation and Execution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 29–31 **Vulnerability Type**: Unpinned and externally managed software dependency **Risk Level**: Medium ### Vulnerable Code ```bash pip install ollama-herd # PyPI: https://pypi.org/project/ollama-herd/ herd # start the router (port 11435) herd-node # run on each device — finds the router automatically ``` ### Technical Analysis The installation instructions retrieve the latest available `ollama-herd` package from PyPI without specifying a reviewed version or validating an integrity hash. The instructions then execute the package-provided `herd` and `herd-node` entry points. Because the installed implementation is not included in this project, its effective behavior cannot be verified from the audited artifact. The downloaded content can also change after this Skill has been reviewed. A compromised package publisher account, package-index compromise, or unexpectedly changed future release could therefore introduce arbitrary code. This is not evidence that the current `ollama-herd` package is malicious. The risk arises from trusting mutable, unpinned third-party code and immediately executing it. ### Attack Path 1. An attacker compromises the upstream package, its publisher account, or its release process. 2. The attacker publishes a modified `ollama-herd` release to the package source used by `pip`. 3. A user follows the documented command `pip install ollama-herd`. 4. Because no version or hash is specified, `pip` retrieves the attacker-controlled or unexpectedly modified release. 5. The user executes `herd` or `herd-node`, causing package-controlled code to run under the user's account. ### Impact Assessment A compromised dependency would execute with the privileges of the user running the installation and service commands. Depending on those privileges and the dependency's implementation, this could permit: - Reading or modifying fil ...[truncated 585 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin `ollama-herd` to a specifically reviewed version rather than installing the latest available release: ```bash python3 -m pip install "ollama-herd==<reviewed-version>" ``` 2. Distribute a locked requirements file containing cryptographic hashes and install it with hash enforcement: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 3. Install the package in a dedicated virtual environment or another appropriately isolated runtime instead of the system Python environment. 4. Verify release provenance through trusted package metadata, signed releases, or a controlled internal package mirror. 5. Review the installed package and its transitive dependencies before updating the pinned version. 6. Run `herd` and `herd-node` as a dedicated, non-administrative account with only the filesystem and network permissions required for fleet routing. 7. Document the expected network bindings and recommend restricting the service to loopback or trusted interfaces unless remote fleet access is explicitly required. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

External Script Fetching

High
Category
Supply Chain
Content
```bash
# Models loaded in memory
curl -s http://localhost:11435/api/ps | python3 -m json.tool

# Fleet health
curl -s http://localhost:11435/dashboard/api/health | python3 -m json.tool
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

External Script Fetching

High
Category
Supply Chain
Content
curl -s http://localhost:11435/api/ps | python3 -m json.tool

# Fleet health
curl -s http://localhost:11435/dashboard/api/health | python3 -m json.tool
```

Web dashboard at `http://localhost:11435/dashboard` — live monitoring.
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

External Transmission

Medium
Category
Data Exfiltration
Content
print(response.choices[0].message.content)
```

### curl (Ollama format)

```bash
# Gemma 3 27B
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Description-Behavior Mismatch

Medium
Confidence
94% confidence
Finding
The manifest description frames this skill as specifically for running Gemma 3 across a local device fleet. However, the body of the skill documentation expands the skill's practical scope to unrelated capabilities such as other model families, image generation, transcription, and embeddings, which materially exceeds the stated Gemma-focused purpose.

External Transmission

Medium
Category
Data Exfiltration
Content
### Image generation
```bash
curl -o image.png http://localhost:11435/api/generate-image \
  -d '{"model": "z-image-turbo", "prompt": "a gemstone catching light", "width": 1024, "height": 1024}'
```
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Intent-Code Divergence

Low
Confidence
71% confidence
Finding
The documentation makes an absolute privacy-oriented claim that all data stays on the user's network. Elsewhere, the skill instructs users to install software from PyPI and references GitHub-hosted documentation, which means the overall skill usage is not purely self-contained or exclusively network-local as stated.

Static analysis

No suspicious patterns detected.