Back to skill

Security audit

RDK X5 Toolchain Quantization

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent RDK X5 toolchain documentation, but it exposes a shared private-registry password and recommends high-impact setup steps without enough integrity safeguards.

Treat this as a Review item before installing. Prefer the public Docker Hub image or obtain your own vendor credentials instead of using the embedded password, verify SDK archives and container images with trusted checksums or digests, and run the toolchain in a disposable or tightly scoped environment with minimal mounted directories. Avoid adding your account to the docker group unless you understand the persistent privilege impact.

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

Hardcoded Shared Container Registry Credential

Content
View full analysis

Vulnerability Details

File Location: references/setup.md, lines 44–49
Vulnerability Type: Hardcoded plaintext credential and insecure command-line secret handling
Risk Level: Critical

Vulnerable Code

bash
### Docker image — Method A: D-Robotics private registry (recommended)

Log in to the official registry:

docker login -u 'ccr$deliver-ronly' registry.d-robotics.cc -p 'VLaeatrjF9yGf6I44trT74zKhUpZSVlr'

Technical Analysis

The documentation embeds a reusable registry username and password directly in the Skill package. Anyone who can read the project can recover and reuse the credential without needing access to a separate secret-management system.

The password is also supplied through the docker login -p command-line argument. Depending on the operating system and shell configuration, this can expose it through:

  • Shell history files
  • Process inspection utilities
  • Terminal transcripts
  • CI/CD logs
  • Command auditing and telemetry
  • Copied documentation or support messages

Even if the account is intended to be read-only, publishing a shared credential removes accountability and allows unrestricted use within the permissions assigned to that account.

Attack Path

  1. An attacker obtains the Skill package or reads references/setup.md.
  2. The attacker extracts the embedded registry username and password.
  3. The attacker authenticates to registry.d-robotics.cc using the disclosed credential.
  4. The attacker enumerates or downloads any images and metadata accessible to that account.
  5. If the credential has broader permissions than documented, the attacker may access additional private repositories or perform other registry operations.
  6. Continued use of the same credential by legitimate users makes attribution and revocation difficult.

Impact Assessment

The attacker obtains the registry privileges assigned to ccr$deliver-ronly. The exact scope cannot b ...[truncated 459 chars]

Remediation
View remediation

Remediation Suggestions

  1. Immediately revoke and rotate the exposed registry credential.

  2. Remove both the username and password from the Skill, its version history, published archives, caches, and generated documentation.

  3. Require users to obtain individual, narrowly scoped credentials through an authenticated vendor process.

  4. Avoid command-line password arguments. Use standard input instead:

    bash
    printf '%s' "$D_ROBOTICS_REGISTRY_PASSWORD" |
      docker login \
        --username "$D_ROBOTICS_REGISTRY_USERNAME" \
        --password-stdin \
        registry.d-robotics.cc
    
  5. Store credentials in an approved secret manager, operating-system keychain, or CI/CD secret facility.

  6. Configure a Docker credential helper so authenticated tokens are not stored unencrypted in Docker configuration files.

  7. Apply least privilege, short token lifetimes, per-user identities, access logging, and automated rotation.

  8. Review registry access logs for unauthorized use of the disclosed credential.

  9. Add secret scanning to repository and release pipelines to prevent future plaintext credential publication.

T08 · Insecure Dependencies

Error
Location
references/setup.md:24
Finding

Remote Software Loaded and Executed Without Integrity Verification

Content
View full analysis

Vulnerability Details

File Location: references/setup.md, lines 24–29, 73–82, and 124–131
Vulnerability Type: Unverified third-party archive, container image, and installer execution
Risk Level: High

Vulnerable Code

bash
# SDK
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
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
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 setup process downloads remote archives and then loads or executes their contents without verifying a cryptographic checksum, digital signature, software provenance record, or immutable container digest.

HTTPS protects data in transit under normal conditions, but it does not independently establish that the downloaded artifact is the exact release reviewed and approved by the user. The effective payload can change if the remote object, hosting account, registry tag, DNS infrastructure, certificate trust path, or upstream release process is compromised.

Running bash install.sh executes code from the downloaded archive on the host. Loading a container archive places unverified images into the local Docker trust boundary; those images execute code when subsequently started. Docker access commonly provides security-sensitive host capabilities, especially when host directories are mounted into the container.

Attack Path

  1. An attacker compromises t ...[truncated 1501 chars]
Remediation
View remediation

Remediation Suggestions

  1. Publish trusted SHA-256 or stronger checksums for every downloadable archive and require verification before extraction or loading:

    bash
    wget https://trusted.example/releases/toolchain.tar.gz
    echo 'EXPECTED_SHA256  toolchain.tar.gz' | sha256sum --check -
    
  2. Prefer vendor-signed release manifests and verify signatures using a separately distributed, pinned public key.

  3. Pin container images by immutable digest rather than relying only on mutable tags:

    bash
    docker pull repository/image@sha256:EXPECTED_DIGEST
    
  4. For offline images, verify both the archive checksum and the loaded image digest.

  5. Fail closed when verification fails; do not present checksum verification as optional.

  6. Inspect installer contents before execution and avoid directly invoking unreviewed scripts.

  7. Run installation and conversion workloads with the least privileges necessary.

  8. Use a disposable virtual machine or sandbox for proprietary toolchains, and mount project directories read-only whenever possible.

  9. Avoid exposing Docker sockets, SSH keys, home directories, or unrelated host paths to the toolchain container.

  10. Record artifact version, checksum, signature status, and image digest in build logs or a software bill of materials.

  11. Add automated dependency provenance and integrity checks to CI/CD pipelines.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (18)

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The document exposes a plaintext private-registry username and password directly in setup instructions. Even if the credential came from an official delivery channel, embedding reusable secrets in a broadly shared skill materially increases the chance of unauthorized registry access, credential abuse, scraping, and downstream supply-chain compromise.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

Publishing a plaintext registry password without warnings about sensitivity, storage, reuse, or rotation normalizes unsafe secret handling and facilitates direct credential leakage. In a toolchain/setup context, this is especially dangerous because compromise of the registry can enable distribution of malicious images or unauthorized artifact access.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file contains user-facing instructional content and the title at L001 shows the skill documentation is presented only in Chinese. Under the policy rule for natural-language violations, forcing a specific language without user opt-in can exclude users and violates language/locale choice expectations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

This markdown file presents the skill guidance entirely in Chinese from the title onward, with no indication that users may choose another language or that the locale restriction is optional. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file is natural-language documentation, and its title, body text, and examples are all presented exclusively in Chinese. Under the policy rule, forcing a specific language without giving the user a language or locale choice is a language-policy violation unless the locale restriction is explicitly justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
78% confidence
Finding

The file presents the setup instructions entirely in Chinese and labels the document as the Chinese environment installation guide, but does not indicate that language selection is optional in this skill context. The policy requires avoiding forced language or locale constraints unless the tool offers user choice or clearly documents a justified region-specific limitation.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · references/setup.md (reported line 199)May include surrounding context.

  • 使用 GPU 镜像时还需安装 NVIDIA Container Toolkit 1.13.1~1.13.5(推荐 1.13.5)
  • 把当前用户加入 docker 组:
    bash
    sudo groupadd docker
    sudo gpasswd -a ${USER} docker
    sudo service docker restart
    

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · references/setup.md (reported line 200)May include surrounding context.

  • 使用 GPU 镜像时还需安装 NVIDIA Container Toolkit 1.13.1~1.13.5(推荐 1.13.5)
  • 把当前用户加入 docker 组:
    bash
    sudo groupadd docker
    sudo gpasswd -a ${USER} docker
    sudo service docker restart
    

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · references/setup.md (reported line 201)May include surrounding context.

  • 使用 GPU 镜像时还需安装 NVIDIA Container Toolkit 1.13.1~1.13.5(推荐 1.13.5)
  • 把当前用户加入 docker 组:
    bash
    sudo groupadd docker
    sudo gpasswd -a ${USER} docker
    sudo service docker restart
    

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file title and the entire troubleshooting guidance are written in Chinese, and there is no indication that users may choose another language or that the skill is intentionally limited to a Chinese-only audience. Under the policy, forcing a specific language without user opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The title and the entire document are presented exclusively in Chinese, which imposes a specific language on users. Under the stated policy, language constraints should either offer user choice or be clearly justified as region-specific; no such opt-in or justification is given here.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.