CVE-2025-59433

5.3 MEDIUM

📋 TL;DR

CVE-2025-59433 is an argument injection vulnerability in @conventional-changelog/git-client's getTags() API that allows attackers to pass malicious parameters to the git log command. This can lead to arbitrary file overwrite via Git's --output option. Developers using affected versions of conventional-changelog for automated changelog generation are impacted.

💻 Affected Systems

Products:
  • @conventional-changelog/git-client
  • conventional-changelog
Versions: All versions before 2.0.0
Operating Systems: All platforms where Git is installed
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects applications that use the vulnerable getTags() API with user-controlled input.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise through arbitrary file overwrite leading to remote code execution or data destruction.

🟠

Likely Case

Local file corruption or overwrite in the context of the application's user permissions.

🟢

If Mitigated

Limited impact due to restricted user permissions or input validation in wrapper code.

🌐 Internet-Facing: LOW - This is a library vulnerability requiring integration into applications; not directly internet-facing.
🏢 Internal Only: MEDIUM - Development and CI/CD pipelines using vulnerable versions could be compromised internally.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires control over parameters passed to getTags() API and knowledge of the target system's file structure.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.0.0

Vendor Advisory: https://github.com/conventional-changelog/conventional-changelog/security/advisories/GHSA-vh25-5764-9wcr

Restart Required: No

Instructions:

1. Update @conventional-changelog/git-client to version 2.0.0 or later. 2. Run 'npm update @conventional-changelog/git-client' or update package.json to specify '^2.0.0'. 3. Rebuild and redeploy affected applications.

🔧 Temporary Workarounds

Input validation wrapper

all

Implement strict input validation for parameters passed to getTags() API

// Validate that params only contain allowed characters
// Example: allow only alphanumeric, hyphens, underscores
const safeParams = params.replace(/[^a-zA-Z0-9-_]/g, '')

🧯 If You Can't Patch

  • Restrict user input to the getTags() API to only trusted, hardcoded values
  • Run the application with minimal file system permissions to limit damage scope

🔍 How to Verify

Check if Vulnerable:

Check package.json or node_modules for @conventional-changelog/git-client version below 2.0.0

Check Version:

npm list @conventional-changelog/git-client | grep @conventional-changelog/git-client

Verify Fix Applied:

Verify installed version is 2.0.0 or higher using npm list @conventional-changelog/git-client

📡 Detection & Monitoring

Log Indicators:

  • Unexpected git log commands with --output parameter
  • File permission errors or unexpected file modifications

Network Indicators:

  • None - this is a local command injection vulnerability

SIEM Query:

Process execution monitoring for git log with suspicious --output parameters

🔗 References

📤 Share & Export