/

CVE-2026-110867

Severity:

HIGH RISK

(8.5)

Improper Authorization (CWE-863) in Renovate Presets

CVE-2026-110867

Awaiting Analysis

Vulnerability type

Category:

Improper Authorization

CWE:

CWE-863

Impact:

Environment Variable Injection and Potential Code Execution

Severity:

HIGH RISK

(8.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Renovate contains an allowlist bypass that can let repository-controlled configuration indirectly set environment variables intended to remain restricted. On self-hosted instances, an attacker controlling an externally sourced shared preset may influence child processes and potentially alter execution behavior, trust settings, or loaded code.

Renovate contains an allowlist bypass that can let repository-controlled configuration indirectly set environment variables intended to remain restricted. On self-hosted instances, an attacker controlling an externally sourced shared preset may influence child processes and potentially alter execution behavior, trust settings, or loaded code.

Affected context

The issue affects self-hosted Renovate deployments that consume externally sourced shared presets and permit repositories to reference or influence those presets. Risk arises when environment-variable restrictions are enforced at the repository configuration boundary but are not equivalently enforced inside shared preset content.

The issue affects self-hosted Renovate deployments that consume externally sourced shared presets and permit repositories to reference or influence those presets. Risk arises when environment-variable restrictions are enforced at the repository configuration boundary but are not equivalently enforced inside shared preset content.

Exploit preconditions

  • Attack surface: Renovate configuration processing and shared preset resolution
  • Required access: Ability to control or publish an externally sourced preset, together with a repository that consumes it
  • Trigger point: Loading and applying preset configuration before spawning child processes
  • Why exploitation is possible: The allowlist boundary can be bypassed when restricted environment-variable settings are embedded in a trusted or shared preset
  • Deployment condition: The affected behavior is most consequential on self-hosted instances where child-process environment variables influence local tools and runtime behavior
  • Attack surface: Renovate configuration processing and shared preset resolution
  • Required access: Ability to control or publish an externally sourced preset, together with a repository that consumes it
  • Trigger point: Loading and applying preset configuration before spawning child processes
  • Why exploitation is possible: The allowlist boundary can be bypassed when restricted environment-variable settings are embedded in a trusted or shared preset
  • Deployment condition: The affected behavior is most consequential on self-hosted instances where child-process environment variables influence local tools and runtime behavior

Why this happens

The underlying flaw is an authorization and policy-enforcement mismatch. Renovate restricts certain environment variables at one configuration layer, but the same restrictions are not consistently applied after values are inherited from shared presets.

This maps to CWE-863: Incorrect Authorization, because configuration data from a less-trusted source can obtain privileges reserved for approved settings. Environment variables such as PATH, LD_PRELOAD, NODE_OPTIONS, or GIT_SSL_CAINFO can affect executable resolution, library loading, runtime initialization, or certificate validation.

The underlying flaw is an authorization and policy-enforcement mismatch. Renovate restricts certain environment variables at one configuration layer, but the same restrictions are not consistently applied after values are inherited from shared presets.

This maps to CWE-863: Incorrect Authorization, because configuration data from a less-trusted source can obtain privileges reserved for approved settings. Environment variables such as PATH, LD_PRELOAD, NODE_OPTIONS, or GIT_SSL_CAINFO can affect executable resolution, library loading, runtime initialization, or certificate validation.

Potential impact

  • Child processes may execute unintended binaries or load attacker-controlled libraries
  • Runtime behavior may be altered through process initialization settings
  • Git operations may trust attacker-selected certificate authorities
  • Repository secrets or credentials may be exposed through compromised tooling
  • Self-hosted build or automation hosts could be further compromised
  • Child processes may execute unintended binaries or load attacker-controlled libraries
  • Runtime behavior may be altered through process initialization settings
  • Git operations may trust attacker-selected certificate authorities
  • Repository secrets or credentials may be exposed through compromised tooling
  • Self-hosted build or automation hosts could be further compromised

General mitigation guidance

Mitigation generally focuses on enforcing environment-variable policy at every configuration trust boundary, including inherited and externally sourced presets.

Common defensive patterns include:

  • Apply deny rules and allowlists after complete preset resolution, rather than only to direct repository settings
  • Use a secure-by-default environment model that exposes only explicitly required variables
  • Treat external presets as untrusted input and require provenance or review before use
  • Avoid allowing configuration to control process-critical variables such as executable paths, preload settings, runtime options, or certificate authorities
  • Run self-hosted workers with least privilege, isolated credentials, and restricted filesystem and network access
  • Reduce the number and privilege of child processes that inherit Renovate-managed environment variables

Mitigation generally focuses on enforcing environment-variable policy at every configuration trust boundary, including inherited and externally sourced presets.

Common defensive patterns include:

  • Apply deny rules and allowlists after complete preset resolution, rather than only to direct repository settings
  • Use a secure-by-default environment model that exposes only explicitly required variables
  • Treat external presets as untrusted input and require provenance or review before use
  • Avoid allowing configuration to control process-critical variables such as executable paths, preload settings, runtime options, or certificate authorities
  • Run self-hosted workers with least privilege, isolated credentials, and restricted filesystem and network access
  • Reduce the number and privilege of child processes that inherit Renovate-managed environment variables

How teams detect issues like this

Organizations can detect this class of issue through:

  • Static analysis and policy checks for restricted environment-variable names in repository files and shared presets
  • Configuration review rules that inspect values after recursive preset expansion
  • Alerts when externally sourced presets introduce process, loader, path, runtime, or certificate-related variables
  • Code review checks confirming that authorization and allowlist enforcement occurs after configuration merging
  • Runtime monitoring for unexpected executable paths, dynamic library loads, Node.js startup options, or certificate-authority changes
  • Automated configuration scanners or policy-as-code tools that validate preset provenance and inherited settings

Organizations can detect this class of issue through:

  • Static analysis and policy checks for restricted environment-variable names in repository files and shared presets
  • Configuration review rules that inspect values after recursive preset expansion
  • Alerts when externally sourced presets introduce process, loader, path, runtime, or certificate-related variables
  • Code review checks confirming that authorization and allowlist enforcement occurs after configuration merging
  • Runtime monitoring for unexpected executable paths, dynamic library loads, Node.js startup options, or certificate-authority changes
  • Automated configuration scanners or policy-as-code tools that validate preset provenance and inherited settings

Sources

SourceLink
github.comgithub.com/renovatebot/renovate/security/advisories/GHSA-6873-xr44-22vm
vulncheck.comvulncheck.com/advisories/renovate-before-44.60.1-allowedenv-allowlist-bypass-via-shared-preset
github.comgithub.com/nodemailer/nodemailer/security/advisories/GHSA-4g23-2xm8-66gc

Frequently asked

questions

It can be exploitable through repository and preset configuration flows when a self-hosted Renovate instance consumes an attacker-controlled or insufficiently trusted external preset. It does not necessarily require direct network access to the Renovate host.

The attacker generally needs to control a shared preset or another externally sourced configuration artifact that a target repository is permitted to consume. The impact also depends on the permissions and credentials available to the self-hosted instance.

Enforce restricted environment-variable policies after all presets and inherited configuration have been resolved, and use a deny-by-default environment passed to child processes.

Treat external presets as untrusted dependencies, review their provenance, apply policy checks to the fully expanded configuration, and isolate self-hosted workers with least privilege and limited access to sensitive credentials.

It can be exploitable through repository and preset configuration flows when a self-hosted Renovate instance consumes an attacker-controlled or insufficiently trusted external preset. It does not necessarily require direct network access to the Renovate host.

The attacker generally needs to control a shared preset or another externally sourced configuration artifact that a target repository is permitted to consume. The impact also depends on the permissions and credentials available to the self-hosted instance.

Enforce restricted environment-variable policies after all presets and inherited configuration have been resolved, and use a deny-by-default environment passed to child processes.

Treat external presets as untrusted dependencies, review their provenance, apply policy checks to the fully expanded configuration, and isolate self-hosted workers with least privilege and limited access to sensitive credentials.

Find out what's already
exploitable in your codebase.