February 13, 2013
This article was contributed by Linda Jacobson
Since August 2012, there has been increasing buzz about security holes in
Oracle's Java implementation. The hubbub reached such proportions that
US National Public Radio (NPR) stations
were heard repeating recommendations (originating from CERT)
that people disable all Java plugins on
their systems. The noise started when Security Explorations (SE), a
one-person Polish company run by Adam Gowdiak, went public about security
vulnerabilities after
malware was detected that exploited two issues SE had reported to
Oracle in April 2012.
On February 1, 2013, Oracle released a new version
of Java that fixed most of the issues that SE uncovered, with the
exception of one, identified as "issue #51." This article describes the
history of this process, where the security vulnerabilities were detected,
an explanation of the different kinds of vulnerabilities detected, and how
all of these relate to OpenJDK.
SE has been examining security issues in Java, and detecting points of
attack, since 2002. It has worked closely and, for the most part,
amicably with Sun and Oracle, and has exercised what has been called
"responsible disclosure," (i.e. notifying companies about their
vulnerabilities, and refusing to release details about known holes,
until the companies have had time to fix them). This relationship was
strained during 2012 after Oracle failed to address all of the issues that SE
had reported to it in the patches to Java over a six-month period. After the
malware attack of August 2012, SE went public, presenting
at Devoxx [PDF], and releasing a
technical report [PDF] in November
2012. These disclosures claim that, as far back as 2005, SE reported to Sun
on many of the
weaknesses that led to the current issues. Both disclosures detail the
specific issues
detected by SE and ways to exploit
them to effect a complete security compromise of a Java installation.
Around the same time, SE stepped up its research, finding not only
31 issues in Oracle's Java, but 17 in IBM's version, and 2 in Apple's.
Of these, 17 Oracle bugs could result in a full compromise of the Java
security sandbox, which is the means by which Java isolates potentially
untrustworthy software. Since OpenJDK uses the same code base as Oracle's
Java, those issues were present in OpenJDK as well. SE's November
technical report lists 50 known
issues in total. Several more were reported to Oracle by SE since that report,
but are not yet public. After Oracle's February update of Java only one issue,
issue #51, remains unresolved.
Most of the issues discovered relate to the Java
Reflection API. This is
a powerful tool that provides for dynamic loading of classes, as well as
access to their members, and is what makes component architectures, like
Java Beans, possible. However, there is inherent risk in the very
nature of allowing access across unknown classes.
The kinds of access allowed include:
- Obtaining an object of a given
class, given the name of the class, via forName().
- obtaining the methods of a class using getMethods()
- Invoking a method in another class via the method invoke(),
which allows the caller to provide the arguments to the called
methods.
There are Field and Method classes that correspond to the
underlying fields and
methods, as well as a Constructor class
that allows you to create new instances of classes. These all inherit from the
java.lang.reflect.AccessibleObject class, which has a private
field called "override". If override is true then
operations and accesses are allowed to the caller regardless of the
caller's privileges.
In its research, SE found numerous places where combinations of
misuses of forName() and invoke(), along with improper
access to
the override field
allowed systems to become vulnerable. In addition, there is a type field
of the Field object that represents the type of an underlying object.
In the technical report, Gowdiak imagined a scenario where:
the type of the field denoting java.lang.Object value is changed to
int. In such a case, access to fields of the object may lead to
memory accesses from the base pointer denoted by the integer value
as it will be confused with the object reference.
SE further asserts that one can impersonate trusted callers
via controlling the parameters of Reflection API calls made by system
classes.
In Java 7, Oracle added another level of security, via indirection,
called a "lookup class." What SE found was that the lookup classes
themselves were vulnerable. The security check is conducted in
the MethodHandles.Lookup class prior to any method handle creation. This
check allows for access to arbitrary members (methods, constructors, and
fields) of restricted classes if the lookup object and a target class
are from the same class loader namespace. Also, by default, a lookup
object instance uses a caller of the MethodHandles.Lookup() method as a
lookup class. Therefore, a security breach can be effected by calling
this method from system code to create a lookup object with a system class.
In SE's technical report there are numerous examples of all the
exploitation vectors that they used to compromise the
Java security sandbox. All were combinations of the weaknesses described
above, since no one weakness by itself was sufficient to escape the sandbox.
There are a number of consequences of these exploits, including: an
attacker could define a
class and cause it to be loaded into a privileged class loader
namespace; security checking could be completely turned off (via calling
SetSecurityManager() with a NULL argument); permissions of an unsafe
object could be changed at will; malicious classes could inherit from
privileged classes and redefine trusted methods with malicious ones; or
any combination of those.
The relationship of OpenJDK to Oracle's Java Standard Edition (SE) is
complex. OpenJDK is
the reference implementation for Oracle's Java SE. However, bug fixes do
not automatically propagate from one to the other (in either direction),
since they the projects are developed independently. That said, one week after Oracle
released its fixes to Java, OpenJDK 7 was updated to
reflect all of the fixes. OpenJDK users will want to upgrade at the
first opportunity.
In its report, SE noted that it searched for holes in Java precisely
because Java's
security is so good. A more timely response from Oracle might have been
desirable. However, at this point, nine months from when Oracle learned of
the deficiencies, it issued a release that fixed all of the bugs detailed
in SE's technical report, as well as
several that were only identified in the last couple months.
[The author wishes to thank the many
contributors to the Fedora project's Java developers list, who provided
valuable information on the upgrades to OpenJDK and their
relationship to Oracle's releases. A special shout out goes to Omair
Majid, who provided links to the information as well.]
Comments (3 posted)
Here at LWN, we are considering making some changes to how we handle
security advisories from distributors and the vulnerabilities to which they
refer. Before doing anything rash, though, we'd like to ask you, our
readers, what you think. If you have a moment, please have a look at
this article containing a discussion of the
situation and a quick survey on how useful our update and vulnerability
information is now. The answers we get will guide us in any changes that
we may decide to make.
Comments (none posted)
Brief items
I have heard from people who ought to know, that a popular satellite
phone protocol actually *broadcasts* the reported/calculated location
of each phone, in plaintext beacons from the satellite that anyone who
tunes to the right frequency can receive. I wonder what sort of NSA [US
National Security Agency]
influence was used in designing *that* protocol.
--
John Gilmore
So, if you're playing along at home, DHS [US Department of Homeland Security] has decided, based on its own
review of its own directives, that it can search any electronic device
within 100 miles of the border without requiring a warrant, probable cause,
reasonable suspicion or anything like that -- because actually respecting
the Constitution "would be operationally harmful" and wouldn't really
create any "civil rights/civil liberties benefits" for you.
--
Mike
Masnick
I'm waking up in the middle of the night and have to try a few more
passwords just so I can get back to sleep. For those who don't know,
dreaming of password combinations sucks.
--
Jeremiah
Grossman is forced to crack his own password
Comments (1 posted)
Guillaume Emont
describes
his work using the Chromium sandbox mechanism to make video decoding in
GStreamer more secure. "
The way setuid-sandbox works is rather
straightforward: there is a sandboxme command that needs to be installed
setuid root. You run sandboxme my_command and then from inside my_command,
you first set up the file descriptors that you will need (being careful not
to put there anything that could allow to escape the sandbox, more on that
later), and then you call the provided chrootme() function, which will tell
the sandboxme process to restrict the privileges that my_command has
(e.g. it can still read and write on the fds that it has open, but it
cannot open new ones)."
Comments (none posted)
New vulnerabilities
android-tools: temporary file vulnerability
| Package(s): | android-tools |
CVE #(s): | CVE-2012-5564
|
| Created: | February 10, 2013 |
Updated: | February 13, 2013 |
| Description: |
The adb tool creates a log file under /tmp with a static name, making it vulnerable to symbolic link attacks. |
| Alerts: |
|
Comments (none posted)
curl: code execution
| Package(s): | curl |
CVE #(s): | CVE-2013-0249
|
| Created: | February 8, 2013 |
Updated: | February 25, 2013 |
| Description: |
From the cURL advisory:
libcurl is vulnerable to a buffer overflow vulnerability when communicating
with one of the protocols POP3, SMTP or IMAP.
When negotiating SASL DIGEST-MD5 authentication, the function
Curl_sasl_create_digest_md5_message() uses the data provided from the server
without doing the proper length checks and that data is then appended to a
local fixed-size buffer on the stack.
This vulnerability can be exploited by someone who is in control of a server
that a libcurl based program is accessing with POP3, SMTP or IMAP. For
applications that accept user provided URLs, it is also thinkable that a
malicious user would feed an application with a URL to a server hosting code
targetting this flaw.
This vulnerability can be used for remote code execution (RCE) on vulnerable
systems.
|
| Alerts: |
|
Comments (none posted)
dnsmasq: access restriction bypass
| Package(s): | dnsmasq |
CVE #(s): | CVE-2013-0198
|
| Created: | February 7, 2013 |
Updated: | February 18, 2013 |
| Description: |
From the Mageia advisory:
This update completes the fix for CVE-2012-3411 provided with dnsmasq-2.63.
It was found that after the upstream patch for CVE-2012-3411 issue was
applied, dnsmasq still:
- replied to remote TCP-protocol based DNS queries (UDP protocol ones
were corrected, but TCP ones not) from prohibited networks, when the
--bind-dynamic option was used,
- when --except-interface lo option was used dnsmasq didn't answer
local or remote UDP DNS queries, but still allowed TCP protocol based
DNS queries,
- when --except-interface lo option was not used local / remote TCP
DNS queries were also still answered by dnsmasq. |
| Alerts: |
|
Comments (none posted)
drupal: multiple vulnerabilities
| Package(s): | drupal |
CVE #(s): | |
| Created: | February 7, 2013 |
Updated: | February 13, 2013 |
| Description: |
From the Mageia bug report:
Multiple vulnerabilities were fixed in the supported Drupal core versions
7(DRUPAL-SA-CORE-2013-001).
* A reflected cross-site scripting vulnerability (XSS) was identified in
certain Drupal JavaScript functions that pass unexpected user input into jQuery
causing it to insert HTML into the page when the intended behavior is to select
DOM elements. Multiple core and contributed modules are affected by this issue.
* A vulnerability was identified that exposes the title or, in some cases, the
content of nodes that the user should not have access to.
* Drupal core provides the ability to have private files, including images. A
vulnerability was identified in which derivative images (which Drupal
automatically creates from these images based on "image styles" and which may
differ, for example, in size or saturation) did not always receive the same
protection. Under some circumstances, this would allow users to access image
derivatives for images they should not be able to view. |
| Alerts: |
|
Comments (none posted)
gnome-screensaver: unauthorized session access
| Package(s): | gnome-screensaver |
CVE #(s): | CVE-2013-1050
|
| Created: | February 12, 2013 |
Updated: | February 13, 2013 |
| Description: |
From the Ubuntu advisory:
It was discovered that gnome-screensaver did not start automatically after
logging in. This may result in the screen not being automatically locked
after the inactivity timeout is reached, permitting an attacker with
physical access to gain access to an unlocked session. |
| Alerts: |
|
Comments (none posted)
gnutls: plaintext recovery
| Package(s): | gnutls |
CVE #(s): | CVE-2013-1619
|
| Created: | February 13, 2013 |
Updated: | April 8, 2013 |
| Description: |
From the CVE entry:
The TLS implementation in GnuTLS before 2.12.23, 3.0.x before 3.0.28, and 3.1.x before 3.1.7 does not properly consider timing side-channel attacks on a noncompliant MAC check operation during the processing of malformed CBC padding, which allows remote attackers to conduct distinguishing attacks and plaintext-recovery attacks via statistical analysis of timing data for crafted packets, a related issue to CVE-2013-0169. |
| Alerts: |
|
Comments (none posted)
gnutls: denial of service
| Package(s): | gnutls |
CVE #(s): | CVE-2012-1663
|
| Created: | February 12, 2013 |
Updated: | February 13, 2013 |
| Description: |
From the CVE entry:
Double free vulnerability in libgnutls in GnuTLS before 3.0.14 allows remote attackers to cause a denial of service (application crash) or possibly have unspecified other impact via a crafted certificate list. |
| Alerts: |
|
Comments (none posted)
ircd-hybrid: denial of service
| Package(s): | ircd-hybrid |
CVE #(s): | CVE-2013-0238
|
| Created: | February 8, 2013 |
Updated: | February 18, 2013 |
| Description: |
From the Debian advisory:
Bob Nomnomnom reported a Denial of Service vulnerability in IRCD-Hybrid,
an Internet Relay Chat server. A remote attacker may use an error in
the masks validation and crash the server.
|
| Alerts: |
|
Comments (none posted)
kernel: denial of service
| Package(s): | kernel |
CVE #(s): | CVE-2013-0231
|
| Created: | February 8, 2013 |
Updated: | February 21, 2013 |
| Description: |
From the Xen
advisory:
Xen's PCI backend drivers in Linux allow a guest with assigned PCI device(s)
to cause a DoS through a flood of kernel messages, potentially affecting other
domains in the system. |
| Alerts: |
|
Comments (none posted)
kernel: privilege escalation
| Package(s): | kernel |
CVE #(s): | CVE-2013-0268
|
| Created: | February 10, 2013 |
Updated: | March 15, 2013 |
| Description: |
The kernel's MSR register driver relied only upon filesystem-level access checks to restrict users who could write registers. As a result, the root user could access registers even if the capabilities that would ordinarily restrict such activity (CAP_SYS_RAWIO) had been dropped. The consequences are severe — execution of arbitrary code in kernel mode — but exploitation requires a process already running as root. |
| Alerts: |
|
Comments (1 posted)
mariadb: password brute-force vulnerability
| Package(s): | mariadb |
CVE #(s): | CVE-2012-5627
|
| Created: | February 10, 2013 |
Updated: | February 13, 2013 |
| Description: |
The mariadb COM_CHANGE_USER operation fails to abort the session when an incorrect password is supplied, enabling many passwords to be tried in quick succession. |
| Alerts: |
|
Comments (none posted)
mysql/mariadb: information disclosure
Comments (none posted)
openssh: denial of service
| Package(s): | openssh |
CVE #(s): | CVE-2010-5107
|
| Created: | February 13, 2013 |
Updated: | April 8, 2013 |
| Description: |
From the Red Hat bugzilla:
A denial of service flaw was found in the way default server configuration of OpenSSH, a open source implementation of SSH protocol versions 1 and 2, performed management of its connection slot. A remote attacker could use this flaw to cause connection slot exhaustion on the server.
|
| Alerts: |
|
Comments (none posted)
openssl: multiple vulnerabilities
| Package(s): | openssl |
CVE #(s): | CVE-2013-0166
CVE-2013-0169
|
| Created: | February 8, 2013 |
Updated: | April 8, 2013 |
| Description: |
From the OpenSSL advisory:
SSL, TLS and DTLS Plaintext Recovery Attack (CVE-2013-0169)
Nadhem Alfardan and Kenny Paterson have discovered a weakness in the handling
of CBC ciphersuites in SSL, TLS and DTLS. Their attack exploits timing
differences arising during MAC processing. Details of this attack can be
found at: http://www.isg.rhul.ac.uk/tls/
TLS 1.1 and 1.2 AES-NI crash (CVE-2012-2686)
A flaw in the OpenSSL handling of CBC ciphersuites in TLS 1.1 and TLS 1.2 on
AES-NI supporting platforms can be exploited in a DoS attack. |
| Alerts: |
|
Comments (none posted)
postgresql: information disclosure/denial of service
| Package(s): | postgresql |
CVE #(s): | CVE-2013-0255
|
| Created: | February 11, 2013 |
Updated: | February 21, 2013 |
| Description: |
From the Red Hat bugzilla:
An array index error, leading to out of heap-based buffer bounds read flaw was found in the way PostgreSQL, an advanced Object-Relational database management system (DBMS), performed retrieval of textual form of error message representation when processing certain enumeration types. An unprivileged database user could issue a specially-crafted SQL query that, when processed by the server component of the PostgreSQL service, would lead to denial of service (daemon crash) or disclosure (of certain portions of) server memory. |
| Alerts: |
|
Comments (none posted)
qt: information disclosure
| Package(s): | qt |
CVE #(s): | CVE-2013-0254
|
| Created: | February 13, 2013 |
Updated: | March 22, 2013 |
| Description: |
From the Red Hat bugzilla:
A security flaw was found in the way QSharedMemory class implementation of the Qt toolkit created shared memory segments (they were created with world-readable and world-writeable permissions). A local attacker could use this flaw to read or alter content of particular shared memory segment, possibly leading to their ability to obtain sensitive information or influence behaviour of shared memory segment reader process. |
| Alerts: |
|
Comments (none posted)
rails: protection bypass/code execution
| Package(s): | rails |
CVE #(s): | CVE-2013-0276
CVE-2013-0277
|
| Created: | February 13, 2013 |
Updated: | March 15, 2013 |
| Description: |
From the CVE entries:
ActiveRecord in Ruby on Rails 3.2.x before 3.2.12, 3.1.x before 3.1.11, and 2.3.x before 2.3.17 allows remote attackers to bypass the attr_protected protection mechanism and modify protected model attributes via a crafted request. (CVE-2013-0276)
Active Record in Ruby on Rails 3.x before 3.1.0 and 2.3.x before 2.3.17 allows remote attackers to cause a denial of service or execute arbitrary code via crafted serialized attributes that cause the +serialize+ helper to deserialize arbitrary YAML. (CVE-2013-0277)
|
| Alerts: |
|
Comments (none posted)
sssd: file modification and denial of service
| Package(s): | sssd |
CVE #(s): | CVE-2013-0220
CVE-2013-0219
|
| Created: | February 10, 2013 |
Updated: | March 11, 2013 |
| Description: |
The system security services daemon suffers from two vulnerabilities:
- A race condition in the copying and removal of user directory trees could enable symbolic link attacks by a local attacker, possibly leading to the removal or modification of arbitrary directory trees.
- Various out-of-bound read flaws could be exploited via a hostile packet to crash the sssd server.
|
| Alerts: |
|
Comments (none posted)
vlc: two code execution flaws
| Package(s): | vlc |
CVE #(s): | |
| Created: | February 7, 2013 |
Updated: | February 13, 2013 |
| Description: |
From the Videolan advisories [1, 2]:
Summary : Buffer overflows in freetype renderer and HTML subtitle parser
When parsing a specially crafted file, a buffer overflow might occur.
If successful, a malicious third party could trigger an invalid memory access, leading to a crash of VLC or arbitratry code execution.
Summary : Buffer Overflow in ASF Demuxer
When parsing a specially crafted ASF movie, a buffer overflow might occur.
If successful, a malicious third party could trigger an invalid memory access, leading to a crash of VLC media player's process. In some cases attackers might exploit this issue to execute arbitrary code within the context of the application but this information is not confirmed. |
| Alerts: |
|
Comments (none posted)
wireshark: multiple vulnerabilities
| Package(s): | wireshark |
CVE #(s): | CVE-2013-1572
CVE-2013-1573
CVE-2013-1574
CVE-2013-1575
CVE-2013-1576
CVE-2013-1577
CVE-2013-1578
CVE-2013-1579
CVE-2013-1580
CVE-2013-1581
CVE-2013-1582
CVE-2013-1583
CVE-2013-1584
CVE-2013-1585
CVE-2013-1586
CVE-2013-1587
CVE-2013-1588
CVE-2013-1589
CVE-2013-1590
|
| Created: | February 12, 2013 |
Updated: | March 8, 2013 |
| Description: |
From the openSUSE advisory:
wireshark 1.8.5 fixes bugs and security issues.
Vulnerabilities fixed:
- Infinite and large loops in the Bluetooth HCI, CSN.1,
DCP-ETSI DOCSIS CM-STAUS, IEEE 802.3 Slow Protocols,
MPLS, R3, RTPS, SDP, and SIP dissectors wnpa-sec-2013-01
CVE-2013-1572 CVE-2013-1573 CVE-2013-1574 CVE-2013-1575
CVE-2013-1576 CVE-2013-1577 CVE-2013-1578 CVE-2013-1579
CVE-2013-1580 CVE-2013-1581
- The CLNP dissector could crash wnpa-sec-2013-02
CVE-2013-1582
- The DTN dissector could crash wnpa-sec-2013-03
CVE-2013-1583 CVE-2013-1584
- The MS-MMC dissector (and possibly others) could crash
wnpa-sec-2013-04 CVE-2013-1585
- The DTLS dissector could crash wnpa-sec-2013-05
CVE-2013-1586
- The ROHC dissector could crash wnpa-sec-2013-06
CVE-2013-1587
- The DCP-ETSI dissector could corrupt memory
wnpa-sec-2013-07 CVE-2013-1588
- The Wireshark dissection engine could crash
wnpa-sec-2013-08 CVE-2013-1589
- The NTLMSSP dissector could overflow a buffer
wnpa-sec-2013-09 CVE-2013-1590
+ Further bug fixes and updated protocol support as listed
in the:
Wireshark 1.8.5 Release Notes
|
| Alerts: |
|
Comments (none posted)
wordpress: cross-site scripting and request forgery
| Package(s): | wordpress |
CVE #(s): | CVE-2013-0235
CVE-2013-0236
CVE-2013-0237
|
| Created: | February 10, 2013 |
Updated: | February 13, 2013 |
| Description: |
The wordpress publishing system suffers from two cross-site scripting vulnerabilities and one server-side request forgery vulnerability that might be exploitable to compromise a site. See the wordpress 3.5.1 release announcement for more information. |
| Alerts: |
|
Comments (none posted)
Page editor: Jake Edge
Next page: Kernel development>>