Cloudanix VulnDB

CVE-2017-16516

High · 7.5

CVSS

7.5

EPSS

3.8%

Published

Nov 3, 2017

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

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.

Exploit Available
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

  1. Identify a network-accessible Ruby service that uses yajl-ruby to parse incoming JSON
  2. Craft a JSON document that triggers the yajl_string_decode abort condition
  3. Transmit the payload via HTTP, API, or other input channel
  4. 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