OLD | NEW |
1 {{+bindTo:partials.standard_nacl_article}} | 1 {{+bindTo:partials.standard_nacl_article}} |
2 | 2 |
3 <section id="arm-32-bit-sandbox"> | 3 <section id="arm-32-bit-sandbox"> |
4 <h1 id="arm-32-bit-sandbox">ARM 32-bit Sandbox</h1> | 4 <h1 id="arm-32-bit-sandbox">ARM 32-bit Sandbox</h1> |
5 <p>Native Client for ARM is a method for running programs—even malicious | 5 <p>Native Client for ARM is a sandboxing technology for running |
6 ones—safely, on computers that use 32-bit ARM processors. It’s an | 6 programs—even malicious ones—safely, on computers that use 32-bit |
7 extension of earlier work on Native Client for x86 processors. This | 7 ARM processors. The ARM sandbox is an extension of earlier work on |
8 security is provided with a low performance overhead of about 10% over | 8 Native Client for x86 processors. Security is provided with a low |
9 regular ARM code, and as you’ll see in this document the sandbox model | 9 performance overhead of about 10% over regular ARM code, and as you’ll |
10 is beautifully simple, meaning that the trusted codebase is much easier | 10 see in this document the sandbox model is beautifully simple, meaning |
11 to validate.</p> | 11 that the trusted codebase is much easier to validate.</p> |
12 <p>As an implementation detail, the Native Client 32-bit ARM sandbox is | 12 <p>As an implementation detail, the Native Client 32-bit ARM sandbox is |
13 currently used by Portable Native Client to execute code on 32-bit ARM | 13 currently used by Portable Native Client to execute code on 32-bit ARM |
14 machines in a safe manner. The portable bitcode contained in a <strong>pexe</str
ong> | 14 machines in a safe manner. The portable bitcode contained in a <strong>pexe</str
ong> |
15 is translated to a 32-bit ARM <strong>nexe</strong> before execution. This may c
hange | 15 is translated to a 32-bit ARM <strong>nexe</strong> before execution. This may c
hange |
16 at a point in time: Portable Native Client doesn’t necessarily need this | 16 at a point in time: Portable Native Client doesn’t necessarily need this |
17 sandbox to execute code on ARM. Note that the Portable Native Client | 17 sandbox to execute code on ARM. Note that the Portable Native Client |
18 compiler itself is also untrusted: it too runs in the ARM sandbox | 18 compiler itself is also untrusted: it too runs in the ARM sandbox |
19 described in this document.</p> | 19 described in this document.</p> |
20 <p>On this page, we describe how Native Client works on 32-bit ARM. We | 20 <p>On this page, we describe how Native Client works on 32-bit ARM. We |
21 assume no prior knowledge about the internals of Native Client, on x86 | 21 assume no prior knowledge about the internals of Native Client, on x86 |
(...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
803 <h4 id="validator-code">Validator Code</h4> | 803 <h4 id="validator-code">Validator Code</h4> |
804 <p>By now you’re itching to see the sandbox validator’s code and dis
sect | 804 <p>By now you’re itching to see the sandbox validator’s code and dis
sect |
805 it. You’ll have a disapointing read: at less that 500 lines of code | 805 it. You’ll have a disapointing read: at less that 500 lines of code |
806 <a class="reference external" href="http://src.chromium.org/viewvc/native_client
/trunk/src/native_client/src/trusted/validator_arm/validator.cc">validator.cc</a
> | 806 <a class="reference external" href="http://src.chromium.org/viewvc/native_client
/trunk/src/native_client/src/trusted/validator_arm/validator.cc">validator.cc</a
> |
807 is quite simple to understand and much shorter than this document. It’s | 807 is quite simple to understand and much shorter than this document. It’s |
808 of course dependent on the <a class="reference external" href="http://src.chromi
um.org/viewvc/native_client/trunk/src/native_client/src/trusted/validator_arm/ar
mv7.table">ARMv7 instruction table definition</a>, | 808 of course dependent on the <a class="reference external" href="http://src.chromi
um.org/viewvc/native_client/trunk/src/native_client/src/trusted/validator_arm/ar
mv7.table">ARMv7 instruction table definition</a>, |
809 which teaches it about the ARMv7 instruction set.</p> | 809 which teaches it about the ARMv7 instruction set.</p> |
810 </section></section></section></section> | 810 </section></section></section></section> |
811 | 811 |
812 {{/partials.standard_nacl_article}} | 812 {{/partials.standard_nacl_article}} |
OLD | NEW |