Robert O'Callahan wrote:
On Thu, Jul 12, 2012 at 4:44 PM, Brendan Eich <bren...@mozilla.com <mailto:bren...@mozilla.com>> wrote:

    I'm more concerned about runtime bugs -- the usual free memory
    read during a virtual call. Rust will have vtbls, IIRC, and it
    takes only one rooting or refcounting bug to enable an attacker to
    reclaim the live object's vtbl.


Really, reclaim the "live" object and pun its vtbl. In JS before Data Execute Protection (to use Windows jargon) you could even use a JS string allocation to do this, where the string chars contained x86 insns.

    At least, this has been the bane of browsers' existence for over
    seven years.


That's fair. In Midori Microsoft formally verified the GC, but CFI may have better cost/benefit. (Lower benefit, lower or at least different costs.)
I suspect so, unless someone has a verification plan for Rust's GC ;-).

You could use NaCl without the Pepper baggage.

How does this work? NaCl has its own libc and all the usual. I haven't had time to play with it, but in a browser instead of Unix system calls, it bottoms out in Pepper.

Is there any reason to believe that a CFI scheme for C++ could fail to work for Rust?


None that I know of. There could be subtleties.

I'm stirring the pot mainly in case there's interesting research-intern work here (sounds like there may be! I didn't know devd till tonight), and to scout ahead a bit. No rush, though.

/be
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo

Reply via email to