T09 · Insecure Skill Coding Practices
Warning
- Location
- signalgrid-push.js:56
- Finding
- Sensitive Notification Content Exposed Through Debug Logging## Vulnerability Details **File Location**: `signalgrid-push.js`, lines 56-58 **Vulnerability Type**: Sensitive data exposure through application logs **Risk Level**: Medium ### Vulnerable Code ```javascript console.log("DEBUG - Raw Process Args:", process.argv); const args = parseArgs(process.argv); console.log("DEBUG - Parsed Args Object:", args); ``` ### Technical Analysis The program writes both the complete process argument array and the parsed argument object to standard output. These structures contain the values supplied through `--title` and `--body`, which may include personal information, infrastructure details, incident data, access-related information, or other confidential notification content. Standard output from a skill may be retained in terminal history, OpenClaw execution logs, CI/CD logs, container logs, or centralized log aggregation systems. This creates an additional, undeclared storage and disclosure channel for notification content. Although the Signalgrid client key is read from the environment and is not included in these statements, the notification title and body are directly exposed. ### Attack Path 1. A user or automated workflow invokes the skill with confidential data in `--title` or `--body`. 2. The skill prints the complete command-line arguments and parsed values to standard output. 3. The execution environment stores or forwards that output to a persistent logging system. 4. A user, service, or compromised logging account with access to those logs retrieves the confidential notification content. No code execution or privilege escalation is obtained directly. Exploitation requires access to the generated logs, but it can disclose every notification processed by the skill. ### Impact Assessment The issue can expose the title and body of notifications to principals that have log access but are not authorized to receive the corresponding push notification. The scope includes all ...[truncated 234 chars]
- Remediation
- ## Remediation Suggestions 1. Remove both debug logging statements from production code: ```javascript const args = parseArgs(process.argv); ``` 2. If diagnostic logging is required, make it explicitly opt-in through a disabled-by-default debug setting. 3. Never log raw argument arrays, notification bodies, credentials, channel identifiers, or complete request payloads. 4. Restrict diagnostics to non-sensitive metadata, such as whether required arguments were supplied or the normalized notification type. 5. Review existing execution and centralized logs for previously recorded notification content, then apply the organization’s retention and deletion procedures where appropriate. 6. Configure production logging systems to redact sensitive fields and enforce least-privilege access to retained logs.
