{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-108372", "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "state": "PUBLISHED", "assignerShortName": "GitHub_M", "dateReserved": "2026-10-09T21:36:27.042Z", "datePublished": "2026-10-16T21:29:13.757Z", "dateUpdated": "2026-10-16T21:29:13.757Z" }, "containers": { "cna": { "title": "LoopX serve-status permissive CORS policy exposes control-plane state and private Markdown files", "problemTypes": [ { "descriptions": [ { "cweId": "CWE-346", "lang": "en", "description": "CWE-346: Origin Validation Error", "type": "CWE" } ] }, { "descriptions": [ { "cweId": "CWE-942", "lang": "en", "description": "CWE-942: Permissive Cross-domain Policy with Untrusted Domains", "type": "CWE" } ] } ], "metrics": [ { "cvssV4_0": { "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "PASSIVE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "baseScore": 7.1, "baseSeverity": "HIGH", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N", "version": "4.0" } } ], "references": [ { "name": "https://github.com/loopx-project/loopx/security/advisories/GHSA-vx2m-gpq4-8j5q", "tags": [ "x_refsource_CONFIRM" ], "url": "https://github.com/loopx-project/loopx/security/advisories/GHSA-vx2m-gpq4-8j5q" }, { "name": "https://github.com/loopx-project/loopx/pull/3137", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/loopx-project/loopx/pull/3137" }, { "name": "https://github.com/loopx-project/loopx/commit/838720fba42bd22f71b5bb763ec406f7bdf4c940", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/loopx-project/loopx/commit/838720fba42bd22f71b5bb763ec406f7bdf4c940" }, { "name": "https://github.com/loopx-project/loopx/releases/tag/v0.4.5", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/loopx-project/loopx/releases/tag/v0.4.5" } ], "affected": [ { "vendor": "huangruiteng", "product": "loopx", "versions": [ { "version": ">= 0.0.1, < 0.4.5", "status": "affected" } ] } ], "providerMetadata": { "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "shortName": "GitHub_M", "dateUpdated": "2026-10-16T21:29:13.757Z" }, "descriptions": [ { "lang": "en", "value": "Open and provider-neutral, LoopX is a lightweight state kernel and local-first control plane for loop engineering. From version 0.0.1 until 0.4.5, `loopx serve-status` in `loopx/status_server.py` uses `StatusRequestHandler._send_json()` and `do_OPTIONS()` to send `Access-Control-Allow-Origin: *` for unauthenticated responses on predictable loopback ports. A remote attacker can cause an operator who visits attacker-controlled web content to issue cross-origin requests to `GET /status.json`, `GET /review-material?goal_id=...&path=...`, `GET /`, and `POST /control-plane/configure-goal/dry-run`, exposing control-plane state, goal and run information, local absolute paths, private Markdown files below registered goal roots, and dry-run configuration projections. The affected routes do not provide cross-origin writes or arbitrary-file access. This issue is fixed in version 0.4.5." } ], "source": { "advisory": "GHSA-vx2m-gpq4-8j5q", "discovery": "UNKNOWN" } } } }