Native client: A sandbox for portable, untrusted x86 native code

B Yee, D Sehr, G Dardyk, JB Chen, R Muth… - Communications of the …, 2010 - dl.acm.org
B Yee, D Sehr, G Dardyk, JB Chen, R Muth, T Ormandy, S Okasaka, N Narula, N Fullagar
Communications of the ACM, 2010dl.acm.org
Native Client is a sandbox for untrusted x86 native code. It aims to give browser-based
applications the computational performance of native applications without compromising
safety. Native Client uses software fault isolation and a secure runtime to direct system
interaction and side effects through interfaces it controls. It further provides operating system
portability for binary code while supporting performance-oriented features generally absent
from Web application programming environments, such as thread support, instruction set …
Abstract
Native Client is a sandbox for untrusted x86 native code. It aims to give browser-based applications the computational performance of native applications without compromising safety. Native Client uses software fault isolation and a secure runtime to direct system interaction and side effects through interfaces it controls. It further provides operating system portability for binary code while supporting performance-oriented features generally absent from Web application programming environments, such as thread support, instruction set extensions such as SSE, and use of compiler intrinsics and hand-coded assembler. We combine these properties in an open architecture that encourages community review and third-party tools.
1. inTRoDucTion
As an application platform, the modern Web browser brings together a remarkable combination of resources, including seamless access to Internet resources, highproductivity programming languages such as JavaScript, and the richness of the Document Object Model (DOM) for graphics presentation and user interaction. While these strengths put the browser in the forefront as a target for new application development, it remains handicapped in a critical dimension: computational performance. Thanks to Moore’s Law and the zeal with which it is observed by the hardware community, many interesting applications get adequate performance in a browser despite this handicap. But there remains a set of computations that are generally infeasible for browser-based applications due to performance constraints, for example, simulation of Newtonian physics, computational fluid-dynamics, and high-resolution scene rendering. The current environment also tends to preclude the use of large bodies of high-quality code developed in languages other than JavaScript. Modern Web browsers provide extension mechanisms such as ActiveX7 and Netscape Plugin Application Programming Interface (NPAPI) 19 allowing native code to be loaded and run as part of a Web application. Such architectures allow plug-ins to circumvent the security mechanisms otherwise applied to Web content, while giving them access to full native performance, perhaps as a secondary consideration. Given this organization, and the absence of effective technical measures to constrain these plug-ins, browser applications that wish to use native code must rely
ACM Digital Library