CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-R253-R9JW-QG44

GHSA-R253-R9JW-QG44: Unauthenticated Remote Code Execution in Crawl4AI via Chromium Launch-Argument Injection

Alon Barad
Alon Barad
Software Engineer

Jun 18, 2026·6 min read·6 visits

Executive Summary (TL;DR)

Unauthenticated remote command injection via Chromium process-replacement switches in Crawl4AI <= 0.8.9.

A critical unauthenticated remote code execution vulnerability exists in Crawl4AI versions up to 0.8.9. The flaw is caused by improper neutralization of command arguments passed to the Chromium process execution engine via the browser_config.extra_args parameter, enabling remote attackers to execute arbitrary shell commands inside the container.

Vulnerability Overview

Crawl4AI is an open-source, LLM-friendly web crawling and scraping library designed to be deployed as a self-hosted API server within Docker containers. To orchestrate headless browsing, Crawl4AI relies on Playwright to spawn instances of Chromium. The API server exposes several endpoints, such as /crawl, /crawl/stream, and /crawl/job, which allow remote users to configure and trigger crawling sessions.

In versions up to and including 0.8.9, the API server was unauthenticated by default. It accepted a JSON payload containing a BrowserConfig object. This object included an optional extra_args parameter designed to allow users to supply custom arguments to the Chromium browser process.

Because the API did not validate or restrict these arguments, remote unauthenticated attackers could inject specific command-line switches. This allowed the execution of arbitrary shell commands within the Docker container, bypassing intended boundaries.

Root Cause Analysis

The root cause of this vulnerability lies in the combination of CWE-88 (Improper Neutralization of Argument Delimiters in a Command) and CWE-94 (Improper Control of Generation of Code). The Crawl4AI API server deserialized incoming JSON payloads directly into configuration models without validating the safety of the keys or values within browser_config.extra_args.

When a crawl task is initiated, the application constructs a command to spawn Chromium via Playwright, appending the elements of extra_args directly to the command-line parameters. Chromium features several diagnostic switches that specify the path of helper binaries or prefix execution commands for subprocesses. Attackers can leverage these switches to hijack process execution.

By supplying arguments such as --utility-cmd-prefix or --renderer-cmd-prefix alongside --no-zygote, the attacker instructs the parent Chromium process to prepend a custom command wrapper whenever it spawns a helper utility or renderer process. Consequently, when Chromium forks to initialize these processes, it executes the injected shell command instead of or before the standard executable. This design flaw allows input data to influence the executable control path of the host system.

Code-Level Patch Analysis

To address this vulnerability, the development team introduced a strict trust-boundary model in version 0.9.0, implemented in commit 60886d1a0c52682e4c83a7cef9dfac417fff6bd2. The patch defines two levels of configuration trust: TRUSTED for local Python SDK calls and UNTRUSTED for external network-facing API requests.

# Inside crawl4ai/async_configs.py
class Provenance(Enum):
    TRUSTED = "trusted"
    UNTRUSTED = "untrusted"

The implementation restricts several critical parameters. Any configuration received via an untrusted request that includes blocked parameters, such as extra_args, raises an explicit UntrustedConfigError.

# Forbidden fields for untrusted network requests
UNTRUSTED_FORBIDDEN_FIELDS = {
    "BrowserConfig": {
        "proxy", "proxy_config", "extra_args", "user_data_dir", "channel",
        "chrome_channel", "cdp_url", "debugging_port", "host", "storage_state",
        "cookies", "headers", "init_scripts", "browser_context_id", "target_id",
    },
    "CrawlerRunConfig": {
        "js_code", "js_code_before_wait", "c4a_script", "deep_crawl_strategy",
        "proxy_config", "proxy_rotation_strategy", "proxy_session_id",
        "proxy_session_ttl", "proxy_session_auto_release",
        "fallback_fetch_function", "experimental", "base_url", "simulate_user",
        "override_navigator", "magic", "process_in_browser", "shared_data",
        "session_id",
    },
}

This approach ensures that potentially dangerous settings cannot be manipulated by external payloads. The API server returns a 400 Bad Request error if a forbidden field is detected, preventing argument injection or code execution via the network API. The architecture decouples internal process-level options from network-accessible interfaces, establishing a robust security barrier.

Exploitation Methodology

An attack is initiated by submitting an unauthenticated HTTP POST request to /crawl or related endpoints on an exposed Crawl4AI API instance. The payload must target the browser_config.extra_args array to supply the malicious Chromium parameters. Because the API server does not require authentication in its default configuration, any network-adjacent attacker can reach these endpoints.

The attack leverages the --no-zygote flag to disable the standard Chromium process template system. This forces the browser to spawn individual helper processes directly, facilitating the invocation of the command execution prefixes. The attacker specifies the target command inside parameters like --utility-cmd-prefix or --renderer-cmd-prefix.

{
  "url": "https://example.com",
  "browser_config": {
    "extra_args": [
      "--no-zygote",
      "--utility-cmd-prefix=bash -c 'id > /tmp/rce_proof'"
    ]
  }
}

When the application processes this crawl request, Playwright launches Chromium with the specified arguments. Chromium then executes the prefix value using the system shell, running the command under the privileges of the container's runtime user. This allows full command execution within the context of the running container.

Impact Assessment

The security impact of this vulnerability is critical, as reflected in its CVSS score of 10.0. Successful exploitation yields immediate, unauthenticated remote code execution with the privileges of the container's executing user (typically appuser or root).

Once code execution is achieved, an attacker can access the container's file system, environment variables, and any integrated secrets or API keys used by the application. This could expose external database credentials, LLM API tokens, or cloud service credentials, depending on how the container environment is configured.

Additionally, because the compromised process runs inside a container, the attacker can attempt to perform lateral movement or network scanning against internal resources accessible from the container network. While the container context limits direct access to the host kernel, typical container escapes or environment compromises remain potential secondary vectors.

Remediation and Detection

The primary remediation path is to upgrade Crawl4AI to version 0.9.0 or later. This version implements the necessary trust boundary checks, preventing the usage of extra_args via the API endpoints.

For environments where an immediate upgrade is not feasible, security administrators should configure the CRAWL4AI_API_TOKEN environment variable. This enforces token-based authentication on all API routes, limiting exposure to authenticated clients. Access to the API port (default 11235) should also be restricted using network firewalls or bound specifically to localhost.

Detection can be accomplished by monitoring container process creation events. Security logs should be analyzed for instances where chrome or chromium processes spawn shells such as /bin/sh or /bin/bash as child processes. Network intrusion detection rules can also scan incoming API traffic for payloads containing forbidden flags like --utility-cmd-prefix or --renderer-cmd-prefix.

Technical Appendix

CVSS Score
10.0/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Affected Systems

Crawl4AI self-hosted Docker API server
AttributeDetail
CWE IDCWE-88 / CWE-94
Attack VectorNetwork
CVSS Score10.0 (Critical)
Exploit StatusPoC Available
Affected ComponentDocker API server request parsing
Patched Version0.9.0
CWE-88
Improper Neutralization of Argument Delimiters in a Command ('Argument Injection')

The software constructs a command line for an external execution using input parameters, but fails to prevent input from adding additional arguments or modifying existing ones.

Vulnerability Timeline

Release of version 0.8.9 resolving partial proxy SSRF issues
2026-06-04
Public disclosure of GHSA-R253-R9JW-QG44
2026-06-18
Release of version 0.9.0 introducing network trust boundaries
2026-06-18

References & Sources

  • [1]GitHub Security Advisory GHSA-R253-R9JW-QG44
  • [2]Crawl4AI Repository
  • [3]Vulnerability Fix Commit
  • [4]Vulnerability Documentation Commit
  • [5]Crawl4AI Migration Guide (0.9.0)

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•2 days ago•CVE-2026-54068
5.9

CVE-2026-54068: Unauthenticated Server-Side Template Injection and SQLite Exfiltration in SiYuan PKM

An authentication bypass in the SiYuan personal knowledge management system before version 3.7.0 exposes a dynamic icon rendering endpoint. This endpoint processes client-supplied Go template directives. By submitting a crafted request, an unauthenticated remote attacker can leverage registered database template functions to execute arbitrary read-only SQL queries and exfiltrate workspace contents.

Amit Schendel
Amit Schendel
12 views•5 min read
•2 days ago•CVE-2026-54069
9.1

CVE-2026-54069: Authentication Bypass in SiYuan Note via Origin Header Spoofing

CVE-2026-54069 is a critical authentication bypass vulnerability in the SiYuan Note personal knowledge management system. The flaw is located in the HTTP server's middleware handling API authorization, which unconditionally trusts requests carrying a 'chrome-extension://' scheme in the Origin HTTP header, granting administrative access without validating API tokens.

Alon Barad
Alon Barad
10 views•5 min read
•2 days ago•CVE-2026-54089
9.1

CVE-2026-54089: Authentication Bypass by Spoofing in File Browser

CVE-2026-54089 is a critical authentication bypass vulnerability in File Browser affecting instances configured with proxy-based authentication. An unauthenticated remote attacker with direct network access can impersonate arbitrary users or register new accounts by spoofing configured HTTP headers.

Amit Schendel
Amit Schendel
8 views•7 min read
•2 days ago•GHSA-99J7-FHR2-XFJ4
10.0

GHSA-99J7-FHR2-XFJ4: Malicious Remote Code Execution Payload in 'exploration' Cargo Crate

The malicious Cargo package 'exploration' was uploaded to the crates.io registry. During compilation or package import, the crate executes code designed to establish an outbound TCP/HTTP connection, download an external second-stage binary, and execute the binary locally on the host machine. This creates an unauthenticated remote code execution vector impacting developer environments and continuous integration pipelines.

Amit Schendel
Amit Schendel
11 views•6 min read
•2 days ago•CVE-2026-54088
9.3

CVE-2026-54088: Pre-Authentication Remote Code Execution in File Browser Hook Authentication

CVE-2026-54088 is a critical command injection vulnerability in File Browser prior to version 2.63.6. When Hook Authentication is enabled, the application interpolates unsanitized credentials into a shell command, allowing unauthenticated remote code execution.

Alon Barad
Alon Barad
10 views•6 min read
•2 days ago•GHSA-QV4M-M73M-8HJ7
8.8

GHSA-qv4m-m73m-8hj7: Authenticated Arbitrary File Upload leading to Remote Code Execution in NotrinosERP

An authenticated remote code execution vulnerability exists in NotrinosERP (versions up to and including 1.0.0) within the Human Resource Management (HRM) module. Users with employee management permissions can upload arbitrary file types, including PHP scripts, which are written directly to a web-accessible directory. This allows for arbitrary code execution in the context of the web-server user.

Alon Barad
Alon Barad
8 views•6 min read