News for hackers. Stuff that matters.
Re:Chrome 0-day exploit used in Operation WizardOpium by Thaxll on Saturday November 02, 2019 @10:33AM (#21427908)
Rust is not safer than Go, people thinking otherwise misunderstand borrow checker vs GC.

Furthermore you're talking about memory safety vs business logic bugs, two different things.

Re:Chrome 0-day exploit used in Operation WizardOpium by pcwalton on Saturday November 02, 2019 @11:05AM (#21428059)
Go is not memory-safe in the presence of concurrency. Interfaces and slices (i.e. fat pointers) are not written atomically, which can cause undefined behavior.

I haven't heard of this causing a problem in practice, though.

Re:Chrome 0-day exploit used in Operation WizardOpium by Thaxll on Saturday November 02, 2019 @11:18AM (#21428151)
I never heard undefined behavior in Go like your example. This would means that not synchronizing a slice would lead to memory corruption.

Please give us a code example.

Re:Chrome 0-day exploit used in Operation WizardOpium by psanford on Saturday November 02, 2019 @03:03PM (#21429360)
Here's a blog post from Russ Cox (Go core team) explaining it: https://research.swtch.com/gorace
Re:Chrome 0-day exploit used in Operation WizardOpium by staticassertion on Saturday November 02, 2019 @02:59PM (#21429341)
Here you go: https://blog.stalkr.net/2015/04/golang-data-races-to-break-m...

What's even worse is that Go code is not (outside of Linux/ some distros) compiled with ASLR.

Re:Chrome 0-day exploit used in Operation WizardOpium by pcwalton on Saturday November 02, 2019 @01:00PM (#21428718)
Yes, not synchronizing a slice can lead to memory corruption in Go.
Re:Chrome 0-day exploit used in Operation WizardOpium by skybrian on Saturday November 02, 2019 @12:01PM (#21428365)
Slice values are normally copied so it's not an issue. The slice would need to be stored in a global or a struct's field and then changed while some other goroutine is reading it.

(I haven't seen this happen, though.)

Re:Chrome 0-day exploit used in Operation WizardOpium by cwzwarich on Saturday November 02, 2019 @12:45PM (#21428639)
Are all Go fat pointers two words? If so, it would be pretty trivial to make them atomic on AArch64 using LDP/STP.
Re:Chrome 0-day exploit used in Operation WizardOpium by pcwalton on Saturday November 02, 2019 @12:55PM (#21428696)
Unfortunately slices are 3 words. (Besides, AArch64 isn't a common target for Go. On x86 you'd need cmpxchg16b or something.)