Vigil@nce: Ruby, denial of service of rb_ary_fill
July 2008 by Vigil@nce
SYNTHESIS
When a Ruby program uses the Array.fill() method with incorrect
parameters, it stops.
Gravity: 1/4
Consequences: denial of service of client
Provenance: document
Means of attack: 1 proof of concept
Ability of attacker: specialist (3/4)
Confidence: confirmed by the editor (5/5)
Diffusion of the vulnerable configuration: low (1/3)
Creation date: 03/07/2008
Identifier: VIGILANCE-VUL-7925
IMPACTED PRODUCTS
– Fedora [confidential versions]
– Unix - plateform
DESCRIPTION
The Ruby language is used to create object oriented scripts.
The Array.fill() method fills an array with repeated items. For
example:
a.fill("A", 0..2)
This method is implemented in the rb_ary_fill() function of the
array.c file.
However, if the repeat number is 0x3fffffff, an integer overflows.
This error leads to a NULL pointer dereferencing, then to a
segmentation fault.
An attacker allowed to inject a malicious value in Array.fill()
can thus stop the Ruby application.
CHARACTERISTICS
Identifiers: 453589, CVE-2008-2376, FEDORA-2008-6033,
VIGILANCE-VUL-7925