Back to skill

Security audit

RDK X5 Toolchain Quantization

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent for RDK X5 model quantization, but it publishes a reusable private registry credential and asks users to run unverified external toolchain artifacts.

Install only if you are comfortable using third-party D-Robotics toolchain images and SDKs. Prefer the public Docker Hub path that does not require the embedded registry credential, avoid copying the hardcoded password into logs or automation, verify downloaded artifacts independently where possible, and use a dedicated workspace/container rather than mounting sensitive directories.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
references/setup.md:44
Finding
Reusable Container Registry Credential Embedded in Documentation## Vulnerability Details **File Location**: `references/setup.md`, lines 44-50 **Vulnerability Type**: Hardcoded plaintext credential and insecure command-line secret handling **Risk Level**: High ### Vulnerable Code ```bash docker login -u 'ccr$deliver-ronly' registry.d-robotics.cc -p 'VLaeatrjF9yGf6I44trT74zKhUpZSVlr' ``` ### Technical Analysis The Skill embeds a reusable registry username and password directly in distributed documentation. Anyone who can access the project can extract and reuse the credential without authorization from the credential owner. The password is also supplied using Docker's `-p` command-line option. Depending on the environment, this can expose it through: - Shell history - Process inspection - Terminal transcripts - CI/CD logs - Agent execution logs - Copied support or troubleshooting records The document describes this as a shared public-delivery credential, but that does not eliminate the security risk. A shared credential cannot provide effective user attribution, individual revocation, or reliable access auditing. Its disclosure can also disrupt legitimate users if abuse causes the vendor to revoke or rate-limit the account. ### Attack Path 1. An attacker obtains the Skill package or reads a transcript containing `references/setup.md`. 2. The attacker extracts the plaintext username and password. 3. The attacker authenticates to `registry.d-robotics.cc` using the shared account. 4. The attacker enumerates or downloads any resources available to that account. 5. Alternatively, the attacker searches shell history, CI logs, process telemetry, or Agent logs on a system where the command was executed. 6. The attacker continues using the credential until it is rotated or revoked. No evidence establishes write access to the registry. The demonstrated scope is therefore limited to the permissions assigned to the exposed shared account, which appears intended for image deliver ...[truncated 619 chars]
Remediation
## Remediation Suggestions 1. Remove the username and password from the repository and all generated documentation. 2. Ask the registry owner to rotate or revoke the exposed credential immediately. 3. Direct users to obtain individual, least-privilege credentials through the vendor's approved process. 4. Avoid supplying passwords as command-line arguments. Use protected standard input instead: ```bash printf '%s' "$REGISTRY_PASSWORD" | docker login registry.d-robotics.cc \ --username "$REGISTRY_USERNAME" \ --password-stdin ``` 5. Store secrets in an approved secret manager or protected environment variable rather than source files. 6. Configure CI systems to mask registry credentials and prevent command echoing. 7. Prefer short-lived access tokens scoped only to image pulls. 8. Review repository history, published packages, transcripts, and logs for copies of the exposed credential. 9. Enable registry audit logging and investigate use of the shared account after the disclosure date.

T08 · Insecure Dependencies

Warning
Location
references/setup.md:24
Finding
Downloaded Executable Toolchain Artifacts Are Used Without Integrity Verification## Vulnerability Details **File Location**: `references/setup.md`, lines 24-29, 73-82, and 124-135 **Vulnerability Type**: Unverified executable dependency and supply-chain exposure **Risk Level**: Medium ### Vulnerable Code SDK download: ```bash wget https://d-robotics-aitoolchain.oss-cn-beijing.aliyuncs.com/oe_x5/1.2.8/horizon_x5_open_explorer_v1.2.8-py310_20240926.tar.gz ``` Offline container images are downloaded and loaded directly: ```bash # CPU wget https://d-robotics-aitoolchain.oss-cn-beijing.aliyuncs.com/oe_x5/1.2.8/docker_openexplorer_ubuntu_20_x5_cpu_v1.2.8.tar.gz docker load -i docker_openexplorer_ubuntu_20_x5_cpu_v1.2.8.tar.gz # GPU wget https://d-robotics-aitoolchain.oss-cn-beijing.aliyuncs.com/oe_x5/1.2.8/docker_openexplorer_ubuntu_20_x5_gpu_v1.2.8.tar.gz docker load -i docker_openexplorer_ubuntu_20_x5_gpu_v1.2.8.tar.gz ``` The downloaded SDK is extracted and its installer is executed: ```bash tar -xzvf horizon_x5_open_explorer_v1.2.8-py310_20240926.tar.gz cd horizon_x5_open_explorer_v1.2.8-py310/package/host bash install.sh ``` ### Technical Analysis The workflow downloads executable SDK and container artifacts from external infrastructure and then loads or executes them without checking a cryptographic digest or digital signature. HTTPS provides transport protection while the connection is active, but it does not independently prove that the retrieved artifact is the intended vendor release. It does not protect users if: - The vendor distribution account or object storage is compromised - A hosted object is replaced - DNS, certificate, or endpoint trust is compromised - A stale or locally modified archive is executed - The downloaded file is corrupted - The image tag is changed to reference different content The Docker pull examples also use mutable tags rather than immutable image digests. A tag such as `v1.2.8` can point to different image content over time without ...[truncated 2597 chars]
Remediation
## Remediation Suggestions 1. Publish vendor-provided SHA-256 or stronger digests for every downloaded archive. 2. Verify each artifact before extraction, loading, or execution: ```bash echo "$EXPECTED_SHA256 horizon_x5_open_explorer_v1.2.8-py310_20240926.tar.gz" | sha256sum --check - ``` 3. Fail closed if verification does not succeed. 4. Prefer digitally signed release manifests and verify signatures against a pinned vendor public key. 5. Pin container images using immutable digests: ```bash docker pull openexplorer/ai_toolchain_ubuntu_20_x5_cpu@sha256:EXPECTED_DIGEST ``` 6. Record the verified digest in the documentation and release metadata. 7. Inspect archive contents before extraction and reject unsafe paths, unexpected symlinks, or files outside the documented package layout. 8. Review `install.sh` before execution and run it in an isolated, non-privileged environment where practical. 9. Prefer the containerized workflow over host installation, but mount only a dedicated workspace containing the minimum required files. 10. Do not mount the Docker socket, host root, credential directories, SSH keys, or unrelated source trees into the toolchain container. 11. Consider rootless Docker or another sandboxed container runtime. 12. Add provenance information, such as signed SBOM and build attestations, for the SDK and container images.
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 (1)

Missing User Warnings

High
Confidence
99% confidence
Finding
The document embeds a live private registry username and password directly in the setup instructions, which is a clear secret disclosure. Anyone with access to the skill can reuse those credentials to access the private registry, pull proprietary artifacts, or abuse the account until the secret is rotated.

Static analysis

No suspicious patterns detected.