Cloudanix VulnDB

CVE-2025-54798

Low · 2.5

tmp allows arbitrary temporary file / directory write via symbolic link `dir` parameter

CVSS

2.5

EPSS

0.4%

Published

Aug 6, 2025

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A software component may write temporary files in the wrong place if tricked with a shortcut-like folder, which could let someone tamper with files the application can access.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Moderate
Impact
Data Tampering
Component
Library
Class
Path Traversal
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The flaw is a path/symlink handling issue in tmp@0.2.3 as used by oakserver/oak. When code creates a temporary file or directory using an attacker-influenced dir parameter, the library may follow a symbolic link instead of safely constraining writes to an intended temporary location. This can allow an attacker who can control the temporary directory path or pre-place a symlink in a writable location to cause the application to create or overwrite files/directories at unintended filesystem paths with the privileges of the running process. Impact is generally limited by application-specific exposure, filesystem permissions, and whether untrusted input can reach the dir option.

Why it matters to the business

Successful exploitation could let an attacker tamper with files used by an affected application, potentially causing application errors, data corruption, or limited privilege escalation if sensitive writable paths are reachable by the application process. The assigned CVSS and EPSS are low, there is no known KEV listing, no ransomware association, and no reported exploit maturity, so this is not currently a broad internet exploitation priority; however, it should still be remediated in normal dependency maintenance because temporary-file vulnerabilities can become more serious in applications that process untrusted uploads, archives, build artifacts, or plugin-controlled paths.

How an attack unfolds

An attacker first needs a way to influence the directory path used for temporary file or directory creation, or a way to prepare a symlink in a location that the vulnerable application later uses for temporary operations. The attacker points the temporary directory parameter at a symbolic link or symlink-containing path that resolves outside the intended temporary area. When the vulnerable tmp@0.2.3 code creates a file or directory, it follows the symlink and writes to the attacker-selected destination instead of a safe temporary location. The practical outcome depends on what the application writes, whether existing files can be overwritten, and the privileges of the process. In a typical web-service context this may lead to file tampering or denial of service; in a privileged service or build pipeline it could potentially be chained with other weaknesses to modify configuration, scripts, cache files, or application-controlled artifacts.

How to fix it

Upgrade oakserver/oak to a revision that includes the fix, specifically commit b60e60330ef227707c4dc13ef0ea36192d894f44 or a later released version containing that commit. Ensure dependency lockfiles no longer resolve tmp to version 0.2.3 where the vulnerable behavior is reachable. If immediate upgrade is not possible, avoid passing attacker-controlled values to temporary-file dir options, force temporary files into a trusted directory owned by the application, reject paths containing symlinks, use lstat/realpath checks before writes, run the service with least-privilege filesystem permissions, and isolate temporary directories per process or workload with restrictive permissions.

How to confirm the fix worked

Confirm the deployed oakserver/oak version or source revision includes commit b60e60330ef227707c4dc13ef0ea36192d894f44 or later. Review package-lock.json, npm-shrinkwrap.json, yarn.lock, pnpm-lock.yaml, deno.lock, vendored dependency manifests, and SBOM output for tmp@0.2.3. Rebuild and redeploy from a clean dependency cache after upgrading. As a functional validation, test any code paths that create temporary files using configurable directories and verify symlinked temporary paths are rejected or resolved only within the intended trusted temporary directory. Confirm runtime service accounts cannot write to sensitive application, system, or configuration paths that are not required for normal operation.

Typical attack path

  1. Identify an application or workflow using the vulnerable tmp@0.2.3 dependency through oakserver/oak or a downstream package.
  2. Find an input, plugin, upload, archive extraction, build step, or API path that influences the temporary directory used by the application.
  3. Create or reference a symbolic link that points from an allowed temporary location to a target path outside the intended directory.
  4. Trigger the temporary file or directory creation operation in the vulnerable code path.
  5. Cause the application process to write to the symlink target with its filesystem permissions.
  6. Use the resulting file write for tampering, disruption, or as part of a chain to gain additional impact.

How to detect it

Look for evidence of unusual symlink use and unexpected file creation around application temporary-file operations. Useful sources include application logs, web/API request logs for parameters that control upload or temporary directories, file integrity monitoring alerts, endpoint telemetry for symlink creation and file writes, container runtime audit logs, CI/build logs, and Linux auditd or EDR filesystem events. Investigate writes by the affected application process to paths outside its expected temporary directory, especially shortly after requests, uploads, archive processing, plugin execution, or build jobs. Search for symlinks inside application-controlled temporary directories that point to application configuration, source directories, startup scripts, credential files, cache directories, or other sensitive locations. Also review dependency and deployment records to identify systems that ran tmp@0.2.3 while exposed to untrusted temporary-directory input. There are no public exploit-specific payload strings or actor-specific indicators known from the provided intelligence.

What your security team should do

  • Inventory applications and build workflows that use oakserver/oak from Git or that bundle tmp@0.2.3.
  • Prioritize remediation where untrusted users, uploaded content, plugins, CI jobs, or external requests can influence temporary-file locations.
  • Upgrade to oakserver/oak commit b60e60330ef227707c4dc13ef0ea36192d894f44 or later and regenerate dependency lockfiles.
  • Add dependency scanning rules to flag tmp@0.2.3 and affected oakserver/oak revisions in source repositories and container images.
  • Harden runtime permissions so application processes cannot write to source code, startup scripts, service configuration, credential stores, or other high-impact filesystem locations.
  • Review temporary-file handling patterns for use of attacker-controlled dir parameters and add canonical path and symlink checks where applicable.
  • Because EPSS is low and there is no KEV or known ransomware use, handle through standard patch management unless the affected code path is externally reachable or runs with elevated privileges.

The record

`tmp@0.2.3` is vulnerable to an Arbitrary temporary file / directory write via symbolic link `dir` parameter.

Affected packages

Ecosystem Package Introduced Fixed
npm tmp 0 0.2.4
Chainguard arangodb-3.11-compat 0 3.11.14.1-r6
Chainguard foxx-cli 0 2.1.1-r3
Chainguard kibana-9.1 0 9.1.3-r0
Chainguard kibana-9.1-bitnami 0 9.1.3-r0
Chainguard kibana-9.1-iamguarded 0 9.1.3-r0
Chainguard kubeflow-centraldashboard 0 1.10.0-r10
Chainguard langfuse 0 3.125.0-r0
Chainguard langfuse-compat 0 3.125.0-r0
Chainguard langfuse-worker 0 3.125.0-r0
Chainguard lerna 0 8.2.4-r1
Chainguard opensearch-dashboards-2 0 2.19.2-r5
Chainguard opensearch-dashboards-2-alerting-dashboards-plugin 0 2.19.2-r5
Chainguard opensearch-dashboards-2-anomaly-detection-dashboards-plugin 0 2.19.2-r5
Chainguard opensearch-dashboards-2-compat 0 2.19.2-r5
Chainguard opensearch-dashboards-2-config 0 2.19.2-r5
Chainguard opensearch-dashboards-2-dashboards-maps 0 2.19.2-r5
Chainguard opensearch-dashboards-2-dashboards-notifications 0 2.19.2-r5
Chainguard opensearch-dashboards-2-dashboards-observability 0 2.19.2-r5
Chainguard opensearch-dashboards-2-dashboards-query-workbench 0 2.19.2-r5
Chainguard opensearch-dashboards-2-dashboards-reporting 0 2.19.2-r5
Chainguard opensearch-dashboards-2-dashboards-search-relevance 0 2.19.2-r5
Chainguard opensearch-dashboards-2-dashboards-visualizations 0 2.19.2-r5
Chainguard opensearch-dashboards-2-fips 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-alerting-dashboards-plugin 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-anomaly-detection-dashboards-plugin 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-config 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-dashboards-maps 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-dashboards-notifications 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-dashboards-observability 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-dashboards-query-workbench 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-dashboards-reporting 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-dashboards-search-relevance 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-dashboards-visualizations 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-index-management-dashboards-plugin 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-ml-commons-dashboards 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-security-analytics-dashboards-plugin 0 2.19.2-r4
Chainguard opensearch-dashboards-2-fips-security-dashboards-plugin 0 2.19.2-r4
Chainguard opensearch-dashboards-2-index-management-dashboards-plugin 0 2.19.2-r5
Chainguard opensearch-dashboards-2-ml-commons-dashboards 0 2.19.2-r5
Chainguard opensearch-dashboards-2-security-analytics-dashboards-plugin 0 2.19.2-r5
Chainguard opensearch-dashboards-2-security-dashboards-plugin 0 2.19.2-r5
Chainguard opensearch-dashboards-3 0 3.2.0-r0
Chainguard opensearch-dashboards-3-alerting-dashboards-plugin 0 3.5.0-r0
Chainguard opensearch-dashboards-3-anomaly-detection-dashboards-plugin 0 3.2.0-r0
Chainguard opensearch-dashboards-3-config 0 3.2.0-r0
Chainguard opensearch-dashboards-3-dashboards-maps 0 3.2.0-r0
Chainguard opensearch-dashboards-3-dashboards-notifications 0 3.5.0-r5
Chainguard opensearch-dashboards-3-dashboards-observability 0 3.2.0-r0
Chainguard opensearch-dashboards-3-dashboards-query-workbench 0 3.2.0-r0
Chainguard opensearch-dashboards-3-dashboards-reporting 0 3.2.0-r0
Chainguard opensearch-dashboards-3-dashboards-search-relevance 0 3.2.0-r0
Chainguard opensearch-dashboards-3-fips 0 3.2.0-r0
Chainguard opensearch-dashboards-3-fips-alerting-dashboards-plugin 0 3.5.0-r0
Chainguard opensearch-dashboards-3-fips-anomaly-detection-dashboards-plugin 0 3.2.0-r0
Chainguard opensearch-dashboards-3-fips-config 0 3.2.0-r0
Chainguard opensearch-dashboards-3-fips-dashboards-maps 0 3.2.0-r0
Chainguard opensearch-dashboards-3-fips-dashboards-observability 0 3.2.0-r0
Chainguard opensearch-dashboards-3-fips-dashboards-query-workbench 0 3.2.0-r0
Chainguard opensearch-dashboards-3-fips-dashboards-reporting 0 3.2.0-r0
Chainguard opensearch-dashboards-3-fips-dashboards-search-relevance 0 3.2.0-r0
Chainguard opensearch-dashboards-3-fips-ml-commons-dashboards 0 3.2.0-r0
Chainguard opensearch-dashboards-3-fips-security-dashboards-plugin 0 3.4.0-r0
Chainguard opensearch-dashboards-3-ml-commons-dashboards 0 3.2.0-r0
Chainguard opensearch-dashboards-3-security-dashboards-plugin 0 3.4.0-r0
Chainguard prism 0 5.14.2-r7
Chainguard saf 0 1.5.1-r0
Chainguard vitess-19 0 19.0.10-r15
Chainguard vitess-19-binaries 0 19.0.10-r15
Chainguard vitess-20 0 20.0.8-r5
Chainguard vitess-20-binaries 0 20.0.8-r5
Chainguard vitess-20-compat 0 20.0.8-r5
Chainguard vitess-21 0 21.0.5-r6
Chainguard vitess-21-binaries 0 21.0.5-r6
Chainguard vitess-21-compat 0 21.0.5-r6
Chainguard vitess-22 0 22.0.1-r5
Chainguard vitess-22-binaries 0 22.0.1-r5
Chainguard vitess-22-compat 0 22.0.1-r5
Debian:11 node-tmp 0 0.2.1+dfsg-1+deb11u1
Debian:12 node-tmp 0 No fix
Debian:13 node-tmp 0 No fix
Debian:13 node-tmp 0 0.2.2+dfsg+~0.2.3-1.1~deb13u1
Debian:14 node-tmp 0 0.2.2+dfsg+~0.2.3-1.1
Wolfi kubeflow-centraldashboard 0 1.10.0-r10
Wolfi langfuse 0 3.125.0-r0
Wolfi langfuse-compat 0 3.125.0-r0
Wolfi langfuse-worker 0 3.125.0-r0
Wolfi lerna 0 8.2.4-r1
Wolfi opensearch-dashboards-2 0 2.19.2-r5
Wolfi opensearch-dashboards-2-alerting-dashboards-plugin 0 2.19.2-r5
Wolfi opensearch-dashboards-2-anomaly-detection-dashboards-plugin 0 2.19.2-r5
Wolfi opensearch-dashboards-2-compat 0 2.19.2-r5
Wolfi opensearch-dashboards-2-config 0 2.19.2-r5
Wolfi opensearch-dashboards-2-dashboards-maps 0 2.19.2-r5
Wolfi opensearch-dashboards-2-dashboards-notifications 0 2.19.2-r5
Wolfi opensearch-dashboards-2-dashboards-observability 0 2.19.2-r5
Wolfi opensearch-dashboards-2-dashboards-query-workbench 0 2.19.2-r5
Wolfi opensearch-dashboards-2-dashboards-reporting 0 2.19.2-r5
Wolfi opensearch-dashboards-2-dashboards-search-relevance 0 2.19.2-r5
Wolfi opensearch-dashboards-2-dashboards-visualizations 0 2.19.2-r5
Wolfi opensearch-dashboards-2-index-management-dashboards-plugin 0 2.19.2-r5
Wolfi opensearch-dashboards-2-ml-commons-dashboards 0 2.19.2-r5
Wolfi opensearch-dashboards-2-security-analytics-dashboards-plugin 0 2.19.2-r5
Wolfi opensearch-dashboards-2-security-dashboards-plugin 0 2.19.2-r5
Wolfi opensearch-dashboards-3 0 3.2.0-r0
Wolfi opensearch-dashboards-3-alerting-dashboards-plugin 0 3.5.0-r0
Wolfi opensearch-dashboards-3-anomaly-detection-dashboards-plugin 0 3.2.0-r0
Wolfi opensearch-dashboards-3-config 0 3.2.0-r0
Wolfi opensearch-dashboards-3-dashboards-maps 0 3.2.0-r0
Wolfi opensearch-dashboards-3-dashboards-notifications 0 3.5.0-r5
Wolfi opensearch-dashboards-3-dashboards-observability 0 3.2.0-r0
Wolfi opensearch-dashboards-3-dashboards-query-workbench 0 3.2.0-r0
Wolfi opensearch-dashboards-3-dashboards-reporting 0 3.2.0-r0
Wolfi opensearch-dashboards-3-dashboards-search-relevance 0 3.2.0-r0
Wolfi opensearch-dashboards-3-ml-commons-dashboards 0 3.2.0-r0
Wolfi opensearch-dashboards-3-security-dashboards-plugin 0 3.4.0-r0
Wolfi prism 0 5.14.2-r7
Wolfi saf 0 1.5.1-r0
Wolfi vitess-20 0 20.0.8-r5
Wolfi vitess-20-binaries 0 20.0.8-r5
Wolfi vitess-20-compat 0 20.0.8-r5
Wolfi vitess-21 0 21.0.5-r6
Wolfi vitess-21-binaries 0 21.0.5-r6
Wolfi vitess-21-compat 0 21.0.5-r6
Wolfi vitess-22 0 22.0.1-r5
Wolfi vitess-22-binaries 0 22.0.1-r5
Wolfi vitess-22-compat 0 22.0.1-r5
openSUSE:Tumbleweed python-bqplot 0 0.12.45-13.1
openSUSE:Tumbleweed python-nbdime 0 4.0.2-23.1

Related vulnerabilities