{"id":"CVE-2026-48592","state":"PUBLISHED","title":"Missing authorization check on save-job event handler in oban_web","description":"Missing Authorization vulnerability in oban-bg oban_web ('Elixir.Oban.Web.Jobs.DetailComponent' modules) allows unauthorized job worker substitution.\n\nThe handle_event(\"save-job\", ...) handler in 'Elixir.Oban.Web.Jobs.DetailComponent' does not perform an authorization check, unlike the sibling cancel, delete, and retry handlers which all verify the caller's privileges via can?/2. An authenticated user with :read_only access can push a forged save-job LiveView WebSocket event to overwrite a job's worker field with any other existing Oban.Worker module in the application. On the job's next execution attempt, Oban will invoke perform/1 on the attacker-chosen module instead of the intended one.\n\nThis issue affects oban_web: from 2.12.0 before 2.12.5.","publishedAt":"2026-05-26T19:46:48.611Z","updatedAt":"2026-05-27T15:41:23.434Z","severity":{"score":5.3,"label":"Medium","version":"4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N","source":"EEF"},"assigner":"EEF","products":["oban-bg oban_web"],"affected":[{"vendor":"oban-bg","product":"oban_web","packageName":"oban_web","packageURL":"pkg:hex/oban_web","defaultStatus":"unaffected","versions":[{"version":"2.12.0","status":"affected","lessThan":"2.12.5","versionType":"semver"}],"collectionURL":"https://repo.hex.pm","cpes":["cpe:2.3:a:oban_web_project:oban_web:*:*:*:*:*:*:*:*"],"modules":["'Elixir.Oban.Web.Jobs.DetailComponent'"],"programFiles":["lib/oban/web/live/jobs/detail_component.ex"],"programRoutines":[{"name":"'Elixir.Oban.Web.Jobs.DetailComponent':handle_event/3"}]},{"vendor":"oban-bg","product":"oban_web","packageName":"oban-bg/oban_web","packageURL":"pkg:github/oban-bg/oban_web","defaultStatus":"unaffected","versions":[{"version":"a17bc8c31286c9d516e2892cf5483d1c95e65d6c","status":"affected","lessThan":"ab3c5d1d3eba06c62045f16f2cd7781c7752e248","versionType":"git"}],"collectionURL":"https://github.com","cpes":["cpe:2.3:a:oban_web_project:oban_web:*:*:*:*:*:*:*:*"],"modules":["'Elixir.Oban.Web.Jobs.DetailComponent'"],"programFiles":["lib/oban/web/live/jobs/detail_component.ex"],"programRoutines":[{"name":"'Elixir.Oban.Web.Jobs.DetailComponent':handle_event/3"}],"repo":"https://github.com/oban-bg/oban_web.git"}],"references":["https://github.com/oban-bg/oban_web/security/advisories/GHSA-389x-rgxr-8m33","https://cna.erlef.org/cves/CVE-2026-48592.html","https://osv.dev/vulnerability/EEF-CVE-2026-48592","https://github.com/oban-bg/oban_web/commit/ab3c5d1d3eba06c62045f16f2cd7781c7752e248"],"weaknesses":["CWE-862"],"ingestedAt":"2026-10-29T20:12:07.131Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/48xxx/CVE-2026-48592.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-48592","state":"PUBLISHED","datePublished":"2026-05-26T19:46:48.611Z","dateUpdated":"2026-05-27T15:41:23.434Z","assignerShortName":"EEF","assignerOrgId":"6b3ad84c-e1a6-4bf7-a703-f496b71e49db","dateReserved":"2026-05-22T09:36:56.834Z"},"containers":{"cna":{"title":"Missing authorization check on save-job event handler in oban_web","descriptions":[{"lang":"en","value":"Missing Authorization vulnerability in oban-bg oban_web ('Elixir.Oban.Web.Jobs.DetailComponent' modules) allows unauthorized job worker substitution.\n\nThe handle_event(\"save-job\", ...) handler in 'Elixir.Oban.Web.Jobs.DetailComponent' does not perform an authorization check, unlike the sibling cancel, delete, and retry handlers which all verify the caller's privileges via can?/2. An authenticated user with :read_only access can push a forged save-job LiveView WebSocket event to overwrite a job's worker field with any other existing Oban.Worker module in the application. On the job's next execution attempt, Oban will invoke perform/1 on the attacker-chosen module instead of the intended one.\n\nThis issue affects oban_web: from 2.12.0 before 2.12.5."}],"affected":[{"vendor":"oban-bg","product":"oban_web","packageName":"oban_web","packageURL":"pkg:hex/oban_web","defaultStatus":"unaffected","versions":[{"version":"2.12.0","status":"affected","lessThan":"2.12.5","versionType":"semver"}],"collectionURL":"https://repo.hex.pm","cpes":["cpe:2.3:a:oban_web_project:oban_web:*:*:*:*:*:*:*:*"],"modules":["'Elixir.Oban.Web.Jobs.DetailComponent'"],"programFiles":["lib/oban/web/live/jobs/detail_component.ex"],"programRoutines":[{"name":"'Elixir.Oban.Web.Jobs.DetailComponent':handle_event/3"}]},{"vendor":"oban-bg","product":"oban_web","packageName":"oban-bg/oban_web","packageURL":"pkg:github/oban-bg/oban_web","defaultStatus":"unaffected","versions":[{"version":"a17bc8c31286c9d516e2892cf5483d1c95e65d6c","status":"affected","lessThan":"ab3c5d1d3eba06c62045f16f2cd7781c7752e248","versionType":"git"}],"collectionURL":"https://github.com","cpes":["cpe:2.3:a:oban_web_project:oban_web:*:*:*:*:*:*:*:*"],"modules":["'Elixir.Oban.Web.Jobs.DetailComponent'"],"programFiles":["lib/oban/web/live/jobs/detail_component.ex"],"programRoutines":[{"name":"'Elixir.Oban.Web.Jobs.DetailComponent':handle_event/3"}],"repo":"https://github.com/oban-bg/oban_web.git"}],"references":[{"url":"https://github.com/oban-bg/oban_web/security/advisories/GHSA-389x-rgxr-8m33","tags":["vendor-advisory","related"]},{"url":"https://cna.erlef.org/cves/CVE-2026-48592.html","tags":["related"]},{"url":"https://osv.dev/vulnerability/EEF-CVE-2026-48592","tags":["related"]},{"url":"https://github.com/oban-bg/oban_web/commit/ab3c5d1d3eba06c62045f16f2cd7781c7752e248","tags":["patch"]}],"metrics":[{"cvssV4_0":{"attackComplexity":"LOW","attackRequirements":"NONE","attackVector":"NETWORK","baseScore":5.3,"baseSeverity":"MEDIUM","privilegesRequired":"LOW","subAvailabilityImpact":"NONE","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","userInteraction":"NONE","vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N","version":"4.0","vulnAvailabilityImpact":"NONE","vulnConfidentialityImpact":"NONE","vulnIntegrityImpact":"LOW"},"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}]}],"problemTypes":[{"descriptions":[{"cweId":"CWE-862","description":"CWE-862 Missing Authorization","lang":"en","type":"CWE"}]}],"providerMetadata":{"shortName":"EEF","orgId":"6b3ad84c-e1a6-4bf7-a703-f496b71e49db","dateUpdated":"2026-05-27T15:41:23.434Z"},"configurations":[{"lang":"en","supportingMedia":[{"base64":false,"type":"text/html","value":"<p>The Oban.Web dashboard must be deployed and accessible to users with less than full job-management privileges (e.g. <tt>:read_only</tt>).</p>"}],"value":"The Oban.Web dashboard must be deployed and accessible to users with less than full job-management privileges (e.g. :read_only)."}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:a:oban_web_project:oban_web:*:*:*:*:*:*:*:*","versionEndExcluding":"2.12.5","versionStartIncluding":"2.12.0","vulnerable":true}],"negate":false,"operator":"OR"}],"operator":"AND"}],"credits":[{"lang":"en","type":"finder","value":"Peter Ullrich"},{"lang":"en","type":"remediation developer","value":"Parker Selbert"},{"lang":"en","type":"analyst","value":"Jonatan Männchen / EEF"}],"impacts":[{"capecId":"CAPEC-1","descriptions":[{"lang":"en","value":"CAPEC-1 Accessing Functionality Not Properly Constrained by ACLs"}]}],"source":{"discovery":"EXTERNAL"},"x_generator":{"engine":"cvelib 1.8.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-05-26T20:46:44.585227Z","id":"CVE-2026-48592","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-05-26T20:46:50.037Z"}}]}}}