The GNOME Structured File Library is a utility library for reading and writing structured file formats. This library replaces libole2 and is used in projects such as gnumeric, mrproject, abiword, libwv2 and koffice. It is generally used to access MS OLE2 streams.
Remote exploitation of a heap overflow vulnerability in libgsf, as included in various vendors' operating system distributions, could allow an attacker to execute arbitrary code.
Vulnerable Systems:
* Gnome Structured File library(libgsf) version 1.14.0
Immune Systems:
* Gnome Structured File library(libgsf) version 1.14.2
The problem specifically exists in the 'ole_init_info' function; the function only obtains enough for the number specified in 'num_bat' when allocating memory. Later, when reading the file contents, the number specified in 'num_metabat' is used as the bounds for a loop. Due to insufficient validation of the aforementioned variables, an attacker could cause a heap overflow.
Successful exploitation of this vulnerability requires an attacker to persuade a user into opening a specially crafted OLE document. If successful, the attacker could execute arbitrary code with the permissions of the victim.
Inside of the 'ole_info_read_metabat' function, values read from the file are validated to be within a range which depends on the size of the file. Successful exploitation may be somewhat mitigated by this validation. However, as file size increases, the number of allowed values increases.
Vendor Status:
The libgsf maintainers have addressed this problem with version 1.14.2.