Mark S. Miller (2015-09-27T17:09:16.000Z)
d at domenic.me (2015-10-12T20:26:35.449Z)
On Sun, Sep 27, 2015 at 9:57 AM, Filip Pizlo <fpizlo at apple.com> wrote: > It seems that most of the benefit for fail-faster behavior for VM errors > is security. > > To what extent do you think the security problem could be addressed by VMs > simply randomizing the point at which stack overflow or OOM happens? I > think this would be more desirable, since it requires no language changes. > It would help, but not enough. The defender would have some window of memory budget within which it randomizes. The attacker could repeatedly probe in order to get a statistical sense of the range and shape of that window. Then, say, the attacker could repeatedly allocate until it got, say, into the 80 percentile of that window without failing, and then call the defender. If the defender then does a delicate operation that happens to allocate more that the remaining 20 percentile of that window, then the attacker has broken the defender's integrity in a way the attacker may be able to exploit. Nevertheless, it does help a lot. It would be a nice speed bump until a real defense can be designed, agreed on, and put in place. We also need real experiments to determine how hard these attacks actually are to mount. And once successful, how hard they are to commodify, so that other less skilled attackers can reuse these attacks. As always, if you do this as a white hat, please engage in responsible disclosure for a reasonable finite period before making a successful attack public. Thanks. > This seems pretty sensible, but I'd like it more if it was simpler. Me too! > Wouldn't this be practically as useful if we just had THROW and > ABORT_EVENT_LOOP? I can see how to use those modes, but I don't know how > to use the others. Perhaps. Let's start with your simpler hypothesis. I like it.