Repository logo
 

CHERI JNI: Sinking the Java Security Model into the C

Accepted version
Peer-reviewed

Type

Conference Object

Change log

Authors

Chisnall, David 
Davis, Brooks 
Gudka, Khilan 
Brazdil, David 
Joannou, Alexandre 

Abstract

Java provides security and robustness by building a high- level security model atop the foundation of memory protection. Unfortunately, any native code linked into a Java program – including the million lines used to implement the standard library – is able to bypass both the memory protection and the higher-level policies. We present a hardware-assisted implementation of the Java native code interface, which extends the guarantees required for Java’s security model to native code.

Our design supports safe direct access to buffers owned by the JVM, including hardware-enforced read-only access where appropriate. We also present Java language syntax to declaratively describe isolated compartments for native code.

We show that it is possible to preserve the memory safety and isolation requirements of the Java security model in C code, allowing native code to run in the same process as Java code with the same impact on security as running equivalent Java code. Our approach has a negligible impact on performance, compared with the existing unsafe native code interface. We demonstrate a prototype implementation running on the CHERI microprocessor synthesized in FPGA.

Description

Keywords

Journal Title

OPERATING SYSTEMS REVIEW

Conference Name

ASPLOS '17 Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems

Journal ISSN

0163-5980
1943-586X

Volume Title

51

Publisher

ACM
Sponsorship
Engineering and Physical Sciences Research Council (EP/K008528/1)
EPSRC (EP/K503757/1)
Defense Advanced Research Projects Agency Google, Inc. Isaac Newton Trust Thales E-Security