← Back to CVE Explorer

CVE-2026-62847

Full vulnerability record from the local CVENow database.

Description

Metalama is a Roslyn-based open-source patterns and architecture toolkit for C#. Prior to 2025.1.18, 2026.0.25 and 2026.1.19, Metalama.Framework and Metalama.Tool load and execute compile-time assemblies, auxiliary executable tools and embedded helper assemblies from predictable temporary directories. On `Linux` and `macOS`, the default `Path.GetTempPath()` location is world-writable, and existing artifacts are trusted based on sentinel or `.completed` marker files rather than integrity verification. A local unprivileged user on a shared machine or CI/build agent can pre-create the deterministic directory structure and plant a malicious DLL with the matching sentinel. When a higher-privileged developer or build account subsequently builds, Metalama skips regeneration and executes the planted artifact in the compiler, IDE or MSBuild process as the building user. This permits cross-user privilege escalation, reading source and secrets, supply-chain tampering with build output, or disrupting builds. Default Windows per-user temporary directories are protected by ACLs and are not affected. Deployer-selected insecure cache locations are outside the vulnerability's scope. This issue is fixed in versions 2025.1.18, 2026.0.25 and 2026.1.19.

Severity
HIGH
CVSS score
8.2 (v3.1)
Vulnerability status
Received
Source identifier
Published
2026-10-30 21:17:13.807000
Last modified
2026-10-30 21:17:13.807000
View original CVE JSON
{
  "id": "CVE-2026-62847",
  "sourceIdentifier": "[email protected]",
  "published": "2026-10-30T21:17:13.807",
  "lastModified": "2026-10-30T21:17:13.807",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Metalama is a Roslyn-based open-source patterns and architecture toolkit for C#. Prior to 2025.1.18, 2026.0.25 and 2026.1.19, Metalama.Framework and Metalama.Tool load and execute compile-time assemblies, auxiliary executable tools and embedded helper assemblies from predictable temporary directories. On `Linux` and `macOS`, the default `Path.GetTempPath()` location is world-writable, and existing artifacts are trusted based on sentinel or `.completed` marker files rather than integrity verification. A local unprivileged user on a shared machine or CI/build agent can pre-create the deterministic directory structure and plant a malicious DLL with the matching sentinel. When a higher-privileged developer or build account subsequently builds, Metalama skips regeneration and executes the planted artifact in the compiler, IDE or MSBuild process as the building user. This permits cross-user privilege escalation, reading source and secrets, supply-chain tampering with build output, or disrupting builds. Default Windows per-user temporary directories are protected by ACLs and are not affected. Deployer-selected insecure cache locations are outside the vulnerability's scope. This issue is fixed in versions 2025.1.18, 2026.0.25 and 2026.1.19."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "metalama",
          "product": "Metalama",
          "versions": [
            {
              "version": "< 2025.1.18",
              "status": "affected"
            },
            {
              "version": ">= 2025.2.0-preview, <= 2025.2.5-rc",
              "status": "affected"
            },
            {
              "version": ">= 2026.0.0-preview, < 2026.0.25",
              "status": "affected"
            },
            {
              "version": ">= 2026.1.0-preview, < 2026.1.19",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H",
          "baseScore": 8.2,
          "baseSeverity": "HIGH",
          "attackVector": "LOCAL",
          "attackComplexity": "LOW",
          "privilegesRequired": "LOW",
          "userInteraction": "REQUIRED",
          "scope": "CHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 1.5,
        "impactScore": 6.0
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Primary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-377"
        },
        {
          "lang": "en",
          "value": "CWE-427"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/metalama/Metalama/commit/09911349a916e82194b1cfaa6d0a38acad928fc9",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/metalama/Metalama/commit/92c4feecfce86d18fcb007ab6d3a1b4383326a2e",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/metalama/Metalama/pull/1650",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/metalama/Metalama/releases/tag/release/2025.1.18",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/metalama/Metalama/releases/tag/release/2026.0.25",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/metalama/Metalama/releases/tag/release/2026.1.19",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/metalama/Metalama/security/advisories/GHSA-m6wq-39m7-9xpp",
      "source": "[email protected]"
    }
  ]
}