<div dir="ltr"><div class="gmail_default" style>The sneaky part is indeed our original intent: we want to mitigate mode-switching attacks so we sketched out a mitigation that's kind of like constant blinding, it makes the final code somewhat unpredictable to the attacker. I do think that it's possible to bias instruction selection without incurring an undue performance hit while still messing with known-code creation. The one issue we had was that we needed to freeze our ARM ABI, and that implied freezing all the trap/halt/debug instructions that the NaCl "OS" recognizes, hence this change.</div>
<div class="gmail_default" style><br></div><div class="gmail_default" style>The mitigation is something we'll implement later, once PNaCl reaches its performance goals. We've already branched NaCl ARM with a frozen ABI for Chrome M25, and although the current backend is GCC we'll keep the same ABI once we migrate to PNaCl.</div>
<div class="gmail_default" style><br></div><div class="gmail_default" style>In the meantime we'd like to reduce PNaCl's localmods, so while this change on its own is quite silly, we think it's critical as part of a whole system.</div>
<div class="gmail_default" style><br></div><div class="gmail_default" style>Given this, would it make sense to commit this change, once I specialize it for the NaCl ARM target?</div></div><div class="gmail_extra"><br><br>
<div class="gmail_quote">On Wed, Jan 16, 2013 at 4:33 PM, Jim Grosbach <span dir="ltr"><<a href="mailto:grosbach@apple.com" target="_blank">grosbach@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word">Hi JF,<div><br></div><div>Assuming there's real security benefits to be had, yes. However, I'm reticent to add complexity to the code on a purely theoretical benefit. Can you elaborate a bit more on why this is worth it?<div>
<br></div><div>In particular, I'm skeptical of benefits to an overlapping ARM/Thumb TRAP instruction. Now, I can definitely see benefit if you could find a way to get ARM ISel to more frequently have Thumb2 undefined bitpatterns in the bitstream (as the low-order bits of normal ARM instructions, that is). That would be quite clever and downright sneaky. Also likely pretty hard to do it w/o completely crushing performance…</div>
<span class="HOEnZb"><font color="#888888"><div><br></div><div>-Jim</div></font></span><div><div class="h5"><div><br><div><div>On Jan 16, 2013, at 4:27 PM, JF Bastien <<a href="mailto:jfb@google.com" target="_blank">jfb@google.com</a>> wrote:</div>
<br><blockquote type="cite"><div dir="ltr"><div class="gmail_default">As discussed over IRC: it then makes sense to only change the encoding for the NaCl triple (which is effectively its own OS).</div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">
On Wed, Jan 16, 2013 at 4:17 PM, Jim Grosbach <span dir="ltr"><<a href="mailto:grosbach@apple.com" target="_blank">grosbach@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div style="word-wrap:break-word"><br><div><div><div>On Jan 16, 2013, at 3:45 PM, Renato Golin Linaro <<a href="mailto:renato.golin@linaro.org" target="_blank">renato.golin@linaro.org</a>> wrote:</div><br>
<blockquote type="cite"><div dir="ltr">On 16 January 2013 22:39, Jim Grosbach <span dir="ltr"><<a href="mailto:grosbach@apple.com" target="_blank">grosbach@apple.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word">The entire encoding is semantically significant on Darwin. I suspect that's true on other platforms, too, but I don't know for sure.</div></blockquote><div><br></div><div>I'm not sure either. I agree with Bastien that it *should* trap on both ARM and Thumb, but it also depends on what catch routine is installed and other hard-to-know problems.</div>


<div><br></div></div></div></div></blockquote><div><br></div></div><div>Both instructions will trap; however, how they trap is also important. In this case, it's the difference between the user program terminating with SIGILL vs. SIGTRAP.</div>

<span><font color="#888888"><div><br></div><div>-Jim</div></font></span><div><div><br></div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>Bastien, Have you tested in which platforms?<br>

</div><div><br></div><div>cheers,</div><div>--renato</div><div><br></div><div><br></div></div></div></div>
</blockquote></div></div><br></div>
</blockquote></div><br></div>
</blockquote></div><br></div></div></div></div></div></blockquote></div><br></div>