On Fri, Feb 21, 2014 at 04:11:06PM +0530, Mike Hearn wrote: > On Fri, Feb 21, 2014 at 12:20 PM, Jeff Garzik wrote: > > > RE "doesn't buy you anything" Today, when unlocked, plaintext > > private keys reside in the same address space as the blockchain engine > > (BCE). Process separation increases the difficulty of accessing key > > data from the BCE, even presuming a normal, no-chroot, same-uid, > > parent-child process relationship. The attack surface is clearly > > changed from "one buffer overflow can touch this data." > > > > Regardless, the split makes sense given existing modularity and coding > > directions. I wouldn't micro-focus on the "sandbox" word. > > I'm not sure it does really - typical C/C++ exploits let you run arbitrary > code, at which point you can quite easily ptrace the other process and do > whatever you want with it, or read /proc/pid/mem etc. But process > separation is certainly a prerequisite for sandboxing so I'm not arguing > against such a change, just pointing out that it requires some work to > really get the benefits. Also an SPV Bitcoin Core would obviously be of > tremendous utility all by itself ... The seccomp mechanism would work well here - it's a syscall whitelister, which makes ptrace useless, among other things. Used by Chrome as of v23 to sandbox the renderers. We'd probably need to use it with chroot and whitelist the open() call so that the existing code can create new blockfiles and do whatever leveldb does. -- 'peter'[:-1]@petertodd.org 000000000000000112c53364597954e79cc38f1ba7826a6420ad22a6f3be2932