Back to skill

Security audit

Gowok

Security checks for vulnerabilities and agentic risk

Overview

This is a documentation-only Gowok skill with no executable payload, though its configuration examples should be used carefully because they may expose secrets if copied into logs.

Before installing or using this skill, treat its configuration-printing examples as unsafe for real projects. Do not log full `gowok.Config` or `gowok.Config.Map()` when configs contain `security.secret`, SQL DSNs, API keys, passwords, or other sensitive values; prefer redacted diagnostics and keep production secrets in environment variables or a secret manager.

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

Warning
Location
references/configuration.md:37
Finding
Documentation Encourages Logging Sensitive Configuration Values## Vulnerability Details **File Location**: `references/configuration.md`, lines 37–60 **Vulnerability Type**: Sensitive information exposure through configuration logging **Risk Level**: Medium ### Vulnerable Code Snippet ```markdown * `security` * `secret` (string) - Random secret used for encrypt or hash actions, like JWT creation, password hash salt, etc. * `sql` * $name (string) - Any text will used for connection name. * `enabled` (bool, default: false) - It will make this SQL connection active or not. * `driver` (string) - Define driver that used to interact to SQL server. * `dsn` (string) - Connection string that used to connect to SQL server. This format depends on driver used. * `others` * $key (string) : $value (string) ## Reading To read configuration values, you can use this: ```go fmt.Println( gowok.Config, ) ``` This shows object of configuration that serialized into `gowok.Config` struct. If you want something raw, use this: ```go fmt.Println( gowok.Config.Map(), ) ``` ``` ### Technical Analysis The documentation defines configuration fields that may contain highly sensitive material, including the `security.secret` value used for JWT creation or password hashing and SQL DSNs that commonly contain database usernames, passwords, hostnames, and database names. The same document then recommends printing either the complete configuration structure or its raw map representation. If these examples are followed in an application, all configuration fields may be written to standard output without redaction. Standard output is frequently captured by CI/CD systems, container runtimes, process supervisors, cloud logging services, and centralized observability platforms. This is an insecure coding and documentation practice because it encourages broad serialization of an object known to contain secrets. The project contents reviewed during ...[truncated 1770 chars]
Remediation
## Remediation Suggestions 1. Remove examples that print the complete `gowok.Config` object or its raw map representation. 2. Replace them with examples that access and print only explicitly non-sensitive fields, such as the configured web host: ```go fmt.Println(gowok.Config.Web.Host) ``` 3. Provide a redacted diagnostic representation that masks at least: - `security.secret` - SQL DSNs - Passwords and password-like fields - API keys and tokens - Private keys and connection credentials 4. Ensure any `String`, serialization, debugging, or logging implementation for the configuration type applies redaction by default. 5. Warn users not to print raw configuration in production, CI/CD jobs, support bundles, or centralized logs. 6. Recommend loading production secrets from environment variables or a dedicated secret manager rather than storing them in a general-purpose YAML file. 7. Recommend restrictive file permissions for local configuration files and least-privilege access to application logs. 8. Add tests that verify sensitive configuration values never appear in redacted diagnostic output.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (2)

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The documentation defines a `security.secret` configuration field used for sensitive operations such as JWT creation and password-hash salting, but gives no guidance on secure generation, storage, rotation, or avoiding disclosure. In a framework/project-starter context, developers are likely to copy this directly into plaintext config files, which can lead to credential compromise if configs are logged, committed, or exposed.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The documentation explicitly shows printing `gowok.Config` and `gowok.Config.Map()` without any warning that these structures may include secrets such as `security.secret` and SQL DSNs. This normalizes unsafe debugging practices and can cause sensitive values to be written to logs, consoles, CI output, or monitoring systems where they may be harvested.

Static analysis

No suspicious patterns detected.