Re:Updating the Go Memory Model
by gpderetta on Monday July 12, 2021 @03:37PM
(#27814112)
It is better than invoking random code because the runtime mistakes some data for a vtable pointer.
[ Parent
| on HN ]
I agree that a data race on an interface value in Go, is worse than an infinite loop or a memory leak, because it can lead to calling the wrong method on a value, which is hard to debug.
...and easy to exploit
Not easy, but definitely possible:
https://blog.stalkr.net/2015/04/golang-data-races-to-break-m...
> We have to admit that exploiting this requires a fairly specific situation in which there is a data race we could trigger and some structs with function pointers around.
Nice.
I would note that Java is designed to run untrusted code, so fat pointers would be unacceptable as the attacker could easily craft the code required to trigger the race. Go does not claim to provide sandboxing of untrusted programs.