Tag: nuget

  • GHSA-h26j-4vp7-x9w2: Metalama: Unsafe deserialization over Metalama’s Visual Studio inter-process named pipe enables local code execution

    • Severity: HIGH
    • CVE: CVE-2026-62848
    • Ecosystems: nuget, nuget, nuget
    • Packages: Metalama.Framework, Metalama.Framework, Metalama.Framework

    ## Summary

    Metalama uses a local named-pipe channel to communicate between its Visual Studio processes — the Visual Studio UI process (`devenv`), the out-of-process Roslyn code-analysis process, and the CodeLens process. This channel deserialized messages from the pipe **without restricting which CLR types could be instantiated**. A local process able to write to the pipe can send a crafted message that instantiates arbitrary .NET types — a deserialization primitive in the same class as `BinaryFormatter` (CWE-502), and a well-known gadget-chain code-execution vector.

    The flaw is present, via two successive serializers, in **every Metalama release from the first public version (2023.0) up to and including 2026.1.18**, and is fixed in **2026.1.19**.

    The pipe name is predictable: `Metalama_{role}_{processId}_{hash(PackageVersion)}`, derived from the public package version and a locally-enumerable process id. This channel is used by the Visual Studio integration only (Windows named pipes); it is not used for command-line / MSBuild builds.

    ## Mechanisms

    **JSON era — Metalama 2023.0 through 2026.0.x (Newtonsoft.Json).** The pipe formatter enabled polymorphic type embedding:
    “`csharp
    formatter.JsonSerializer.TypeNameHandling = TypeNameHandling.All; // ServiceEndpoint.cs (early), later BaseEndpoint.cs
    “`
    The accompanying `SerializationBinder` (added later for multi-version assembly support) only **remapped assembly names**; its `BindToType` resolved **any** type name from the…

    Source: GitHub Security Advisories · 2026-11-03