Skip to main content

facil.io EUVDEUVD-2026-24583

| CVE-2026-41146 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-04-22 GitHub_M GHSA-2x79-gwq3-vxxm
8.7
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send HTTP POST with '[i' JSON payload
  2. Delivery
    Parser enters infinite loop in fio_json_parse
  3. Exploit
    Worker thread pins CPU at 100%
  4. Execution
    Repeat 10-50x to exhaust server cores
  5. Impact
    Legitimate requests timeout/fail

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Successful exploitation requires the target application to invoke the vulnerable fio_json_parse function on attacker-controlled JSON input. This occurs in any facil.io or iodine web service that accepts JSON in HTTP request bodies, WebSocket messages, or other network-sourced data streams. No special server configuration, authentication, or non-default features are required-the vulnerability exists in default facil.io and iodine installations processing JSON. The attack works against any deployment accepting network connections (AV:N) and requires no user interaction (UI:N) or privileges (PR:N). Exploitation is NOT limited by: authentication mechanisms (affects public and authenticated endpoints equally), TLS/encryption status (attack payload is valid at application layer), or specific HTTP methods (POST, PUT, PATCH all viable). The only practical limitation is that the target service must actually parse the JSON payload rather than rejecting it at an earlier validation layer (reverse proxy, WAF, input schema validation).

Impact

The CVSS v4.0 score of 8.7 accurately reflects high real-world risk due to the combination of network-accessible attack vector (AV:N), low attack complexity (AC:L), no privileges required (PR:N), no user interaction needed (UI:N), and high availability impact (VA:H). The vulnerability enables trivial denial-of-service attacks: a single two-byte HTTP request can pin a CPU core at maximum utilization, and multiple requests can exhaust all CPU resources on the target server. The attack is highly automatable and requires no special conditions beyond the target application accepting JSON input. While CVSS indicates no confidentiality or integrity impact (VC:N, VI:N), the availability disruption can be severe for production services. The absence of EPSS scoring and CISA KEV listing suggests no widespread exploitation campaigns have been observed, but the extremely low barrier to exploitation (publicly documented minimal reproducer in GitHub advisory) means defenders should treat this as a priority for internet-facing services. The SSVC decision framework would classify this as exploitation=none (no evidence of active use), automatable=yes (trivial scripting), and technical impact=partial (availability only), suggesting organizations should apply fixes in normal patching cycles unless the service handles untrusted public JSON at scale.

Exploit ScenarioDerived

An attacker sends an HTTP POST request to a facil.io or iodine web service endpoint that accepts JSON input, with the minimal payload '[i' in the request body. The application invokes fio_json_parse on the untrusted input, and the parser enters an infinite loop when attempting to process the 'i' token in nested context. The worker process consumes 100% of one CPU core indefinitely without returning an error or crashing. By sending multiple concurrent requests (10-50 depending on server core count), the attacker exhausts all CPU resources, rendering the service unresponsive to legitimate users. Publicly available exploit code exists in the form of the documented minimal reproducer in the GitHub advisory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Apr 22, 2026

Remote unauthenticated denial of service affects facil.io (all versions prior to commit 5128747) and iodine (all versions before 0.7.59) through malformed JSON input triggering infinite CPU loop. Attackers can send crafted JSON payloads as small as two bytes ('[i') to the fio_json_parse function, causing the process to consume 100% of a CPU core indefinitely without crashing or returning an error. This vulnerability allows trivial resource exhaustion against any web service using these frameworks to parse untrusted JSON. EPSS data not available; no confirmed active exploitation (CISA KEV absent), but the attack requires only network access with no authentication and minimal complexity (CVSS AV:N/AC:L/PR:N), making exploitation straightforward once discovered.

RemediationAI

Upgrade to facil.io commit 5128747363055201d3ecf0e29bf0a961703c9fa0 or later, or upgrade iodine to version 0.7.59 or later, as documented in the vendor advisory at https://github.com/boazsegev/facil.io/security/advisories/GHSA-2x79-gwq3-vxxm. The fix commit at https://github.com/boazsegev/facil.io/commit/5128747363055201d3ecf0e29bf0a961703c9fa0 corrects the parser state machine to properly reject invalid tokens starting with 'i' or 'I'. If immediate patching is not feasible, implement request-level rate limiting and timeout enforcement (maximum 5-10 second request processing time) to contain resource exhaustion impact, though this only mitigates symptoms and does not prevent the CPU spin condition. Deploy web application firewalls or reverse proxies configured to validate JSON syntax before forwarding to the application, rejecting malformed payloads at the edge (note this adds latency and complexity but provides defense-in-depth). Monitor CPU utilization per worker process and implement automatic restart of workers exceeding sustained 90% CPU for more than 30 seconds to restore service availability during active attacks, though this creates service disruption and does not prevent repeated attacks.

Affected VersionsENISA

facil.io < 5128747363055201d3ecf0e29bf0a961703c9fa0
iodine < 0.7.59

Affected Packages

rubygems iodine fix: 0.7.59

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in rubygems

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

facil.io is a C-based micro-framework for high-performance web applications, and iodine is a Ruby web server that vendors the same C parser code. The vulnerability resides in the fio_json_parse function's state machine logic for handling JSON values. When the parser encounters a nested value beginning with 'i' or 'I' (such as the two-character payload '[i'), it enters an infinite loop in user space rather than properly identifying the invalid token and returning a parse error. The root cause is CWE-400 (Uncontrolled Resource Consumption), specifically an algorithmic complexity flaw where malformed input triggers worst-case parsing behavior. The affected CPE identifiers are cpe:2.3:a:boazsegev:facil.io:*:*:*:*:*:*:*:* and cpe:2.3:a:boazsegev:iodine:*:*:*:*:*:*:*:*, with all versions prior to the fix commit vulnerable. The parser's tolerance for missing commas in JSON arrays compounds the issue, as quoted-value forms like '[""i' also trigger the same code path after the parser consumes the empty string and treats the trailing 'i' as a new value.

Know when Iodine gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M) · only source for this CVE.

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

4
Patch released
Apr 29, 2026 - 20:46 nvd
Patch available
Patch available
Apr 22, 2026 - 03:01 EUVD
CVSS changed
Apr 22, 2026 - 02:22 NVD
8.7 (HIGH)
CVE Published
Apr 22, 2026 - 01:07 nvd
HIGH 8.7

DescriptionCVE.org

facil.io is a C micro-framework for web applications. Prior to commit 5128747363055201d3ecf0e29bf0a961703c9fa0, fio_json_parse can enter an infinite loop when it encounters a nested JSON value starting with i or I. The process spins in user space and pegs one CPU core at ~100% instead of returning a parse error. Because iodine vendors the same parser code, the issue also affects iodine when it parses attacker-controlled JSON. The smallest reproducer I found is [i. The quoted-value form that originally exposed the issue, [""i, reaches the same bug because the parser tolerates missing commas and then treats the trailing i as the start of another value. Commit 5128747363055201d3ecf0e29bf0a961703c9fa0 fixes the issue.

Executive ViewAI

Why It Matters

CVE-2026-41146 is a high-severity remote denial of service affecting facil.io and iodine JSON parsing libraries, allowing unauthenticated attackers to trigger infinite CPU loops with minimal two-byte payloads, potentially disabling web services that depend on these frameworks. Organizations running web applications built on vulnerable versions face immediate service availability risk, as exploitation requires only network access with no special credentials or complexity. Immediate patching is critical to prevent customer-facing outages.

Business Impact: High
Compensating Controls

Apply vendor patch. Interim mitigations pending patching: implement network-layer rate limiting and request size restrictions on JSON endpoints; configure WAF rules to detect and block malformed JSON payloads; establish CPU monitoring and alerting thresholds to detect exploitation attempts; isolate or disable affected services until patching is complete.

Threat Intelligence Overview

EPSS Score
0.0%
Top 87% exploitable
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy