CVE-2017-16516
High · 7.5CVSS
7.5
EPSS
3.8%
Published
Nov 3, 2017
CISA due date
—
Cloudanix analysis
A flaw in a common Ruby library for reading JSON data lets attackers send specially made input that crashes the whole application and stops it from working.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Crafted JSON input to Yajl::Parser.new.parse triggers a SIGABRT abort inside yajl_string_decode in yajl_encode.c, terminating the entire Ruby interpreter process.
Why it matters to the business
Ruby applications or services that accept untrusted JSON become unavailable until restarted, causing operational downtime and potential loss of service continuity for any dependent workloads.
How an attack unfolds
An attacker sends a maliciously crafted JSON payload to any endpoint that invokes yajl-ruby parsing; the library aborts the process, resulting in denial of service. Public exploits for this crash have been available since disclosure.
How to fix it
Upgrade the yajl-ruby dependency to a version that resolves the abort (for fulcio-fips (Chainguard) this is fixed in 1.4.5-r2). Validate that the updated gem is present in all builds and containers, then redeploy affected services.
How to confirm the fix worked
Confirm the installed yajl-ruby gem version meets or exceeds the fixed release, re-test parsing of known crashing payloads in a non-production environment, and monitor process stability under load.
Typical attack path
- Identify a network-accessible Ruby service that uses yajl-ruby to parse incoming JSON
- Craft a JSON document that triggers the yajl_string_decode abort condition
- Transmit the payload via HTTP, API, or other input channel
- Observe process termination and service outage
How to detect it
Search Ruby application and system logs for abrupt process terminations accompanied by SIGABRT or abort signals originating from yajl_encode.c around the time of JSON parsing operations.
What your security team should do
- Immediately upgrade all instances of yajl-ruby to the patched version and rebuild containers
- Add automated dependency scanning to CI pipelines to prevent re-introduction of vulnerable releases
- Review any custom JSON parsing code paths that accept external input and consider safer alternatives where feasible
The record
In the yajl-ruby gem 1.3.0 for Ruby, when a crafted JSON file is supplied to Yajl::Parser.new.parse, the whole ruby process crashes with a SIGABRT in the yajl_string_decode function in yajl_encode.c. This results in the whole ruby process terminating and potentially a denial of service.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| RubyGems | yajl-ruby | 0 | 1.3.1 |
| Debian:10 | burp | 0 | 2.1.32-2+deb10u1 |
| Debian:10 | ruby-yajl | 0 | 1.2.0-3.1 |
| Debian:10 | yajl | 0 | 2.1.0-3+deb10u2 |
| Debian:11 | burp | 0 | No fix |
| Debian:11 | r-cran-jsonlite | 0 | No fix |
| Debian:11 | ruby-yajl | 0 | 1.2.0-3.1 |
| Debian:11 | yajl | 0 | 2.1.0-3+deb11u2 |
| Debian:12 | burp | 0 | No fix |
| Debian:12 | epics-base | 0 | No fix |
| Debian:12 | r-cran-jsonlite | 0 | No fix |
| Debian:12 | ruby-yajl | 0 | 1.2.0-3.1 |
| Debian:12 | yajl | 0 | 2.1.0-3+deb12u2 |
| Debian:13 | burp | 0 | No fix |
| Debian:13 | epics-base | 0 | No fix |
| Debian:13 | r-cran-jsonlite | 0 | 1.8.8+dfsg-1 |
| Debian:13 | ruby-yajl | 0 | 1.2.0-3.1 |
| Debian:13 | yajl | 0 | 2.1.0-4 |
| Debian:7 | ruby-yajl | 0 | 1.1.0-2+deb7u1 |
| Mageia:9 | yajl | 0 | 2.1.0-6.1.mga9 |
| Ubuntu:16.04:LTS | ruby-yajl | 0 | No fix |
| Ubuntu:18.04:LTS | ruby-yajl | 0 | 1.3.1-1build1 |
| Ubuntu:20.04:LTS | ruby-yajl | 0 | 1.3.1-1build1 |
| Ubuntu:20.04:LTS | yajl | 0 | 2.1.0-3ubuntu0.20.04.1 |
| Ubuntu:22.04:LTS | yajl | 0 | 2.1.0-3ubuntu0.22.04.1 |
| Ubuntu:24.04:LTS | yajl | 0 | 2.1.0-5 |
| Ubuntu:Pro:14.04:LTS | yajl | 0 | 2.0.4-4ubuntu0.1~esm1 |
| Ubuntu:Pro:16.04:LTS | ruby-yajl | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | yajl | 0 | 2.1.0-2ubuntu0.16.04.1~esm1 |
| Ubuntu:Pro:18.04:LTS | yajl | 0 | 2.1.0-2ubuntu0.18.04.1~esm1 |
| gem | yajl-ruby | 1.3.0 | No fix |
Related vulnerabilities
- CVE-2026-73782 A format string vulnerability exists in the command line interface of AOS-CX that could… CWE-134
- CVE-2026-16821 IBM AIX 7.2, and 7.3 and IBM PowerVM VIOS 4.1 could allow a local attacker to gain… CWE-134
- CVE-2026-81574 In CodeMeter Runtime before versions 8.41a and 9.10, the logger does not sanitize input… CWE-134
- CVE-2026-63073 Issue summary: OpenSSL CMP response validation passed an unexpected response sender… CWE-134
- CVE-2026-17136 IBM AIX 7.2, and 7.3 and IBM PowerVM VIOS 4.1 could allow a remote attacker to execute… CWE-134
- CVE-2026-68553 Coturn is a free open source implementation of TURN and STUN Server. CWE-134
- CVE-2026-15961 IBM PowerVM Hypervisor FW1120.00, FW1110.00 through FW1110.30, and FW1060.00 through… CWE-134
- CVE-2026-12004 IBM Security Verify Access 10.0 through 10.0.9.2 and IBM Verify Identity Access 11.0… CWE-134