| 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 |