Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend HTTP POST with '[i' JSON payload
-
DeliveryParser enters infinite loop in fio_json_parse
-
ExploitWorker thread pins CPU at 100%
-
ExecutionRepeat 10-50x to exhaust server cores
-
ImpactLegitimate 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 |
| 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 |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
Lifecycle Timeline
4DescriptionCVE.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
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Path traversal in the static file service in Iodine less than 0.7.33 allows an unauthenticated, remote attacker to read
(1) iodined.c and (2) user.c in iodine before 0.7.0 allows remote attackers to bypass authentication by continuing execu
EUVD-2026-24583
GHSA-2x79-gwq3-vxxm
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB