OLD | NEW |
| (Empty) |
1 About | |
2 ===== | |
3 | |
4 This is a prototype for plumbing Mojo into the NaCl sandbox. It is currently | |
5 insecure (see below), and does not support Mojo functions that return pointers | |
6 (for example, `MojoMapBuffer`). | |
7 | |
8 Currently, SFI NaCl support is not being actively developed, in favor of | |
9 non-SFI NaCl support. | |
10 | |
11 Using | |
12 ===== | |
13 | |
14 The SFI NaCl and accompanying tests should be built by default for Linux. | |
15 The boolean indicating if they are built is "mojo_use_nacl", defined inside | |
16 the BUILD files. | |
17 | |
18 This should create a "monacl_shell" executable, capable of running standalone | |
19 SFI nexes. | |
20 | |
21 Additionally, it will create a content handler for SFI nexes -- any Nexe | |
22 with the line "#!mojo mojo:nacl_content_handler" prepended to it will be | |
23 redirected to the SFI content handler when run with the "mojo_shell". | |
24 | |
25 | |
26 Notes | |
27 ===== | |
28 | |
29 `nacl_bindings_generator/interface.py` contains a programmatic description of | |
30 the stable Mojo interface. This will need to be updated as the interface | |
31 changes. Run `nacl_bindings_generator/generate_nacl_bindings.py` to generate | |
32 the bindings that plumb this interface into the NaCl sandbox. | |
33 | |
34 Security TODO | |
35 ============= | |
36 | |
37 * Validate and copy option structures. | |
38 * Protect untrusted buffers passed into Mojo: | |
39 * `NaClVmIoWillStart/HasEnded`. | |
40 * volatile accesses to untrusted memory (untrusted code could race). | |
41 * Overflow checking in array bounds validation. | |
OLD | NEW |