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·3 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

•10 minutes ago•GHSA-GFJ5-979R-92PW
9.3

GHSA-GFJ5-979R-92PW: Unauthenticated Authentication Bypass in @acastellon/auth via Header Spoofing

An unauthenticated authentication bypass vulnerability exists in @acastellon/auth, an authorization middleware package for Express-based microservices. The vulnerability allows a remote, unauthenticated attacker to completely bypass token validation checks in the validateToken() middleware via spoofed HTTP headers.

Alon Barad
Alon Barad
0 views•6 min read
•43 minutes ago•GHSA-QQF5-X7MJ-V43P
8.4

GHSA-QQF5-X7MJ-V43P: SQL Injection Vulnerabilities in Budibase Database Connectors

A technical analysis of SQL injection vulnerabilities affecting Budibase's database connectors for PostgreSQL, Microsoft SQL Server, and MySQL. Due to direct concatenation of schema and table identifiers into raw SQL queries, authenticated administrative users or malicious database schemas can execute arbitrary SQL commands.

Alon Barad
Alon Barad
3 views•8 min read
•about 1 hour ago•GHSA-2JQ4-Q6VV-4CP3
9.6

GHSA-2JQ4-Q6VV-4CP3: Arbitrary File Write via Path Traversal in Crawl4AI Downloads

A critical Arbitrary File Write vulnerability exists in Crawl4AI versions 0.8.9 and below. By manipulating download filenames via Content-Disposition headers or suggested_filename values, attackers can write arbitrary files to any location on the file system, potentially leading to Remote Code Execution.

Amit Schendel
Amit Schendel
3 views•5 min read
•about 3 hours ago•GHSA-WM69-2PC3-RMMF
8.6

GHSA-wm69-2pc3-rmmf: Unauthenticated Server-Side Request Forgery in Crawl4AI Docker Streaming Crawl Path

An unauthenticated Server-Side Request Forgery (SSRF) vulnerability was identified in the Crawl4AI Docker API server before version 0.9.0. The vulnerability exists because the streaming crawl endpoint (/crawl/stream) and the standard crawl endpoint with streaming enabled (/crawl with crawler_config.stream=true) bypass the validate_url_destination security filter. This allows remote, unauthenticated attackers to execute arbitrary HTTP requests targeting internal infrastructure, loopback interfaces, or cloud metadata endpoints like AWS/GCP services.

Amit Schendel
Amit Schendel
4 views•5 min read
•about 3 hours ago•CVE-2026-12565
5.3

CVE-2026-12565: Arbitrary File Write via Path Traversal in BBOT unarchive Module

CVE-2026-12565 is a medium-severity path traversal (Zip-Slip) vulnerability within the internal unarchive module of the BBOT (Black Lantern Security) OSINT framework. The vulnerability exists due to a failure to validate target paths before extracting archives using host-level command-line utilities. This allows remote, unauthenticated attackers to write arbitrary files outside of the target extraction folder on environments running legacy versions of GNU tar.

Alon Barad
Alon Barad
3 views•7 min read
•about 4 hours ago•CVE-2026-12566
3.1

CVE-2026-12566: Server-Side Request Forgery (SSRF) in Black Lantern Security BBOT docker_pull Module

A Server-Side Request Forgery (SSRF) vulnerability exists in the docker_pull module of Black Lantern Security BBOT. By returning a maliciously crafted WWW-Authenticate header from a rogue Docker registry or executing a Man-in-the-Middle (MitM) attack, an attacker can coerce the BBOT scanner into making arbitrary HTTP requests to internal system services or external infrastructure, potentially disclosing sensitive authorization tokens and host metadata.

Amit Schendel
Amit Schendel
5 views•6 min read