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 Neither Quake nor XaoS is provided pre-built, due to GPL license
78 considerations. We hope to streamline these builds in a future
81 DOXYGEN REQUIRED TO BUILD DOCUMENTATION
83 If you discover the MODE=all option to our scons build, and you
84 don't have doxygen installed, you will not be able to build.
86 CURRENT VERSION CHANGES
88 This release contains the following changes.
91 - This release is not binary compatible with earlier releases. You need
92 to recompile old code before running it with this release.
93 - Changed the expiration date from April 30 to June 1.
95 User interface and doc changes:
96 - When the httpd.py script starts, it now displays an informational message
97 with the server port number.
98 - Cleaned up the generated API reference doc -- fewer warnings, fewer files,
99 more links. Added missing descriptions.
100 - Moved platform-specific details into their own pages.
101 - Added an example of using NSPluginWrapper.
102 - Added a custom search box to the top of README.html. Use it to find
103 strings that are in the online Native Client docs (including the wiki),
104 groups, or source code.
106 Changes to examples and tests:
107 - Renamed the browser test page from index.html (under
108 .../scons-out/nacl/staging/) to examples.html, so you can browse the
110 - Started changing demos to use a new helper and testing library,
111 tests/nacl_js_lib.js.
112 - Added an example for contest issue 49.
113 - tools/httpd.py is now threaded.
114 - Refactored the JavaScript for many*html.
115 - Added an automatic page reloader (source code in tests/autoloader). You
116 can run this test by clicking the last link in the Performance Tests
117 column of the browser test page.
120 - Added a Linux port of GDB for use with Native Client. The executable is at
121 nacl/googleclient/third_party/nacl_sdk/linux/sdk/nacl-sdk/bin/nacl-gdb.
122 The patch file is in nacl/googleclient/native_client/tools/patches.
123 - Exported all header files needed for applications to build, so that
124 the SDK is usable when the native_client directory isn't present.
125 All untrusted code should now use the SDK-resident header files. For
127 #include "native_client/intermodule_comm/nacl_htp.h"
128 untrusted code should use
129 #include <nacl/nacl_htp.h>
132 - The initial inaccessible region is now 64KB. Syscalls now start at 64K,
134 - Fixed contest issues 49, 59, 60, and 70.
135 - Renamed() ValidateError to ValidatePrintError() to make it clearer
136 that all that routine does is printing. Added a default case to
137 the main instruction type switch statement so that it will fail
138 reliably if somebody adds an instruction type. Fixes issue 69.
139 - Applied Mark Seaborn's TLS cleanups.
140 - Added a tool (tools/generate_bad_nexes.py) to generate malformed
142 - Changed the Python path to not specify 2.4; added minimum and maximum
144 - Reduced the number of library files; most of the libraries are now in
146 - Made the build pickier (e.g., added -pedantic, started using tidy on HTML).
147 Fixed code that made the pickier build fail.
148 - Added documentation/check.sh tool, which runs tidy on HTML files.
149 - Added an outer sandbox for linux; it's disabled by default. To
150 enable it, set the environment variable NACL_ENABLE_OUTER_SANDBOX.
151 - Miscellaneous minor bug fixes.
152 - Miscellaneous build and test fixes and improvements.