Description
auto-changelog before 2.6.1 merges configuration from inside the target repository (the .auto-changelog file and the auto-changelog key in package.json) into its options, and honors security-sensitive options from that untrusted source. The handlebarsSetup option is passed to require(), so running auto-changelog over attacker-controlled repository content (for example, in a CI workflow that checks out an untrusted pull request head, or locally on a forked or third-party repository) executes attacker-chosen code with the privileges of the invoking user or CI job, including access to workflow secrets, without the repository dependencies ever being installed. The plugins option similarly loads attacker-controlled modules from the repository. Under the same conditions, appendGitLog/appendGitTag allow git argument injection (e.g. --output= to write arbitrary files), output allows writing attacker-influenced content to arbitrary paths, and template causes an outbound request to an attacker-chosen URL. Version 2.6.1 treats in-repository configuration as untrusted and refuses to run when it sets these options, unless the new --unsafe-config flag is passed.
Published: 2026-10-05
Score: 8.4 High
EPSS: < 1% Very Low
KEV: No
Impact: Remote Code Execution
Action: Immediate Patch
AI Analysis

Impact

The vulnerability allows an attacker to execute arbitrary code with the privileges of the running user by placing a specially crafted configuration file (.auto-changelog or auto-changelog key in package.json) in a target repository. The configuration includes options such as handlebarsSetup and plugins, which are passed directly to Node's require() and can load attacker‑controlled modules. The same untrusted configuration can also inject git arguments to write arbitrary files, write content to arbitrary paths via the output option, or cause an outbound HTTP request to a chosen URL via the template option. Together, these weaknesses provide remote code execution, file system manipulation, and network access, compromising confidentiality, integrity, and availability of the execution environment.

Affected Systems

Vendors: cookpete, product auto‑changelog. Version 2.6.1 and later have mitigations; any version prior to 2.6.1 is affected. The issue applies to any environment where auto‑changelog is executed against a repository that may contain attacker‑controlled configuration, such as CI pipelines checking out pull request heads from forks or users locally processing forked repositories.

Risk and Exploitability

The CVSS score of 8.4 classifies this flaw as High severity. EPSS data is not available, and the vulnerability is not yet listed in the CISA KEV catalog. A potential attacker can exploit the flaw by providing malicious repository content to a CI job or a local user running the tool. Because the code is executed with the full privileges of the invoking process, the attacker can access environment variables, CI secrets, or other restricted data. The exploitation chain is relatively straightforward: place a bad configuration file, trigger auto‑changelog, and the attacker’s code runs. The absence of EPSS data does not diminish the risk, as the flaw is identifiable and actionable, and a motivated actor can easily craft the necessary repository content.

Generated by OpenCVE AI on October 5, 2026 at 17:20 UTC.

Remediation

Vendor Solution

Upgrade to auto-changelog 2.6.1 or later. Options that load code, inject git arguments, write outside the repository, or fetch URLs must now be passed on the command line; `--unsafe-config` restores the old behavior for fully trusted repositories only.


Vendor Workaround

Do not run auto-changelog over untrusted repository content, including CI workflows that check out pull request heads from forks.


OpenCVE Recommended Actions

  • Upgrade auto‑changelog to version 2.6.1 or later, which treats in‑repository configuration as untrusted and blocks the risky options unless the explicit --unsafe-config flag is used.
  • When running auto‑changelog, provide all options that involve loading code, git argument injection, file writing, or external requests on the command line, rather than relying on repository‑scoped configuration.
  • Avoid executing auto‑changelog on repositories that are not fully trusted, especially in CI workflows that check out pull request heads from forks or other external sources.

Generated by OpenCVE AI on October 5, 2026 at 17:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 06 Oct 2026 21:15:00 +0000

Type Values Removed Values Added
First Time appeared Cookpete
Cookpete auto-changelog
Vendors & Products Cookpete
Cookpete auto-changelog

Mon, 05 Oct 2026 19:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Mon, 05 Oct 2026 16:45:00 +0000

Type Values Removed Values Added
Description auto-changelog before 2.6.1 merges configuration from inside the target repository (the .auto-changelog file and the auto-changelog key in package.json) into its options, and honors security-sensitive options from that untrusted source. The handlebarsSetup option is passed to require(), so running auto-changelog over attacker-controlled repository content (for example, in a CI workflow that checks out an untrusted pull request head, or locally on a forked or third-party repository) executes attacker-chosen code with the privileges of the invoking user or CI job, including access to workflow secrets, without the repository dependencies ever being installed. The plugins option similarly loads attacker-controlled modules from the repository. Under the same conditions, appendGitLog/appendGitTag allow git argument injection (e.g. --output= to write arbitrary files), output allows writing attacker-influenced content to arbitrary paths, and template causes an outbound request to an attacker-chosen URL. Version 2.6.1 treats in-repository configuration as untrusted and refuses to run when it sets these options, unless the new --unsafe-config flag is passed.
Title auto-changelog: code execution via untrusted in-repository configuration (handlebarsSetup/plugins), plus argument injection, path traversal, and SSRF
Weaknesses CWE-22
CWE-829
CWE-88
CWE-918
CWE-94
References
Metrics cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H'}

cvssV4_0

{'score': 8.4, 'vector': 'CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}


Subscriptions

Cookpete Auto-changelog
cve-icon MITRE

Status: PUBLISHED

Assigner: harborist

Published:

Updated: 2026-10-05T19:04:19.152Z

Reserved: 2026-06-12T21:15:49.095Z

Link: CVE-2026-12171

cve-icon Vulnrichment

Updated: 2026-10-05T19:04:14.968Z

cve-icon NVD

Status : Deferred

Published: 2026-10-05T17:17:14.510

Modified: 2026-10-06T16:08:43.180

Link: CVE-2026-12171

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-06T20:57:19Z

Weaknesses
  • CWE-22

    Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

  • CWE-829

    Inclusion of Functionality from Untrusted Control Sphere

  • CWE-88

    Improper Neutralization of Argument Delimiters in a Command ('Argument Injection')

  • CWE-918

    Server-Side Request Forgery (SSRF)

  • CWE-94

    Improper Control of Generation of Code ('Code Injection')