Oracle Database Java VM

General info

In a result of its research investigation efforts, Security Explorations discovered multiple security vulnerabilities in the implementation of a Java VM embedded in Oracle Database software.

This section of our website presents initial information regarding the project that lead to this discovery:

  • Official press statement containing general information about the impact of the vulnerabilities.
  • Frequently Asked Questions about our discovery.
  • Information about Proof of Concept codes illustrating discovered security issues.
  • Technical details of conducted attacks and security issues found.
  • Status of the communication with vendors of affected technologies.

Project newsroom

Oracle Database Java VM - Press Info
31
JAN 2014

Oracle Database Java VM - Press Info

Security Explorations, a security and vulnerability research company from Poland, discovered multiple security issues in the implementation (...)

Read more

FAQ

Why did you look into Oracle Database security?

We didn't plan to evaluate security of Oracle Database. This research was built upon "leftovers" from our Oracle Java Cloud Service project (unused bugs that didn't fit SE-2013-01 project).

What is Oracle Database Java VM?

Oracle Database Java VM (Oracle JVM or Aurora VM) is a custom implementation of a Java Virtual Machine by Oracle that is tightly integrated with Oracle Database software.

Is there anything specific about discovered vulnerabilities?

Discovered security issues violate Oracle's own "Secure Coding Guidelines for the Java Programming Language" [1]. Most of them demonstrate a very well known problem related to Java SE security (insecure use of Java Reflection API [2]). This API was a direct cause for dozens of security vulnerabilities in Java SE reported to the vendor in 2005, 2012 and 2013.

What is the impact of the issues found?

A user of Oracle Database software with a bare minimum privilege required to connect and login to it (with a "CREATE SESSION" privilege only) can successfully compromise its security.

What about a requirement for a "CREATE PROCEDURE" privilege to define Java objects in Oracle Database [3]?

We identified a vulnerability (Issue 20) that allows for an arbitrary bypass of that requirement.

Do discovered issues affect Java SE as well?

No. They affect a Java VM implementation of Oracle Database software only.

How come database privileges can be elevated from Java?

This is possible due to a tight integration of a Java VM and Oracle Database runtimes. Their security models do not really fit together. As a result, by combining a certain deficiency of Oracle Database security model with a Java VM implementation weakness a successful privilege elevation can be achieved.

Does it all mean that Java security vulnerabilities can pose a security risk to Oracle Database?

Java security weaknesses can pose a significant security risk to any software that relies on a vulnerable Java VM implementation processing untrusted, potentially malicious Java code. Oracle Database is no exception here.

Unfortunately, as of Nov 04, 2014, Oracle Support Documents 360870.1 [4] and 1074055.1 [5] still contained misleading and inaccurate information about the impact of Java Security Vulnerabilities on Oracle Database and Fusion Middleware products.

Java exploits make it in particular easy to elevate privileges to an administrator role in the environment of Oracle Database software.

Which system platforms of Oracle Database software are affected to identified flaws?

Discovered flaws are platform independent (Java level flaws). They affect all Oracle Database platforms that embed vulnerable Java VM implementation (HP-UX Itanium, IBM AIX on POWER Systems, IBM Linux on System z, Linux x86/x86-64, Oracle Solaris on SPARC/x86-64, Microsoft Windows x64).

Did you verify your findings on the most up-to-date version of Oracle Database software?

Yes. Almost all vulnerabilities (Issues 1-20) were confirmed to affect both Oracle Database 11g and 12c for Windows x64 and Linux x86-64 with the most recent patches applied (corresponding Patch Bundles / Patch Set Updates from May and Jun 2014). The remaining 2 issues were confirmed to affect the most up-to-date version of Oracle Database 12c for the same platforms.

Is Oracle CPU from Jul 15, 2014 closing any of the vulnerabilities you reported to the company?

No. As of Jul 24, 2014 all 22 vulnerabilities remain unpatched. We confirmed that they can be used to achieve arbitrary privilege elevation in Oracle Database 12c with Jul 2014 CPU applied.

Is Oracle CPU from Oct 14, 2014 closing any of the vulnerabilities you reported to the company?

According to the status report received from Oracle on Oct 24, 2014, this CPU addresses all 22 security vulnerabilities reported. Not all fixes for them have been available to the public on the CPU date though. Oracle Support Document 1912224.1 [6] indicates that patches for many platforms were made available 1-3 weeks later.

As a response to our inquiry regarding the reasons of issuing incomplete CPU fixes, Oracle claimed that it occasionally allowed the patches to be released the end of the month when the CPU was issued.

How long did you work on this project?

The whole research took us 4 months of work in total.

Do you plan to release more technical information about the issues uncovered?

We plan to publish all vulnerabilities' details and Proof of Concept codes through our website.

References:

PoC Codes

Last update: Jun-21-2014

Impact characteristics of the Proof of Concept (PoC) codes developed during the research of Oracle Database Java VM security:

PoC for Issue 1

  • complete Java security sandbox bypass, privilege elevation to database administrator role

PoC for Issues 2 and 3

  • complete Java security sandbox bypass, privilege elevation to database administrator role

PoC for Issue 4

  • complete Java security sandbox bypass, privilege elevation to database administrator role

PoC for Issues 5, 6 and 7

  • complete Java security sandbox bypass, privilege elevation to database administrator role

PoC for Issues 8, 9 and 10

  • complete Java security sandbox bypass, privilege elevation to database administrator role

PoC for Issues 11, 12 and 13

  • complete Java security sandbox bypass, privilege elevation to database administrator role

PoC for Issues 14, 15 and 16

  • complete Java security sandbox bypass, privilege elevation to database administrator role

PoC for Issues 17, 18 and 19

  • complete Java security sandbox bypass, privilege elevation to database administrator role

PoC for Issues 21 and 22

  • complete Java security sandbox bypass, privilege elevation to database administrator role

Details

This page presents details of security vulnerabilities and attack techniques discovered as a result of our Oracle Database Java VM security research project. These details are provided in a form of original vulnerability reports and accompanying Proof of Concept Codes.

Oracle Vulnerability Reports

  • SE-2014-01-ORACLE, Issues #1-20, PDF file, 484KB (download)
  • SE-2014-01-ORACLE-2, Issues #21-22, PDF file, 203KB (download)

Additionally, the slides for a keynote talk given at JavaLand conference in 2016 are also provided. This talk referred to SE-2014-01 and our other research projects while discussing key problems related to Java platform security, its ecosystem and vendors.

  • "Java (in)security", PDF file, 1.4MB (download)

DISCLAIMER

Proof of Concept Codes below are provided purely for educational purposes only. It is expressly forbidden to use them for any purposes that would violate any domestic or international laws. If you do not agree with this policy, please leave this page.

  • "Security Vulnerabilities in Oracle Database Java VM", Proof of Concept codes, ZIP file, 121KB (download)

Vendors

This page presents current status of the communication process with vendors of affected technologies.

Summary of the communication process:

  • 16-Jun-2014
- Vulnerability Notice along with Proof of Concept codes are sent to Oracle corporation (Issues 1-20)
- Oracle confirms successful reception and decryption of the vulnerability report. The company informs that it will investigate based on the data provided and get back to us soon.
  • 18-Jun-2014
- Oracle informs that it has not yet confirmed all of the issues reported, but it has filed the bugs and provides their tracking numbers. The company also informs that monthly updates will be delivered around the 24th of each month.
  • 21-Jun-2014
- Vulnerability Notice along with a Proof of Concept code are sent to Oracle corporation (Issues 21-22)
  • 23-Jun-2014
- Oracle confirms successful reception and decryption of the vulnerability report. The company informs that it will investigate based on the data provided and get back to us soon.
  • 24-Jun-2014
- Oracle provides a monthly status report for the reported issues. The company informs that 6 issues are fixed in main codeline and are scheduled for a future CPU. The remaining 14 issues are under investigation / being fixed in main codeline.
- Security Explorations asks Oracle for clarification regarding status of 14 issues ("Under investigation / Being fixed in main codeline" carrying misleading / no bug confirmation status information). The company also notifies Oracle that the received monthly status report didn't include information about 2 issues reported on 21 Jun 2014.
- Oracle informs that it is still trying to confirm Issues 21 and 22, but it filed 2 bugs and provides their tracking numbers.
  • 25-Jun-2014
- Oracle provides explanation of status information from its monthly report. The company informs that "Under investigation / Being fixed in main codeline" implies the company is working towards reproducing and subsequently fixing the issue (unconfirmed bug). After the bug is fixed, the status is changed to "Issue fixed in main codeline, scheduled for a future CPU" (confirmed issue).
- Security Explorations asks Oracle whether it needs any assistance in running the received Proof of Concept Codes or whether a confirmation of reported vulnerabilities from a 3rd party such as US-CERT would be helpful for the company. Security Explorations informs Oracle that it expects a clear confirmation or denial of the remaining 16 issues, regardless of their fixing status.
  • 26-Jun-2014
- Oracle informs that it confirmed all 20 issues reported on 16 Jun 2014. The company is yet to confirm the two remaining issues from 21 Jun 2014.
  • 07-Jul-2014
- Oracle informs that it confirmed Issues 21 and 22 reported on 21 Jun 2014.
  • 11-Jul-2014
- Security Explorations asks Oracle for the reason of not including the patches in company's Jul 2014 CPU for Oracle Database Java VM component vulnerabilities as indicated in a pre-release announcement of the CPU (the 6 issues that had been "fixed in main codeline and scheduled for a future CPU" according to the status report received from Oracle on 24 Jun 2014).
  • 14-Jul-2014
- Oracle informs that its developer did not follow company's normal process and incorrectly created a fix for version 12.1.0.2 of Oracle Database first. As a result, the status of 6 inquired issues was incorrect since the fix was not completed in the 12.2 release (the vulnerabilities had not yet been fixed in the main codeline).
  • 24-Jul-2014
- Oracle provides a monthly status report for the reported issues. The company informs that 17 issues are fixed in main codeline and are scheduled for a future CPU. The remaining 5 issues are under investigation / being fixed in main codeline.
  • 22-Aug-2014
- Oracle provides a monthly status report for the reported issues. The company informs that 17 issues are fixed in main codeline and are scheduled for a future CPU. The remaining 5 issues are under investigation / being fixed in main codeline.
  • 24-Sep-2014
- Oracle provides a monthly status report for the reported issues. The company informs that 18 issues are fixed in main codeline and are scheduled for a future CPU. The remaining 4 issues are under investigation / being fixed in main codeline.
  • 10-Oct-2014
- Oracle provides a status report regarding upcoming CPU. The company informs that fixes for all 22 issues will be incorporated into Critical Patch Update, due to be released on October 14, 2014.
  • 24-Oct-2014
- Oracle provides a status report for the reported issues. The company informs that Critical Patch Update was issued for all 22 vulnerabilities reported.
  • 31-Oct-2014
- Security Explorations ask Oracle for the reasons of issuing incomplete CPU fixes for Windows platform (missing Oracle JavaVM Component for database versions 12.1.0.1.1, 11.2.0.3.1 and 11.1.0.7.1, planned to be released on Nov 04, 2014 according to Oracle Support Doc ID 1912224.1).
  • 03-Nov-2014
- Oracle responds that it occasionally allows the patches to be released the end of the month when the CPU is issued. As a result some of these patches have been delayed.
  • 30-Oct-2015
- Security Explorations asks Oracle for CVE numbers corresponding to vulnerabilities reported as part of SE-2014-01 project (Issues 1-22).
- Oracle informs that it will gather the requested information and get back to us.
  • 02-Nov-2015
- Oracle provides CVE numbers for Issues 1-22.