Skip to content

Security: VMM no_tee flag allows launching VMs without TDX protection #614

Closed

Description

@kvinwang

Note: This issue documents a vulnerability that was originally reported privately as the repository security advisory GHSA-25qw-5f44-vf8w by @pbeza.

Root Cause

The VMM supports a no_tee=true configuration flag that launches QEMU without the confidential-guest-support=tdx option. When this flag is set, the VM runs as a regular (non-confidential) VM — the host has full access to guest memory. The guest OS has no mechanism to detect that it's running without TDX hardware protection.

Attack Path

  1. Malicious host operator sets no_tee=true in the VMM configuration
  2. VM launches without TDX confidential computing protection
  3. Host operator reads guest memory directly (no hardware isolation)
  4. All keyshares, triples, presignatures, and P2P keys in memory are exposed
  5. Guest OS and MPC node have no way to detect the absence of TDX
  6. Note: TDX attestation would fail since no TDX hardware is present, but if the KMS has quote_enabled=false (F12003), keys are still provisioned

Impact

Complete loss of confidentiality. Without TDX, the host has unrestricted access to all guest memory. This defeats the entire purpose of running MPC nodes in TEEs.

Suggested Fix

  1. Gate no_tee behind a compile-time feature flag that is never enabled in production builds
  2. Inside the guest, verify TDX is active by checking X86_FEATURE_TDX_GUEST CPU feature at application startup
  3. The MPC node should call CPUID to confirm TDX guest mode before processing any key material

Note: This finding was reported automatically as part of an AI/Claude-driven internal audit by the NEAR One MPC team. It has not been manually verified by a human to confirm whether it constitutes an actual security issue.

Activity

  1. kvinwang commented on Mar 27, 2026

    @kvinwang
    CollaboratorAuthor

    Maintainer response (copied from private security advisory GHSA-25qw-5f44-vf8w):

    Thanks for the report, but this is not a security vulnerability.

    no_tee is a development/testing flag that is self-limiting by design.

    When no_tee=true is set, the VM runs without TDX hardware protection. However, this means the VM cannot produce valid TDX attestation quotes. Without a valid quote, the CVM cannot:

    • Authenticate with the KMS (RA-TLS requires a valid quote)
    • Register with the gateway
    • Obtain any key material

    In other words, a no_tee VM is functionally isolated from all production infrastructure — it cannot participate in the dstack trust chain. There is nothing to compromise because no secrets are ever provisioned to it.

    The report's attack path acknowledges this at step 6, noting it only works if the KMS also has quote_enabled=false. Stacking two development-only configurations does not constitute a production vulnerability — it simply means someone is running a local test environment, which is exactly the intended use case.

  2. added
    securitySecurity-related issue, report, or hardening work
    security: reportPublic security report or already-public security finding
    security: not-production-vulnDoes not compromise supported production deployments under the documented threat model
    on Jun 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    securitySecurity-related issue, report, or hardening worksecurity: not-production-vulnDoes not compromise supported production deployments under the documented threat modelsecurity: reportPublic security report or already-public security finding

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions