PatchSiren

PatchSiren cyber security CVE debrief

CVE-2026-48593 oban-bg CVE debrief

CVE-2026-48593 describes an uncontrolled resource consumption vulnerability in oban_web, the web dashboard component for the Oban job processing library in Elixir. The flaw exists in the `Elixir.Oban.Web.CronExpr` module, specifically in how cron expressions are parsed and expanded for display. When a user with dashboard access views the cron job list, the `describe/1` function processes cron expressions through `parse_range/1`, which parses range endpoints without bounds validation. The downstream helpers `expand_dom_parts/1` and `expand_dow_parts/1` then materialize these ranges eagerly using `Enum.to_list/1`. A malicious actor with permission to schedule cron jobs can submit an expression such as `0 0 1-100000000 * *`, triggering allocation of approximately 2.4 GB of memory and causing the BEAM node to stall or crash. Notably, a sibling helper `extract_dom_values` already implements range bounds checking, but the expansion helpers do not, indicating an incomplete fix pattern. The vulnerability affects oban_web versions from 2.12.0 through 2.12.4. The CVSS 4.0 vector indicates network attack vector, low attack complexity, privileged access required, and user interaction required, with high availability impact. The CWE-400 classification confirms uncontrolled resource consumption. A patch is available in version 2.12.5.

Vendor
oban-bg
Product
oban_web
CVSS
MEDIUM 5.9
CISA KEV
Not listed in stored evidence
Original CVE published
2026-05-26
Original CVE updated
2026-07-23
Advisory published
2026-05-26
Advisory updated
2026-07-23

Who should care

Organizations running oban_web versions 2.12.0-2.12.4 with multi-user dashboard access; Elixir/Phoenix applications using Oban's cron scheduling with non-admin job creators; teams with memory-constrained BEAM deployments; security-conscious shops seeking to prevent DoS via resource exhaustion

Technical summary

The vulnerability stems from missing bounds validation in `parse_range/1` within `Elixir.Oban.Web.CronExpr`. When rendering cron expressions for dashboard display, range endpoints are parsed via `Integer.parse/1` without maximum value checks. The expansion helpers `expand_dom_parts/1` and `expand_dow_parts/1` subsequently call `Enum.to_list/1` on the parsed range, causing eager allocation of a list containing all integers in the range. An expression like `0 0 1-100000000 * *` generates a 100-million-element list, consuming ~2.4 GB RAM. The `extract_dom_values` helper already validates range bounds, suggesting the fix pattern exists but was not applied consistently. The attack requires: (1) ability to schedule cron jobs (PR:L), and (2) a dashboard user to view the job list (UI:P). The BEAM's per-process heap isolation limits blast radius to the rendering process, but node-wide garbage collection pauses and memory pressure can cause cascading failures.

Defensive priority

medium

Recommended defensive actions

  • Upgrade oban_web to version 2.12.5 or later to obtain the bounds-checking fix for cron range expansion
  • Review and audit existing cron job schedules for maliciously constructed range expressions, particularly those with unusually large numeric ranges
  • Implement input validation at the application layer for cron expressions before they reach the Oban scheduling system, enforcing reasonable bounds on range endpoints
  • Monitor BEAM node memory usage and set appropriate resource limits to contain potential denial-of-service impacts from similar resource exhaustion issues
  • Restrict permissions for cron job scheduling to trusted administrative users only, as the vulnerability requires privileged access to exploit
  • Consider implementing circuit breakers or timeouts for dashboard rendering operations that process user-contributed cron expressions

Evidence notes

CVE description confirms affected versions 2.12.0 before 2.12.5. GitHub commit 9998b7e284e02fdd4645dd6231760038e63b584d provides patch evidence. GitHub Security Advisory GHSA-6xh2-93p9-vqh4 documents the issue. Erlef CNA record provides authoritative vulnerability details. OSV entry EEF-CVE-2026-48593 corroborates. CVSS 4.0 vector from NVD source: AV:N/AC:L/AT:P/PR:L/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N. CWE-400 weakness classification confirmed.

Sources and references

Verified primary and authoritative sources

  • CVE-2026-48593 CVE Program record

    Publisher, destination, and source semantics verified

    URL: https://www.cve.org/CVERecord?id=CVE-2026-48593

    CVE Program - Official CVE Program record with source-provided CVE metadata.

  • CVE-2026-48593 NVD vulnerability detail

    Publisher, destination, and source semantics verified

    URL: https://nvd.nist.gov/vuln/detail/CVE-2026-48593

    NIST National Vulnerability Database - Official NIST NVD detail page and source-specific vulnerability assessment.

Supplemental references

  • Source reference

    Unverified legacy reference

    URL: https://cna.erlef.org/cves/CVE-2026-48593.html

    6b3ad84c-e1a6-4bf7-a703-f496b71e49db

  • Source reference

    Unverified legacy reference

    URL: https://github.com/oban-bg/oban_web/commit/9998b7e284e02fdd4645dd6231760038e63b584d

    6b3ad84c-e1a6-4bf7-a703-f496b71e49db

  • Source reference

    Unverified legacy reference

    URL: https://github.com/oban-bg/oban_web/security/advisories/GHSA-6xh2-93p9-vqh4

    6b3ad84c-e1a6-4bf7-a703-f496b71e49db

  • Source reference

    Unverified legacy reference

    URL: https://osv.dev/vulnerability/EEF-CVE-2026-48593

    6b3ad84c-e1a6-4bf7-a703-f496b71e49db

Methodology and review provenance

AI-assisted synthesis based on stored public vulnerability evidence. System validation, approval state, and publication status do not by themselves establish human review of this revision. PatchSiren helps prioritize defensive review and does not prove exposure or remediation on any system.