T09 · Insecure Skill Coding Practices
Error
- Location
- references/READONLY_GATEWAY_BOUNDARIES.md:44
- Finding
- Hard-Coded Gateway and Upstream API Credentials## Vulnerability Details **File Location**: `references/READONLY_GATEWAY_BOUNDARIES.md`, lines 44–48 **Vulnerability Type**: Hard-coded authentication secrets **Risk Level**: Critical ### Vulnerable Code ```md ## Token boundary - `27133` gateway bearer: `arthur-obsidian-readonly-20260312` - `27124` plugin bearer / apiKey: `b9cf98bc7b7e074996691b54243a3154ca7b59e136c780388add760c25c5eeff` - Do not use the gateway token against `27124` - Do not use the `27124` plugin token against `27133` ``` ### Technical Analysis Two live-looking authentication credentials are stored directly in distributable Skill documentation. Any person, agent, backup service, package registry, or source-control user with access to the project can recover and attempt to reuse them. The gateway credential appears to authorize read-only access to the Arthur-OS vault. The upstream credential protects an Obsidian Local REST API service. According to `references/NETWORK_SEARCH_DESIGN_HISTORY.md`, that API can expose note creation, update, deletion, and command execution capabilities. Although the effective permissions depend on the deployed plugin configuration, disclosure of this upstream credential may therefore compromise more than read-only search. Separating the credentials by port does not mitigate disclosure because both credentials and their intended endpoints are documented together. ### Attack Path 1. An attacker obtains the Skill package, a repository checkout, an archive, or a logged copy of this documentation. 2. The attacker extracts the bearer token and API key from lines 45–46. 3. The attacker gains network access to the documented LAN gateway or upstream plugin endpoint. 4. The attacker submits the corresponding credential to port `27133` or `27124`. 5. If the credentials remain valid, the attacker accesses the capabilities exposed by the relevant service. ### Impact Assessment The gateway credential can expose note names, n ...[truncated 447 chars]
- Remediation
- ## Remediation Suggestions 1. Revoke and rotate both disclosed credentials immediately. 2. Remove the credentials from the current repository and all retained history, releases, archives, logs, and mirrored Skill copies. 3. Replace real values in documentation with unambiguous placeholders, such as `GATEWAY_BEARER_TOKEN` and `OBSIDIAN_API_KEY`. 4. Load credentials at runtime from a protected secret manager, operating-system keychain, or environment file excluded from source control. 5. Use distinct, randomly generated, least-privilege credentials for the gateway and upstream service. 6. Ensure the gateway credential grants read-only access and cannot be reused against the upstream plugin. 7. Disable command execution and write operations on the upstream API unless explicitly required. 8. Implement expiration, routine rotation, access logging, rate limiting, and credential-reuse detection. 9. Add automated secret scanning to pre-commit and CI workflows.
