2 Native Client Release 0.1
5 This file documents issues known at the time of the release, with an
6 emphasis on security-related issues (and possibly some neglected
7 robustness or functionality issues). Please see
8 http://code.google.com/p/nativeclient/wiki/ReleaseNotes for the most
9 recent information. See README.html in this directory for an
10 introduction to Native Client. For the full version/release number
11 of this release, refer to nacl/googleclient/VERSION.
13 CHANGES SINCE THE PREVIOUS RELEASE
15 See the CURRENT VERSION CHANGES section at the bottom of this file.
17 BROWSER SUPPORT LIMITATIONS
19 Native Client supports Firefox 3 on Linux, Windows and MacOS, and
20 Chrome, Safari and Opera on Windows.
22 Support for the following browsers is not available at this time:
25 These browsers are partially supported:
26 * Camino on MacOS appears to work but has had minimal testing
27 * Firefox 2 on MacOS: We STRONGLY encourage Mac users to upgrade
28 their Firefox version to 3 for Native Client. On Firefox 2,
29 control, command and alt keys are not enabled due to
30 an eavesdropping vulnerability. Note the control key is used
31 for firing weapons in Quake.
32 * Safari on MacOS: However, mouse events don't work.
34 OPERATING SYSTEM SUPPORT LIMITATIONS
36 Native Client does not work on 64-bit versions of Windows. Many
37 versions of 64-bit Windows lack the system call required to set
38 up protected memory segments. We believe that Native Client works
39 on 32-bit Vista and Windows XP.
41 LIMITED VIRTUAL MACHINE SUPPORT
43 Some virtual machines do not implement the CPUID instruction
44 correctly. As a result, the Native Client sandbox can be defeated via
45 an instruction decoder desynchronization attack on certain VMs. We
46 believe VMWare works properly. The following VMs are known to have
47 exploitable CPUID implementation defects:
52 NPAPI SUPPORT IS PRELIMINARY
54 NPAPI was designed (and prior to Native Client *was*) only for trusted
55 code. As such, we think it is possible there are many exploitable
56 security problems with the NPAPI API itself and with its current
57 implementations. Our focus to date for NPAPI has been on functionality
58 rather than security. We will probably be revising our NPAPI
59 implementation to make it much more restrictive, and considering
60 variation between various browser implementations of NPAPI.
62 OUTER SANDBOX NOT INCLUDED IN THIS RELEASE
64 Our outer sandbox implementations are not sufficiently stable yet to
65 be worthy of sharing at this time. Stay tuned!
67 NO "FRIENDLY" INSTALLERS
69 Our goal in releasing Native Client at this time is to get feedback
70 from the security and research community to help us make the system
71 better, and not to get a large number of users. As such, we don't
72 provide a consumer-oriented install. Our current installer is
73 implemented as a part of our build system.
77 XaoS builds only on Linux at this time. Quake requires downloading
78 source from www.libsdl.org, but should build on all three platforms.
79 Neither is provided pre-built, due to GPL license considerations.
80 We hope to streamline these builds in a future release.
82 DOXYGEN REQUIRED TO BUILD DOCUMENTATION
84 If you discover the MODE=all option to our scons build, and you
85 don't have doxygen installed, you will not be able to build.
87 CURRENT VERSION CHANGES
89 The March 9 release contains the following changes.
92 - This release is not binary compatible with earlier releases. You need
93 to recompile old code before running it with this release.
94 - Changed the expiration date from March 17 to April 17.
95 - Clarified install and build instructions. Added a warning: don't use
98 User interface changes:
99 - On Linux, when a NaCl module stops responding, the plug-in now pops up
100 a message box allowing the user to terminate the module.
101 - Native Client now explicitly terminates on unsupported versions of
102 Windows. We only support Windows XP and after, and for now we will
103 disallow running on any 64-bit version of Windows.
106 - Changed the NPAPI demos to wait for Native Client modules to finish
107 loading. This should fix hangs in Lua, Monte Carlo Estimate for Pi,
108 and other examples that use NPAPI.
109 - Staggered loading of multiple instances of Quake.
110 - Changed srpc_url_as_nacl_desc.html to use embed instead of object.
112 Changes that affect developers of Native Client modules:
113 - Improved API reference overview, including adding library information.
114 - Added libunimpl, a library of unimplemented C library functions, to
116 - Added libgoogle_nacl_npruntime to the SDK. With this change, you don't
117 need to build Native Client to be able to build modules that use NPAPI.
118 - Added NACLLOG and NACLVERBOSITY, two environment variables that enable
119 logging output (even on Windows). To use these, set NACLLOG to the
120 location of the output file (for example, c:\tmp\nacllog.txt) and
121 set NACLVERBOSITY to a value between 0 and 4. When NACLVERBOSITY is 0,
122 you get minimal output from the system runtime; 4 means every syscall
123 handler emits a few messages.
126 - Building Native Client on Windows now fails if any warnings occur.
127 - Added Platform Qualification Test V0.1. Moved CPU white/black list
128 code from ncv to platform_qual_test. Minor refactoring of CPUID interfaces.
129 - Most libraries can now be built by SCons, as well as by make.
131 - Fixed build problems on some versions of Linux. See
132 code.google.com/p/nativeclient/issues/detail?id=5.
133 - Added support for SSE4.
134 - Changed validator diagnostic output.
135 - Made sure all calls to new use the nothrow version and check the return
137 - Added Mark Seaborn's simplification of the sel_mem NaClVmmapUpdate
138 code, plus his mmap_test and fixes for the toolchain. Also fixed some
139 syscall semantics issues (non-NULL start address treated as if MAP_FIXED
140 was specified, rather than used as a hint; made munmap of zero-length
141 pages behave consistently across platforms).
142 - Added a mechanism for gathering info on the impact of syscall processing
143 on performance. Use the new environment variable NACLDELAY to specify an
144 artificial delay in microseconds to be added after every syscall. Use the
145 new NACLCLOCK environment variable to specify the number of cycles per
146 second. The tool syscall_stats.py parses NaClLog output and computes
147 statistics for the inter-syscall time and the number of syscalls per
149 - Changed various Ctors to always set the virtual function table pointers
150 to NULL, and only set them to a valid vtable if the Ctor succeeds, to
151 make the likelihood that a heap-spray attack would succeed lower, when
152 client code does not check the return status of C-based object Ctors.
153 - Updated the ABI version (EF_NACL_ABIVERSION) from 2 to 3.
154 - Miscellaneous minor bug fixes.
155 - Miscellaneous build and test fixes and improvements.