CVE-2025-14307: 
Java vulnerability analysis and mitigation

Overview

CVE-2025-14307 is an insecure temporary file creation vulnerability in the AutoExtract component of Robocode, an open-source Java-based robot battle simulation platform. The createTempFile method in the RecordManager class fails to securely create temporary files, exposing the application to race condition exploitation that can lead to arbitrary code execution or overwriting of critical files. The affected version is Robocode 1.9.3.6 (Maven package net.sf.robocode:robocode.battle), with versions prior to 1.9.5.6 considered vulnerable. The vulnerability was disclosed on December 9, 2025, and carries a CVSS v3.1 score of 8.1 (High) and a CVSS v4.0 score of 9.3 (Critical) (Github Advisory, Feedly).

Technical details

The root cause is classified as CWE-377 (Insecure Temporary File): the createTempFile() method in Robocode's RecordManager (AutoExtract component) creates temporary files without using Java's AccessController.doPrivileged() pattern, leaving a window between file creation and use that is exploitable via a TOCTOU (Time-of-Check Time-of-Use) race condition. An attacker with local access can monitor the temporary directory, predict or intercept the temporary file path, and replace the file with a malicious payload or symlink before the application processes it, potentially achieving privilege escalation or arbitrary code execution. The fix, contributed via GitHub pull request #68, wraps the file operation in AccessController.doPrivileged() and was merged on May 13, 2025 (Github PR, Github Advisory).

Impact

Successful exploitation allows a low-privileged local attacker to execute arbitrary code with elevated privileges or overwrite critical system files, potentially achieving full system compromise. All three security pillars are affected: confidentiality (unauthorized access to sensitive data), integrity (modification of critical files), and availability (disruption of system operations). The CVSS v4.0 scoring also reflects high impact on subsequent systems, indicating potential for lateral movement within environments where Robocode is deployed (Github Advisory, Feedly).

Exploitability

There is no public proof-of-concept exploit and no evidence of active in-the-wild exploitation as of the time of disclosure (Feedly). The EPSS score is approximately 0.056% (18th percentile), indicating a low near-term probability of exploitation. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires local access and low privileges, limiting the attacker pool, though the race condition mechanism is a well-understood class of attack (Github Advisory).

Exploitation steps

  1. Reconnaissance: Identify systems running Robocode version 1.9.3.6 or earlier (Maven package net.sf.robocode:robocode.battle < 1.9.5.6) with local user access.
  2. Monitor temporary directory: Use filesystem monitoring tools (e.g., inotifywait on Linux) to watch the system's temporary directory (e.g., /tmp) for new file creation events triggered by Robocode's createTempFile() method.
  3. Trigger temporary file creation: Cause Robocode to invoke the vulnerable AutoExtract/RecordManager code path (e.g., by initiating a battle recording or extraction operation).
  4. Race condition exploitation: Immediately upon detecting the temporary file creation, replace the file with a malicious payload or symlink pointing to a target critical file (e.g., a system configuration file or executable) before Robocode processes it.
  5. Achieve code execution or file overwrite: Robocode processes the attacker-controlled file, executing the malicious payload or overwriting the targeted critical file, potentially resulting in privilege escalation or persistent access (Github PR, Github Advisory).

Indicators of compromise

  • File System: Unexpected files or symlinks appearing in the system temporary directory (e.g., /tmp) with names matching Robocode's temporary file naming pattern shortly before or after Robocode operations; unauthorized modifications to critical system files coinciding with Robocode execution.
  • Process: Unusual child processes spawned by the Robocode Java process; unexpected file write operations to directories outside Robocode's normal working directory.
  • Logs: Java security manager exceptions or AccessControlException entries in Robocode logs; OS-level audit logs (e.g., auditd) showing rapid file creation and deletion or symlink creation in /tmp correlated with Robocode process activity.

Mitigation and workarounds

Upgrade the Maven package net.sf.robocode:robocode.battle to version 1.9.5.6 or later, which includes the fix that wraps createTempFile() in AccessController.doPrivileged() (Github Advisory, Github PR). As an interim workaround, restrict local system access to trusted users only and apply the principle of least privilege to accounts that run Robocode. Monitor system temporary directories for suspicious file activity and consider using OS-level controls (e.g., noexec mount options on /tmp) to limit the impact of exploitation.

Community reactions

The vulnerability was identified and responsibly disclosed by researcher simei2k and their team, who submitted both the CVE report and a pull request with a fix. Robocode maintainer flemming-n-larsen acknowledged the issue, reviewed and merged the fix on May 13, 2025, and expressed appreciation for the responsible disclosure (Github PR). Ubuntu has issued a security advisory (USN-8385-1) addressing this and related Robocode vulnerabilities, and the issue has been picked up by Linux security news outlets (Linux Security).

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Affected

bookworm

robocode

Affected

sid

robocode

Affected

trixie

robocode

Affected

Ubuntu

Fixed

bionic (esm-apps)

robocode: 1.9.3.1-1ubuntu0.1~esm1

Fixed

devel

robocode

Affected

focal (esm-apps)

robocode: 1.9.3.7-1ubuntu0.1~esm1

Fixed

jammy

robocode

Affected

jammy (esm-apps)

robocode: 1.9.3.9-2ubuntu0.1~esm1

Fixed

noble

robocode

Affected

noble (esm-apps)

robocode: 1.9.3.9-3ubuntu0.1~esm1

Fixed

resolute

robocode

Affected

Source: This report was generated using AI

Related Java vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-111765HIGH7.5
  • Java logoJava
  • org.a2aproject.sdk:a2a-java-sdk-http-client-android
NoYesOct 20, 2026
CVE-2026-102834HIGH7.5
  • Java logoJava
  • org.bytedeco:javacv
NoYesOct 16, 2026
CVE-2026-111763MEDIUM5.7
  • Java logoJava
  • org.a2aproject.sdk:a2a-java-sdk-parent
NoYesOct 20, 2026
CVE-2026-111762MEDIUM5.7
  • Java logoJava
  • org.a2aproject.sdk:a2a-java-sdk-transport-rest
NoYesOct 20, 2026
CVE-2026-113730MEDIUM5.6
  • Java logoJava
  • ognl
NoYesOct 20, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management