Over the past month, there have been various news
articles
regarding OpenOffice.org (OO.o) security, particularly in comparison
with its main closed source rival, MS Office. Some articles
have depicted OO.o as vastly less secure based on research by an
organization within the French
Ministry of Defense. The situation is a lot more muddled than that and
unfortunately, because details are hard to come by, it is difficult to
fully evaluate the threat.
The original
article
(in French) described a meeting where a report on OO.o security was shared
with various French ministries. The report supposedly claimed that for
some threat types, OO.o was more vulnerable than MS Office. Another article,
with the provocative title
OpenOffice.org
less secure than Microsoft Office?,
appeared
shortly thereafter and fanned the flames, positing that the city of Paris and
other OO.o users in France might reconsider their tool choices based on the report.
A 'response' to the articles
appeared
on the OO.o website but did little to shed any light. It was claimed that
it would be inappropriate to respond to a "leak from a private meeting"
followed by some platitudes about security response by the OO.o team.
Perhaps unsurprisingly, there was no confirmation or denial of the
security issues.
Shortly thereafter, Sun's Technical Architect for OO.o, Malte Timmermann,
posted some information in his blog. He and the OO.o team
in Hamburg spoke with Eric Filiol, one of the authors of the report, to
discuss the findings. According to Timmermann, there were three issues, only
one of which was truly a bug and even it was "not really a security issue."
All of the issues seem to revolve around macros and how they are trusted
both by users and by the software itself.
Timmermann followed that up with another blog
posting
this week that gave a few more details. He claims that the original report
(which is to be published in the Journal in Computer Virology) was
"conceptual problems only, not about security exploits."
The problems described
all stem from an initial infection which happens via a user running untrusted
code (either as a regular executable or as a macro in an untrusted document).
Timmermann rightly points out that if a user runs code from untrusted sources,
changing security settings for OO.o may well be the least of their worries.
Untrusted code can do anything that the user running it has permission to do
and that has nothing to do with what OS or office suite you happen to be
running. It may be that users still need additional training so that they
do not run macros from untrusted documents, but OO.o does provide a security
warning before executing them. He also points out that both
MS Office and OO.o provide a powerful scripting language that has access to
the underlying system and that threats from running untrusted macros are
likely to be similar for both office suites.
So, depending on who you listen to, there are either some serious (but
largely unspecified, at least as of yet) security issues with OO.o, or
there are not. OO.o is more at risk for these (again unspecified) risks
than MS Office or it is not. There is at least one bug that Timmermann
mentions, but it has not yet been fixed (based on the most recent security
fix for OO.o which was 29 June, well before this information came to light).
It is not clear why there is so much murkiness surrounding these issues. Is
it due to 'responsible' disclosure policies? Or are folks unwilling to
disclose the most interesting pieces of the journal article before it is
published?
Around the time these issues were being discussed, there were a number of
'zero-day' exploits in the wild against various MS Office formats. It seems
likely that some of the technical press wanted to present 'balanced'
coverage and seized on this issue to offset the negative press about MS Office.
From the limited details we have seen so far, this particular report about the
security of OO.o would not seem to merit the coverage that it has gotten.
The Ruby on Rails web log
mentions an important security update for Rails.
"The cat is out of the bag, so heres the full disclosure edition of the current security vulnerability. With Rails 1.1.0 through 1.1.5 (minus the short-lived 1.1.3), you can trigger the evaluation of Ruby code through the URL because of a bug in the routing code of Rails. This means that you can essentially take down a Rails process by starting something like /script/profiler, as the code will run for a long time and that process will be hung while it happens. Other URLs can even cause data loss.
Weve backported a fix to all the affected versions for those of you that cant update."
Yan Rong Ge discovered out-of-boundary memory access in heartbeat, the
subsystem for High-Availability Linux. This could be used by a remote
attacker to cause a denial of service.
The Ruby on Rails developers have corrected some weaknesses in
action_controller/, relative to the handling of the user input and the
LOAD_PATH variable. A remote attacker could inject arbitrary entries
into the LOAD_PATH variable and alter the main Ruby on Rails process.
The security hole has only been partly solved in version 1.1.5. Version
1.1.6 now fully corrects it.
Luigi Auriemma discovered two buffer overflow vulnerabilities in
Warzone 2100 Resurrection. The recvTextMessage function of the Warzone
2100 Resurrection server and the NETrecvFile function of the client use
insufficiently sized buffers. A remote attacker could exploit these
vulnerabilities by sending specially crafted input to the server, or
enticing a user to load a specially crafted file from a malicious
server. This may result in the execution of arbitrary code with the
permissions of the user running Warzone 2100 Resurrection.
The WordPress developers have confirmed a vulnerability in capability
checking for plugins. By exploiting a flaw, a user can circumvent
WordPress access restrictions when using plugins. The actual impact depends
on the configuration of WordPress and may range from trivial to critical,
possibly even the execution of arbitrary PHP code.
From the Red Hat advisory: "A bug was found in Apache where an invalid Expect header sent to the server
was returned to the user in an unescaped error message. This could
allow an attacker to perform a cross-site scripting attack if a victim was
tricked into connecting to a site and sending a carefully crafted Expect
header."
The GNU Binutils has a buffer overflow vulnerability in libbfd.
Maliciously crafted Tektronix Hex Format files with improper length
characters can cause a crash and possibly lead to the execution of
arbitrary code.
The BusyBox 1.1.1 passwd command does not use a proper salt when generating
passwords. This would create an instance where a brute force attack could
take very little time.
A race condition in bzip2 1.0.2 and earlier allows local users to modify
permissions of arbitrary files via a hard link attack on a file while it is
being decompressed, whose permissions are changed by bzip2 after the
decompression is complete. Also specially crafted bzip2 archives may cause
an infinite loop in the decompressor.
From the Debian-Testing alert: Mehdi Oudad "deepfear" and Kevin Fernandez "Siegfried" from the Zone-H
Research Team discovered a buffer overflow in kkstrtext.h of the ktools
library, which is included in (at least) centericq and motor.
It was discovered that one of the utilities shipped with chmlib, a
library for dealing with Microsoft CHM files, performs insufficient
sanitizing of filenames, which might lead to directory traversal.
There is a boundary error in the clamav code used to unpack Windows PE executable files; the result could potentially allow a remote attacker to execute code on the system running clamav.
Richard Harms discovered that cpio did not sufficiently validate file
properties when creating archives. Files with e. g. a very large size
caused a buffer overflow. By tricking a user or an automatic backup
system into putting a specially crafted file into a cpio archive, a
local attacker could probably exploit this to execute arbitrary code
with the privileges of the target user (which is likely root in an
automatic backup system).
The Vixie cron daemon does not check the return code from setuid(); if that call can be made to fail, a local attacker may be able to execute commands as root.
A buffer overflow in Cscope 15.5, and possibly multiple overflows, allows
remote attackers to execute arbitrary code via a C file with a long
#include line that is later browsed by the target.
Cyrus-SASL contains an unspecified vulnerability in the DIGEST-MD5
process that could lead to a Denial of Service. An attacker could possibly
exploit this vulnerability by sending specially crafted data stream to the
Cyrus-SASL server, resulting in a Denial of Service even if the attacker is
not able to authenticate.
Justin Winschief and Andrew Steets discovered a bug in dhcp, the DHCP
server for automatic IP address assignment, which causes the server to
unexpectedly exit.
Toth Andras discovered that the fbgs framebuffer postscript/PDF viewer
contains a typo, which prevents the intended filter against malicious
postscript commands from working correctly. This might lead to the
deletion of user data when displaying a postscript file.
This CERT advisory contains details on
multiple vulnerabilities in Mozilla products, including Firefox, SeaMonkey
and Thunderbird. The most serious vulnerabilities could allow a remote
attacker to execute arbitrary code on an affected system.
Several remote vulnerabilities have been discovered in freeradius, a
high-performance RADIUS server, which may lead to SQL injection or denial
of service.
The FreeType library has several integer overflow vulnerabilities.
If a user can be tricked into installing a specially
crafted font file, arbitrary code can be executed with the privilege
of the user.
Tavis Ormandy of the Gentoo Linux Security Audit Team discovered an integer
overflow in the BFD library, resulting in a heap overflow. A review also
showed that by default, gdb insecurely sources initialization files from
the working directory. Successful exploitation would result in the
execution of arbitrary code on loading a specially crafted object file or
the execution of arbitrary commands.
A format string vulnerability has been discovered in gedit. Calling
the program with specially crafted file names caused a buffer
overflow, which could be exploited to execute arbitrary code with the
privileges of the gedit user.
GnuPG has an integer overflow vulnerability. An attacker can
create an overly long packet that can cause GnuPG to crash or
possibly overwrite memory, causing a denial of service or
possible code execution.
zgrep in gzip before 1.3.5 does not handle shell metacharacters like '|'
and '&' properly when they occurred in input file names. This could be
exploited to execute arbitrary commands with user privileges if zgrep is
run in an untrusted directory with specially crafted file names.
Yan Rong Ge discovered that wrong permissions on a shared memory page in
heartbeat, the subsystem for High-Availability Linux could be exploited by
a local attacker to cause a denial of service.
The ImageMagick DisplayImageCommand has a heap overflow vulnerability.
If an maliciously created unexpanded glob is passed to ImageMagick,
a heap overflow can result.
The kdebase package (and kcheckpass in particular) found in KDE versions 3.2.0 through 3.4.2 suffers from a lock file handling error which can enable a local attacker to obtain root access. See this advisory for details.
The KDE Display Manager(KDM) is vulnerable to a local symlink attack.
A local user can use this to read arbitrary files that they do not
have permission to access. See this KDE
advisory for more information.
Kate / Kwrite, as shipped with KDE 3.2.x up to including 3.4.0, creates a file backup before saving a modified file. These backup files are created with default permissions, even if the original file had more strict permissions set. See this advisory for more information.
The ftdi_sio driver (usb/serial/ftdi_sio.c) in Linux kernel 2.6.x up to
2.6.17, and possibly later versions, allows local users to cause a denial
of service (memory consumption) by writing more data to the serial port
than the driver can handle, which causes the data to be queued.
There is a race condition error in the "posix-cpu-timers.c" script that
does not prevent another CPU from attaching the timer to an exiting
process. This could be exploited by attackers to cause a denial of
service.
A flaw due to errors in "powerpc/kernel/signal_32.c" and
"powerpc/kernel/signal_32.c" could allow userspace to provoke a machine
check on 32-bit kernels.
An infinite loop in "netfilter/xt_sctp.c" could be exploited by attackers
to exhaust all available memory resources, creating a denial of service
condition.
Some kerberos applications fail to check the results of setuid() calls, with the result that, if that call fails, they could continue to execute as root after thinking they had switched to a nonprivileged user. A local attacker who can cause these calls to fail (through resource exhaustion, presumably) could exploit this bug to gain root privileges.
Luigi Auriemma discovered that DUMB, a tracker music library, performs
insufficient sanitizing of values parsed from IT music files, which might
lead to a buffer overflow and execution of arbitrary code if manipulated
files are read.
Szymon Zygmunt and Michal Bartoszkiewicz discovered a memory alignment
error in libgadu (from ekg, console Gadu Gadu client, an instant
messaging program) which is included in gaim, a multi-protocol instant
messaging client, as well. This can not be exploited on the x86
architecture but on others, e.g. on Sparc and lead to a bus error,
in other words a denial of service.
Several buffer overflows were found in libmms. By tricking a user into
opening a specially crafted remote multimedia stream with an application
using libmms, a remote attacker could overwrite an arbitrary memory portion
with zeros, thereby crashing the program.
Peter Bieringer discovered that the Perl Net::Server, is vulnerable to a format string attack which may be exploitable by remote attackers. Among others, the "postgrey" utility is affected by this vulnerability.
libpam-ldap, the PAM LDAP interface, has a vulnerability in which
it fails to authenticate with an LDAP server which is not configured
properly, allowing an authentication bypass.
In pngrutil.c, the function png_decompress_chunk() allocates
insufficient space for an error message, potentially overwriting stack
data, leading to a buffer overflow.
A heap based buffer overflow bug was found in the way libpng strips alpha
channels from a PNG image. An attacker could create a carefully crafted PNG
image file in such a way that it could cause an application linked with
libpng to crash or execute arbitrary code when the file is opened by a
victim.
The t2p_write_pdf_string function in libtiff 3.8.2 and earlier is vulnerable
to a buffer overflow. Attackers can use a TIFF file with UTF-8 characters
in the DocumentName tag to overflow a buffer, causing a denial of service,
and possibly the execution of arbitrary code.
LibVNCServer fails to properly validate protocol types effectively
letting users decide what protocol to use, such as "Type 1 - None".
LibVNCServer will accept this security type, even if it is not offered
by the server.
Yuuichi Teranishi discovered a flaw in libxml2 versions prior to 2.6.6.
When fetching a remote resource via FTP or HTTP, libxml2 uses special
parsing routines. These routines can overflow a buffer if passed a very
long URL. If an attacker is able to find an application using libxml2 that
parses remote resources and allows them to influence the URL, then this
flaw could be used to execute arbitrary code.
libxml2 prior to version 2.6.14 has multiple buffer overflow
vulnerabilities, if a local user passes a specially crafted
FTP URL, arbitrary code may be executed.
An arbitrary command execute bug was found in the lynx "lynxcgi:" URI
handler. An attacker could create a web page redirecting to a malicious URL
which could execute arbitrary code as the user running lynx.
TAKAHASHI Tamotsu discovered that mutt's IMAP backend did not sufficiently
check the validity of namespace strings. If an user connects to a malicious
IMAP server, that server could exploit this to crash mutt or even execute
arbitrary code with the privileges of the mutt user. See this Secunia advisory for more
information.
Jean-David Maillefer discovered a format string bug in the
date_format() function's error reporting. By calling the function with
invalid arguments, an authenticated user could exploit this to crash
the server.
MySQL 5.0.18 and earlier allows local users to bypass logging mechanisms
via SQL queries that contain the NULL character, which are not properly
handled by the mysql_real_query function. NOTE: this issue was originally
reported for the mysql_query function, but the vendor states that since
mysql_query expects a null character, this is not an issue for mysql_query.
Kurt Fitzner discovered that the NBD (network block device) server did not
correctly verify the maximum size of request packets. By sending specially
crafted large request packets, a remote attacker who is allowed to access
the server could exploit this to execute arbitrary code with root
privileges.
When starting xntpd with the -u option and specifying the
group by using a string not a numeric gid the daemon uses
the gid of the user not the group. This problem is now fixed
by this update.
Several vulnerabilities have been discovered in OpenOffice.org, a free
office suite.
It turned out to be possible to embed arbitrary BASIC macros in
documents in a way that OpenOffice.org does not see them but executes them
anyway without any user interaction. (CVE-2006-2198)
It is possible to evade the Java sandbox with specially crafted Java
applets. (CVE-2006-2199)
Loading malformed XML documents can cause buffer overflows and cause a
denial of service or execute arbitrary code. (CVE-2006-3117)
There are two vulnerabilities with perl when it is used in a setuid mode. The PERLIO_DEBUG environment variable can be used to overwrite arbitrary files; there is also an associated buffer overflow which can be exploited to gain root access.
The php wordwrap() function is vulnerable to an integer overflow.
Attackers can submit long arguments to cause a heap-based buffer
overflow, allowing arbitrary code execution.
PHP 5.x and PHP 4.4.2 have a problem with the substr_compare() function.
An attacker can use an out-of-bounds offset argument to cause a
memory access violation, causing a denial of service.
A bug in zend_hash_del() allowed attackers to prevent unsetting of some variables
It was discovered that phpbb2, a web based bulletin board, insufficiently
sanitizes values passed to the "Font Color 3" setting, which might lead to
the execution of injected code by admin users.
The phpbb2 web forum has a number of vulnerabilities including:
a web script injection problem, a protection mechanism bypass, a
security check bypass, a remote global variable bypass, cross site
scripting vulnerabilities, an SQL injection vulnerability,
a remote regular expression modification problem, missing input
sanitizing, and a missing request validation problem.
Stefan Esser reported multiple vulnerabilities
found in phpMyAdmin. The $GLOBALS variable allows modifying the global
variable import_blacklist to open phpMyAdmin to local and remote file
inclusion, depending on your PHP version (CVE-2005-4079, PMASA-2005-9).
Furthermore, it is also possible to conduct an XSS attack via the
$HTTP_HOST variable and a local and remote file inclusion because the
contents of the variable are under total control of the attacker
(CVE-2005-3665, PMASA-2005-8).
Some input is not properly sanitized before being used in a SQL statement
in the underlying PostgreSQL database. A remote attacker could provide
malicious input to a pike program, which might result in the execution of
arbitrary SQL statements.
The PostgreSQL team has put out a set of "urgent updates" (in the form of the 7.3.15, 7.4.13, 8.0.8, and 8.1.4 releases) closing a
newly-discovered set of SQL injection issues. Details about the problem
can be found on the
technical information page; in short: multi-byte encodings can be used
to defeat normal string sanitizing techniques. The update fixes one problem
related to invalid multi-byte characters, but punts on another by simply
disallowing the old, unsafe technique of escaping single quotes with a
backslash.
Marcus Meissner discovered that the winbind plugin of pppd does not
check the result of the setuid() call. On systems that configure PAM
limits for the maximum number of user processes and enable the winbind
plugin, a local attacker could exploit this to execute the winbind
NTLM authentication helper as root. Depending on the local winbind
configuration, this could potentially lead to privilege escalation.
Py2Play uses Python pickles to send objects over a peer-to-peer game network, that clients accept without restriction the objects and code sent by peers. A remote attacker participating in a Py2Play-powered game can send
malicious Python pickles, resulting in the execution of arbitrary
Python code on the targeted game client.
Multiple unspecified vulnerabilities in Ruby before 1.8.5 allow remote
attackers to bypass "safe level" checks via unspecified vectors involving
the alias function and "directory operations".
Luigi Auriemma discovered multiple flaws in the Scorched 3D game
server, including a format string vulnerability and several buffer
overflows. A remote attacker could exploit these vulnerabilities to crash
a game server or execute arbitrary code with the rights of the game server
user.
Sendmail has a vulnerability in the way it handles multi-part MIME messages.
A remote attacker can create a specially crafted email message that can
be used to crash the sendmail process, causing a denial of service.
The useradd tool from the shadow-utils package has a potential security
problem. When a new user's mailbox is created, the permissions are
set to random garbage from the stack, potentially allowing the
file to be read or written during the time before fchmod() is called.
A buffer overflow in UnZip 5.50 and earlier allows local users to execute
arbitrary code via a long filename command line argument. NOTE: since the
overflow occurs in a non-setuid program, there are not many scenarios under
which it poses a vulnerability, unless unzip is passed long arguments when
it is invoked from other programs.
xtensive testing of libwww's handling of multipart/byteranges content from
HTTP/1.1 servers revealed multiple logical flaws and bugs in
Library/src/HTBound.c
Federico L. Bossi Bonin discovered a buffer overflow in the HTTP input
module. By tricking an user into opening a malicious remote media
location, a remote attacker could exploit this to crash Xine library
frontends (like totem-xine, gxine, or xine-ui) and possibly even
execute arbitrary code with the user's privileges.
xine-lib does an improper input data boundary check on
MPEG streams. A specially crafted MPEG file can be
created that can cause arbitrary code execution when the
file is accessed.
Several format string vulnerabilities have been discovered in xine-ui,
the user interface of the xine video player, which may cause a denial
of service.
There is a buffer overflow in the Xrender extension of the X.Org server; any process which is able to connect to the server may be able to exploit this overflow to run arbitrary code. Since the X server runs as root on most systems, this vulnerability could be exploited to gain root access. See the X.Org advisory for more information.
xpdf has a number of integer overflows.
A remote attacker can trick a user into opening a maliciously
crafted pdf file, allowing the attacker to execute code with the
privileges of the local user.
This also affects the Poppler library, cupsys and tetex-bin.
Zope version 2.7.0 to 2.7.8, 2.8.0 to 2.8.7, and 2.9.0 to 2.9.3 has a
privilege escalation vulnerability related to its failure to deactivate the
raw command. Remote users with privileges to edit zope pages with
RestructuredText can cause arbitrary files to become exposed.
Ever wanted to know more about high-profile security writer Bruce Schneier?
A quick visit or two to the Bruce Schneier facts site may
be just what you need.