Skip to content

Local code execution, information disclosure, and denial of service in the PostSharp build toolchain on shared or multi-user machines

High
gfraiteur published GHSA-gpwg-4q4j-792q Jun 27, 2026

Package

nuget PostSharp (NuGet)

Affected versions

< 2024.0.24
>= 2024.1.0, < 2026.0.13

Patched versions

2024.0.24
2026.0.13

Description

Summary

Multiple weaknesses in the PostSharp build toolchain allow an unprivileged local user on a shared or multi-user machine (including a shared CI/build agent) to compromise other users' builds. Depending on the weakness, an attacker can achieve arbitrary code execution in the context of a victim's build, disclose sensitive information handed to or produced by the build (including license keys and environment details), or render the build capability unavailable. This advisory bundles four related local-machine findings (A–D) that share the same root-cause class: build-time resources placed in shared, predictable, or weakly permissioned locations without adequate access control, authentication, or integrity verification.

All four findings require local access to the same machine as the victim. None is remotely exploitable on its own.

Severity

Overall: High — CVSS v3.1 8.2
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H

The overall severity is governed by the most severe component (Finding A); the lower-severity components do not reduce the aggregate rating.

Affected product and versions

  • Product: PostSharp build toolchain (distributed via the PostSharp NuGet package and its bundled build and compiler-host tools).
  • Affected versions:
    • All PostSharp 2024.0 releases prior to 2024.0.24.
    • All PostSharp 2026.0 releases prior to 2026.0.13.
    • In effect, every PostSharp version is affected except the patched releases listed below.

Patched versions

The fix ships in two maintenance lines, released separately:

  • 2024.0.24 (2024.0 line)
  • 2026.0.13 (2026.0 line)

No other release line will receive this fix. Customers on any other line should upgrade to one of the patched versions above.

Description

PostSharp's build toolchain stages and exchanges several kinds of build-time resources — loadable compiler-host components, restored dependencies, precompiled native images, an inter-process build server, a machine-wide build throttle, and diagnostic output. In affected versions, these resources were placed in shared, predictable, or world-accessible locations and were trusted without sufficient access control, peer authentication, or integrity verification. On a single-user, properly isolated machine this is not exploitable by a remote party. On a machine shared by multiple users — or on a shared CI/build agent where untrusted jobs run under the same account or on the same host — another local user can interpose on these resources to attack a victim's build.

The four findings are:

  • A — Arbitrary code execution via untrusted shared resource locations (DLL planting / missing integrity check). Loadable build components, restored dependency assemblies, and precompiled native images were consumed from shared, predictable locations using a freshness check based only on presence and timestamp, with no cryptographic or signature-based integrity verification. Where those locations were writable by other local users, an attacker could plant a malicious component that the victim's next build would load and execute.

  • B — Arbitrary code execution and sensitive-data disclosure via the .NET Framework inter-process build server (Windows). The .NET Framework inter-process build server runs by default for attended (interactive) builds on Windows, and can also be enabled for unattended or CI builds via an opt-in setting. In affected versions, the inter-process build channel was created with overly broad access permissions and a predictable identity, and accepted build requests without authenticating the connecting peer. A local attacker could either drive the build host into loading and executing attacker-supplied code, or stand up a look-alike server under the predictable identity to capture data submitted by the victim's build (including license keys) and return forged results.

  • C — Local denial of service via an unscoped build-throttle synchronization object. A machine-wide synchronization object used to limit CPU usage across PostSharp builds was created with a fixed, unscoped identity and permissions that let any local user manipulate it. An attacker could hold or exhaust it so that subsequent PostSharp builds on the machine block indefinitely.

  • D — Local information disclosure via an unscrubbed exception report. On certain build-host errors, a full, unredacted exception report (including message text, nested exceptions, and a stack trace containing absolute paths) was written to a plaintext file in a temporary directory and left in place, without the redaction applied to other diagnostic output. A local user able to read that directory could recover usernames, source-tree layout, internal host names, and any sensitive data present in the exception text.

Attack vector and preconditions

All findings require local access to the victim's machine and are limited to shared or multi-user environments. They are not exploitable by a remote, unauthenticated attacker and do not apply to a properly isolated single-user workstation.

  • A: A shared or insufficiently isolated build environment in which the default resource locations are writable by other local users, and a victim subsequently runs a PostSharp build. (User interaction required: the victim runs a build.)
  • B: Windows; the .NET Framework inter-process build server, which runs by default for attended (interactive) builds and can also be enabled for unattended or CI builds via an opt-in setting; on a shared or multi-user host. Higher attack complexity (timing/positioning relative to the victim's build is required).
  • C: Any shared host on which an arbitrary local user can execute code.
  • D: A shared or world-readable temporary directory; a non-default or misconfigured environment increases the likelihood that the report is readable by another user.

Impact

  • Confidentiality: Disclosure of license keys, environment and host details, source-tree structure, and other data present in build inputs, build outputs, or diagnostic reports (Findings A, B, D).
  • Integrity: Execution of attacker-controlled code in the context of the user running the build, and forged build results returned to the victim (Findings A, B).
  • Availability: Indefinite blocking of all PostSharp builds on the affected machine (Finding C); and, via code execution, arbitrary disruption of build availability (Finding A).

Remediation

Upgrade to PostSharp 2024.0.24 or 2026.0.13 (or a later release in those lines). The release hardens the build toolchain as follows:

  • Shared build resources are confined to per-user, access-controlled locations and are verified for integrity before being loaded or executed, rather than being trusted on presence and timestamp alone.
  • The .NET Framework inter-process build server now uses a non-predictable identity, restricts access to the owning user, and authenticates the connecting peer before honoring build requests.
  • The machine-wide build-throttle synchronization object is scoped per user and restricted so that other local users cannot manipulate it.
  • Diagnostic and exception output written to temporary locations is now redacted consistently and is not retained where it could be read by other users.

Until upgrade is possible, mitigate by running PostSharp builds only on properly isolated, single-user machines; ensuring temporary and cache directories are not shared or world-readable; and avoiding shared CI/build agents that run untrusted jobs under the same account or host as trusted builds.

Affected components

Component Finding CWE CVSS v3.1 vector Score Severity
A Arbitrary code execution via untrusted shared resource locations (DLL planting; missing integrity check) CWE-427, CWE-494 CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H 8.2 High
B Arbitrary code execution and sensitive-data disclosure via the .NET Framework inter-process build server CWE-306, CWE-732 CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H 7.8 High
C Local denial of service via an unscoped build-throttle synchronization object CWE-732, CWE-400 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L 3.3 Low
D Local information disclosure via an unscrubbed exception report CWE-532, CWE-377 CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N 2.5 Low

Severity

High

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Local
Attack complexity
Low
Privileges required
Low
User interaction
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H

CVE ID

No known CVE

Weaknesses

Missing Authentication for Critical Function

The product does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources. Learn more on MITRE.

Insecure Temporary File

Creating and using insecure temporary files can leave application and system data vulnerable to attack. Learn more on MITRE.

Uncontrolled Resource Consumption

The product does not properly control the allocation and maintenance of a limited resource. Learn more on MITRE.

Uncontrolled Search Path Element

The product uses a fixed or controlled search path to find resources, but one or more locations in that path can be under the control of unintended actors. Learn more on MITRE.

Download of Code Without Integrity Check

The product downloads source code or an executable from a remote location and executes the code without sufficiently verifying the origin and integrity of the code. Learn more on MITRE.

Insertion of Sensitive Information into Log File

The product writes sensitive information to a log file. Learn more on MITRE.

Incorrect Permission Assignment for Critical Resource

The product specifies permissions for a security-critical resource in a way that allows that resource to be read or modified by unintended actors. Learn more on MITRE.