T09 · Insecure Skill Coding Practices
- Location
scripts/yunxiao_flow_get_pipeline_runs.py:87- Finding
Yunxiao Personal Access Token Can Be Sent to an Arbitrary Host
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is mostly a Yunxiao pipeline troubleshooting tool, but it includes under-scoped remote terminal access and credential-handling weaknesses that users should review carefully.
Install only if you are comfortable granting the skill access to Yunxiao pipeline logs and, in debug cases, a live build-container terminal. Use a least-privilege read-only PAT, only use trusted Yunxiao domains and terminal URLs, avoid displaying secret-bearing files, and treat any suggested shell command or cache deletion as requiring explicit review.
scripts/yunxiao_flow_get_pipeline_runs.py:87Yunxiao Personal Access Token Can Be Sent to an Arbitrary Host
scripts/webTerminal.py:31Web Terminal Disables TLS Verification and Trusts an Unrestricted Hostname
scripts/webTerminal.py:116Remote Terminal Command Allowlist Can Be Bypassed with Shell Syntax
references/flow_build_java.md:37Troubleshooting Instructions Can Print Repository Credentials from Build Configuration
references/flow_build_python.md:32Python Dependencies Are Recommended for Installation over Plaintext HTTP
references/flow_build_docker.md:72Forced Global BuildKit Cache Deletion Is Recommended Without Scope or Confirmation
The manifest presents the skill as read-only troubleshooting, but the documented behavior includes a remote WebSocket terminal and interactive shell access into an execution environment. That mismatch is dangerous because operators may authorize the skill expecting passive log analysis while it actually enables remote command execution, materially expanding attack surface and potential for misuse.
The manifest presents the skill as read-only troubleshooting, but the documented behavior includes a remote WebSocket terminal and interactive shell access into an execution environment. That mismatch is dangerous because operators may authorize the skill expecting passive log analysis while it actually enables remote command execution, materially expanding attack surface and potential for misuse.
The manifest presents the skill as read-only troubleshooting, but the documented behavior includes a remote WebSocket terminal and interactive shell access into an execution environment. That mismatch is dangerous because operators may authorize the skill expecting passive log analysis while it actually enables remote command execution, materially expanding attack surface and potential for misuse.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| Environment Variable | Description | Required |
|---------------------|-------------|----------|
| YUNXIAO_ACCESS_TOKEN | Yunxiao Personal Access Token (format: `pt-xxx`) | Yes |
## Authentication
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| Environment Variable | Description | Required |
|---------------------|-------------|----------|
| YUNXIAO_ACCESS_TOKEN | Yunxiao Personal Access Token (format: `pt-xxx`) | Yes |
## Authentication
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| Environment Variable | Description | Required |
|---------------------|-------------|----------|
| YUNXIAO_ACCESS_TOKEN | Yunxiao Personal Access Token (format: `pt-xxx`) | Yes |
## Authentication
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| Environment Variable | Description | Required |
|---------------------|-------------|----------|
| YUNXIAO_ACCESS_TOKEN | Yunxiao Personal Access Token (format: `pt-xxx`) | Yes |
## Authentication
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| Environment Variable | Description | Required |
|---------------------|-------------|----------|
| YUNXIAO_ACCESS_TOKEN | Yunxiao Personal Access Token (format: `pt-xxx`) | Yes |
## Authentication
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| Environment Variable | Description | Required |
|---------------------|-------------|----------|
| YUNXIAO_ACCESS_TOKEN | Yunxiao Personal Access Token (format: `pt-xxx`) | Yes |
## Authentication
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| Environment Variable | Description | Required |
|---------------------|-------------|----------|
| YUNXIAO_ACCESS_TOKEN | Yunxiao Personal Access Token (format: `pt-xxx`) | Yes |
## Authentication
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| Environment Variable | Description | Required |
|---------------------|-------------|----------|
| YUNXIAO_ACCESS_TOKEN | Yunxiao Personal Access Token (format: `pt-xxx`) | Yes |
## Authentication
Referenced artifact was not completely inspected
| [flow_variables.md](references/flow_variables.md) | Pipeline variable configuration |
The debug-mode guidance encourages the analyst/operator to proceed with interactive machine access and live command execution as part of normal troubleshooting. In security terms, this weakens safe refusal boundaries by normalizing direct operational access to a privileged environment, which can be abused for unauthorized inspection, modification, or disruption of pipeline assets.
Job workspace must be obtained from the `PROJECT_DIR` in the Pipeline Cache step
## terminalUrl
If the job has debug mode enabled (i.e., the debugPolicy field in the job's params object is not none), you can request the terminalUrl from the user to log into the build machine and execute shell commands to troubleshoot issues and verify solutions. Since the terminalUrl link has a time limit, use `webTerminal.py` to connect first before troubleshooting or solution verification.
**Note**: Executing any upload commands is prohibited. Every command executed and its results must be displayed. Execute `exit` to quit when troubleshooting is complete. Commands need a newline character \n to trigger execution.
The wording around debug mode and immediate use of webTerminal.py encourages the agent/operator to proceed with interactive troubleshooting rather than maintaining normal safety boundaries. While not overtly malicious, this pushes toward bypassing safer, passive analysis modes and can pressure downstream systems or operators into executing commands in a sensitive environment.
Job workspace must be obtained from the `PROJECT_DIR` in the Pipeline Cache step
## terminalUrl
If the job has debug mode enabled (i.e., the debugPolicy field in the job's params object is not none), you can request the terminalUrl from the user to log into the build machine and execute shell commands to troubleshoot issues and verify solutions. Since the terminalUrl link has a time limit, use `webTerminal.py` to connect first before troubleshooting or solution verification.
**Note**: Executing any upload commands is prohibited. Every command executed and its results must be displayed. Execute `exit` to quit when troubleshooting is complete. Commands need a newline character \n to trigger execution.
## Maven Build Information
The document discusses inspecting /root/.npmrc during builds, and .npmrc files commonly contain registry credentials or auth tokens. Telling an agent to access or display that file creates a realistic credential exposure path, especially in CI environments where tokens are often provisioned automatically.
## npm/pnpm/cnpm Build Information
1. During `npm/pnpm/cnpm` build, it references `/root/.npmrc` by default. If there is an `npmrc` file in the current directory, the current directory's `npmrc` file takes priority.
2. The `Configure .npmrc File` pipeline step downloads the `npmrc` file from the pipeline global configuration. The file should be downloaded to `/root/.npmrc` (recommended), or to the directory where the build command is executed.
3. If the build fails, you can view the `.npmrc` used during the build via the `cat` command.
Referring to /root/.npmrc in conjunction with viewing it during troubleshooting increases the likelihood of accessing a privileged user's credential file. Because this is in a CI/build context, the file may contain organization-wide package registry credentials with meaningful reuse value.
## npm/pnpm/cnpm Build Information
1. During `npm/pnpm/cnpm` build, it references `/root/.npmrc` by default. If there is an `npmrc` file in the current directory, the current directory's `npmrc` file takes priority.
2. The `Configure .npmrc File` pipeline step downloads the `npmrc` file from the pipeline global configuration. The file should be downloaded to `/root/.npmrc` (recommended), or to the directory where the build command is executed.
3. If the build fails, you can view the `.npmrc` used during the build via the `cat` command.
## Job Working Directory
Referring to /root/.npmrc in conjunction with viewing it during troubleshooting increases the likelihood of accessing a privileged user's credential file. Because this is in a CI/build context, the file may contain organization-wide package registry credentials with meaningful reuse value.
## npm/pnpm/cnpm Build Information
1. During `npm/pnpm/cnpm` build, it references `/root/.npmrc` by default. If there is an `npmrc` file in the current directory, the current directory's `npmrc` file takes priority.
2. The `Configure .npmrc File` pipeline step downloads the `npmrc` file from the pipeline global configuration. The file should be downloaded to `/root/.npmrc` (recommended), or to the directory where the build command is executed.
3. If the build fails, you can view the `.npmrc` used during the build via the `cat` command.
## Job Working Directory
The guidance continues to normalize handling .npmrc in the build command directory, which may still contain plaintext tokens or scoped registry credentials. Even when not under /root, directing agents to inspect such files can leak secrets into logs or conversation transcripts.
## npm/pnpm/cnpm Build Information
1. During `npm/pnpm/cnpm` build, it references `/root/.npmrc` by default. If there is an `npmrc` file in the current directory, the current directory's `npmrc` file takes priority.
2. The `Configure .npmrc File` pipeline step downloads the `npmrc` file from the pipeline global configuration. The file should be downloaded to `/root/.npmrc` (recommended), or to the directory where the build command is executed.
3. If the build fails, you can view the `.npmrc` used during the build via the `cat` command.
## Job Working Directory
Job workspace must be obtained from the `PROJECT_DIR` in the Pipeline Cache step
The debug-mode guidance normalizes logging into the build machine and using webTerminal.py as part of the expected workflow, which can pressure an agent to bypass ordinary caution around remote command execution. Although it does not explicitly say to ignore safety policies, it encourages operational behavior that weakens refusal boundaries for risky actions.
Job workspace must be obtained from the `PROJECT_DIR` in the Pipeline Cache step
## terminalUrl
If the job has debug mode enabled (i.e., the debugPolicy field in the job's params object is not none), you can request the terminalUrl from the user to log into the build machine and execute shell commands to troubleshoot issues and verify solutions. Since the terminalUrl link has a time limit, use `webTerminal.py` to connect first before troubleshooting or solution verification.
**Note**: Executing any upload commands is prohibited. Every command executed and its results must be displayed. Execute `exit` to quit when troubleshooting is complete. Commands need a newline character \n to trigger execution.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
## Common Issues
### error An unexpected error occurred "xxxxxxxx" No module found
1. First ask if the dependencies are stored in a private repository. If they are private repository dependencies, you need to configure `/root/.npmrc`, or configure `.npmrc` in the directory where the build command is executed.
### Installing Node version reports specified version not found
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
## Common Issues
### error An unexpected error occurred "xxxxxxxx" No module found
1. First ask if the dependencies are stored in a private repository. If they are private repository dependencies, you need to configure `/root/.npmrc`, or configure `.npmrc` in the directory where the build command is executed.
### Installing Node version reports specified version not found
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
## Common Issues
### error An unexpected error occurred "xxxxxxxx" No module found
1. First ask if the dependencies are stored in a private repository. If they are private repository dependencies, you need to configure `/root/.npmrc`, or configure `.npmrc` in the directory where the build command is executed.
### Installing Node version reports specified version not found
The documented purpose is troubleshooting deployment failures, but the instructions authorize logging into build machines and executing shell commands without establishing strict necessity, scope limits, or safety controls. This creates a privilege/capability mismatch where an analysis skill can perform operational actions on hosts, increasing the risk of unintended changes, data access, or abuse.
The debug-mode section encourages proceeding with terminal access and troubleshooting actions when the relevant condition is met, which acts as anti-refusal pressure around a sensitive capability. Although not overtly malicious, this framing reduces safety friction and can push an agent toward executing risky remote actions instead of stopping for stronger authorization or safer alternatives.
Job workspace must be obtained from the `PROJECT_DIR` in the Pipeline Cache step
## terminalUrl
If the job has debug mode enabled (i.e., the debugPolicy field in the job's params object is not none), you can request the terminalUrl from the user to log into the build machine and execute shell commands to troubleshoot issues and verify solutions. Since the terminalUrl link has a time limit, use `webTerminal.py` to connect first before troubleshooting or solution verification.
**Note**: Executing any upload commands is prohibited. Every command executed and its results must be displayed. Execute `exit` to quit when troubleshooting is complete. Commands need a newline character \n to trigger execution.
## Troubleshooting Steps
The skill explicitly instructs the agent to obtain a terminal URL, log into a build machine, and execute shell commands for troubleshooting. That expands a diagnostic/documentation skill into an operational remote-access capability, creating risk of command execution on customer infrastructure, exposure of secrets in the build environment, and unintended system modification even if uploads are forbidden.
Detected: suspicious.exposed_secret_literal, suspicious.generated_source_template_injection, suspicious.insecure_tls_verification