Back to skill

Security audit

Gno.Bak 2026 01 28T18:01:20+10:30

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent local document search tool, but it needs review because its documented web UI and assistant-integration commands can expose or persist access to indexed local documents without enough safety guidance.

Review before installing. Index only folders you intend GNO and connected assistants to read, run the web UI on 127.0.0.1 unless you deliberately want network access, use dry-run/status commands before MCP or skill installation, avoid --force and --enable-write unless needed, and understand whether AI answering or model downloads touch external resources in your environment.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Error
Location
cli-reference.md:466
Finding

Web UI Exposes Indexed Local Documents on All Network Interfaces by Default

Content
View full analysis

Vulnerability Details

File Location: cli-reference.md:466-479
Vulnerability Type: Unsafe default network binding without documented access controls
Risk Level: High

Vulnerable Code Snippet

markdown
## Web UI

### gno serve

Start web UI for browsing, searching, and querying documents.

```bash
gno serve [options]
OptionDefaultDescription
-p, --port3000Port to serve on
--host0.0.0.0Host to bind

Features: Dashboard, search, browse collections, document viewer, AI Q&A with citations.

text

### Technical Analysis

The documented default host is `0.0.0.0`, which causes the web server to listen on every available network interface rather than only the loopback interface. The application provides search, collection browsing, document viewing, and AI-assisted querying over indexed local documents.

No authentication, authorization, TLS requirement, origin restriction, or warning about remote exposure is documented. Consequently, running the command with its defaults may expose indexed private documents to any system that can reach TCP port 3000. The affected implementation is not included in the audited package, so the presence or absence of undocumented runtime protections could not be verified.

### Attack Path

1. A user adds a directory containing private or sensitive documents to a GNO collection.
2. The user indexes those documents with `gno index`.
3. The user starts the web interface using `gno serve` without overriding the host.
4. The service binds to `0.0.0.0:3000`, making it reachable through all host network interfaces.
5. A network-adjacent attacker identifies the open port and connects to the web interface.
6. If no runtime access control exists, the attacker searches, browses, views, or queries indexed documents through the exposed interface.

### Impact Assessment

A successful attack could disclose any content access
...[truncated 537 chars]
Remediation
View remediation

Remediation Suggestions

  1. Change the default bind address from 0.0.0.0 to 127.0.0.1 and, where applicable, ::1.
  2. Require users to explicitly opt into non-loopback binding, such as with --host 0.0.0.0.
  3. Display a prominent warning and require confirmation whenever the server binds to a non-loopback address.
  4. Require strong authentication and authorization for remote access, with access scoped by collection and operation.
  5. Protect non-loopback deployments with TLS, secure session handling, request throttling, and appropriate origin controls.
  6. Document firewall requirements and recommend restricting port 3000 to explicitly trusted clients.
  7. Avoid exposing document viewing or full-content retrieval to anonymous users.
  8. Add automated tests verifying that the default listener is loopback-only and that remote deployments reject unauthenticated requests.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (15)

Self-Modification

High
Category
Rogue Agent
Confidence
88% confidence
Finding

The --force option to overwrite existing client configuration is a self-modifying/integration capability that can replace prior assistant or MCP settings. In an agent skill, this is dangerous because it enables persistent environmental changes rather than mere read-only document retrieval, increasing the risk of unintended reconfiguration.

Content

Scanner excerpt · cli-reference.md (reported line 432)May include surrounding context.

md
| -------------- | -------------- | ------------------------------------------------ |
| `-t, --target` | claude-desktop | Target: `claude-desktop`, `claude-code`, `codex` |
| `-s, --scope`  | user           | Scope: `user`, `project`                         |
| `-f, --force`  | false          | Overwrite existing config                        |
| `--dry-run`    | false          | Preview changes                                  |

Examples:

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · examples.md (reported line 279)May include surrounding context.

md
gno tags add gno://work/readme.md project/api

# Remove tag
gno tags rm gno://work/readme.md draft

# Tags in frontmatter are extracted automatically
cat myfile.md

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The description says to use the skill when the user wants to 'look up information in local folders' or 'set up document search,' which are broad phrases that can overlap with many everyday requests. It does not provide exclusion conditions or negative examples to clarify when this skill should not activate versus other file-search or knowledge tools.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Several bullets use generic intents like 'find information,' 'search files,' and 'set up MCP,' which are broad enough to collide with common user requests outside this skill's intended scope. The section lists positive examples only and does not define exclusions, required context, or disambiguation criteria.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The CLI reference exposes installation and configuration-changing capabilities such as MCP and skill installation that go beyond the skill’s stated purpose of local document search and knowledge-base use. In an agent-skill context, undocumented or unjustified side-effecting operations expand the trust boundary and may cause the assistant to alter host or client configuration when the user only expected search functionality.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

Assistant/MCP installation features allow the tool to integrate itself into external clients and modify their configuration, which is not justified by the advertised document-search role. This mismatch matters because agents may treat the skill as low-risk retrieval tooling while it also contains persistence or integration pathways affecting other systems.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

gno mcp install is documented as installing into client configurations and even supports overwrite via --force, but the reference does not clearly warn that it modifies user or project config files. In assistant-driven contexts, omission of this warning increases the risk of silent or poorly understood configuration changes to developer tools.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The Web UI binds to 0.0.0.0 by default, exposing the service on all network interfaces, yet the reference does not warn users about remote reachability. For a document-search tool that may index sensitive local files, this can unintentionally expose search, browsing, and AI Q&A over the network.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

gno skill install modifies AI assistant skill/configuration files, but the documentation does not prominently disclose the side effects or scope of those changes. Because the skill is used in an agent ecosystem, silent installation behavior can alter assistant behavior or persistence without the operator fully understanding what changed.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documented gno reset [--force] command deletes all GNO data, including database, embeddings, and config, but this destructive administrative capability is not reflected in the skill’s user-facing purpose. In a skill intended for document discovery, inclusion of a wipe command increases the chance an assistant could recommend or invoke a destructive action outside user expectations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The examples encourage AI-generated answers without warning that user prompts and retrieved document text may be sent to a model, which can expose sensitive local document content unexpectedly. In a local-document search skill, users may reasonably assume all processing stays local unless explicitly told otherwise.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest describes a skill for searching local documents, indexing directories, and providing local document Q&A/web UI. This examples file additionally presents --git-pull workflows and models pull, which imply interacting with remote Git repositories and downloading models, behaviors not reflected in the stated local-document search description.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · mcp-reference.md (reported line 16)May include surrounding context.

Claude Code

gno mcp install -t claude-code

With write tools enabled

gno mcp install --enable-write

text

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The model download example triggers network activity but provides no notice that external downloads will occur. That can surprise users in restricted or privacy-sensitive environments and may violate expectations for a local-search tool.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The manifest frames the skill as a local document search and knowledge-base tool centered on indexing, retrieval, and answering questions. The documented gno tags add and gno tags rm commands modify document metadata/state, a distinct content-management capability not mentioned in the manifest description.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.