Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
.NET
.NET NuGet
Not in CISA KEV
HIGH severity

CVE-2026-62847 — Metalama.Framework

HIGHFix: metalama/Metalama#1719

CVE-2026-62847 is a high-severity (CVSS 8.2) remote code execution vulnerability in Metalama.Framework. A fix is available for Metalama.Framework — see the affected versions and patch details below.

Metalama allows local code execution through DLL planting in shared temporary directories

Published
Updated
Affected
6 pkgs
Patched
6 / 6
Exploits
None indexed
Exploitation data as of Oct 14, 2026 · OSV.dev, FIRST.org (EPSS)

Real-World Exposure

6 pkgs affected
.NETMetalama.Framework.NETMetalama.Tool.NETMetalama.Framework.NETMetalama.Tool.NETMetalama.Tool.NETMetalama.Framework

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects NuGet packages — download data is not available via public APIs for these ecosystems.

Description

Summary

Metalama loaded and executed compile-time assemblies, auxiliary executable tools, and embedded helper assemblies from predictable temporary directories. On Linux and macOS the default cache location was the world-writable system temporary directory (Path.GetTempPath(), i.e. /tmp), and previously-generated artifacts were trusted based on the presence of a sentinel/.completed marker file rather than on any integrity verification.

A local, unprivileged user on a shared machine or CI/build agent can pre-create the deterministic cache directory structure and plant a malicious DLL together with the matching sentinel file. When a higher-privileged user (or build/service account) subsequently runs a build, Metalama finds the sentinel, skips regeneration, and loads and executes the attacker-supplied assembly inside the compiler / IDE / MSBuild process.

Affected load-and-execute paths:

  • the cache of compile-time assemblies that Metalama generates from your aspects;
  • auxiliary executable tools that Metalama extracts to a local directory and then launches;
  • embedded .NET helper assemblies that Metalama extracts to a local directory and loads into the build / IDE process.

Impact

Arbitrary code execution in the security context of the building user — i.e. a local privilege escalation across user accounts on shared POSIX systems (multi-user developer machines, CI/build agents). The attacker obtains code execution as the victim without holding the victim's privileges, and can read source/secrets, tamper with build output (supply-chain injection), or disrupt builds.

Affected configurations

  • Linux and macOS, default configuration — affected. The shipped default uses the world-writable system temp directory.
  • Windows, default configuration — not affected. The default per-user temporary directory is protected by OS ACLs, so cross-user planting is not possible.
  • The METALAMA_TEMP environment variable is a deployer-controlled override and is out of scope: pointing it at an insecure (e.g. world-writable or attacker-owned) location is a deployment misconfiguration, not a defect in the product.

Severity

CVSS v3.1: AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H = 8.2 (High) for the affected POSIX default configuration (Scope:Changed reflects the cross-user privilege escalation).

CVSS v4.0 cross-check: CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:P/VC:L/VI:H/VA:L/SC:L/SI:H/SA:H = 6.0 (Medium), which more granularly attributes low impact to the cache itself and high impact to the subsequent build process. The honest range is therefore Medium-High depending on the scoring model and platform.

Fix

Caches and extraction directories were relocated from the world-writable system temp directory to per-user application-data locations ($XDG_CACHE_HOME / ~/.cache/Metalama on POSIX), relying on OS-enforced per-user ownership as the trust boundary. Fixed in 2026.1.19.

Weaknesses

  • CWE-377: Insecure Temporary File
  • CWE-427: Uncontrolled Search Path Element

Affected packages

  • Metalama.Framework < 2026.1.19,
  • Metalama.Tool < 2026.1.19

Internal tracking: metalama/Metalama#1650.

Affected Packages

6 total 6 fixed
EcosystemPackageVulnerable rangeFix
.NETNuGetMetalama.Framework≥ 2026.1.0-preview&&< 2026.1.192026.1.19dotnet add package Metalama.Framework --version 2026.1.19
.NETNuGetMetalama.Tool≥ 2026.1.0-preview&&< 2026.1.192026.1.19dotnet add package Metalama.Tool --version 2026.1.19
.NETNuGetMetalama.Frameworkall versions2025.1.18dotnet add package Metalama.Framework --version 2025.1.18
.NETNuGetMetalama.Toolall versions2025.1.18dotnet add package Metalama.Tool --version 2025.1.18
.NETNuGetMetalama.Tool≥ 2026.0.0-preview&&< 2026.0.252026.0.25dotnet add package Metalama.Tool --version 2026.0.25
.NETNuGetMetalama.Framework≥ 2026.0.0-preview&&< 2026.0.252026.0.25dotnet add package Metalama.Framework --version 2026.0.25

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for Metalama.Framework, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    Update Metalama.Framework to 2026.1.19 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2026-62847 is resolved across your whole dependency graph.

  3. Workarounds

    Close the privilege gap rather than the entry point: audit which accounts, roles and service identities can reach the affected operation, drop the component to the least privilege it actually needs, and review file and directory permissions created by earlier installs — a default left in place is what makes this reachable.

Frequently Asked Questions

## Summary Metalama loaded and executed compile-time assemblies, auxiliary executable tools, and embedded helper assemblies from predictable temporary directories. On Linux and macOS the default cache location was the world-writable system temporary directory (`Path.GetTempPath()`, i.e. `/tmp`), and previously-generated artifacts were trusted based on the presence of a sentinel/`.completed` marker file rather than on any integrity verification. A local, unprivileged user on a shared machine or CI/build agent can pre-create the deterministic cache directory structure and plant a malicious DLL
O3 Security · Impact-Aware SCA

Is CVE-2026-62847 in your dependencies?

Find it across NuGet, including transitive dependencies.

CVE-2026-62847: Metalama RCE — Fixed in 2026.1.19