|
|
Message-ID: <87zhh6a5rk.fsf@canonical.com>
Date: Fri, 08 Nov 2019 23:23:35 +1030
From: Alex Murray <alex.murray@...onical.com>
To: oss-security@...ts.openwall.com
Subject: CVE-2019-18397 - Stack buffer overflow in GNU FriBidi >= 1.0.0
CVE-2019-18397 - GNU FriBidi stack buffer overflow >= 1.0.0
-----------------------------------------------------------
Overview:
A stack buffer overflow in the fribidi_get_par_embedding_levels_ex()
function in lib/fribidi-bidi.c of GNU FriBidi 1.0.0 through 1.0.7
allows an attacker to cause a denial of service or possibly execute
arbitrary code by delivering crafted text content to a user, when this
content is then rendered by an application that uses FriBidi for text
layout calculations. Examples include any GNOME or GTK+ based
application that uses Pango for text rendering, as this internally uses
FriBidi for bidirectional text layout. For example, the attacker can
construct a crafted text file to be opened in GEdit, a crafted IRC
message to be viewed in HexChat or a crafted email to be viewed in
Evolution.
Detailed analysis:
The function fribidi_get_par_embedding_levels_ex()
in lib/fribidi-bidi.c of GNU FriBidi 1.0.0 through 1.0.7 contains a
fixed size buffer base_level_per_iso_level which is used to accumulate
the current isolate level while calculating the bi-directional
embedding levels of the requested text paragraph.
...
FriBidiLevel base_level_per_iso_level[FRIBIDI_BIDI_MAX_EXPLICIT_LEVEL];
...
When accumulating into this buffer, the index is incremented without
any check for overflow of the buffer length, resulting in a stack
buffer overflow when processing more then
FRIBIDI_BIDI_MAX_EXPLICIT_LEVEL elements.
...
RL_ISOLATE_LEVEL (pp) = isolate_level++;
base_level_per_iso_level[isolate_level] = new_level;
...
This is fixed by checking the current value of isolate_level against
the size of base_level_per_iso_level
(ie. FRIBIDI_BIDI_MAX_EXPLICIT_LEVEL) to ensure this is only
incremented when it will not subsequently overflow the bounds of the
array.
Affected Versions:
From 1.0.0 to 1.0.7 (no official upstream release has been made
containing the fix)
References:
https://github.com/fribidi/fribidi/commit/034c6e9a1d296286305f4cfd1e0072b879f52568
CRD:
2019-11-07 17:00 UTC
Credit:
Alex Murray of the Ubuntu Security Team
Powered by blists - more mailing lists
Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.