3 ms·
> So close to getting to the actual root issue (ambient authority), but so far away (blaming the programmer, instead of structural deficits in the OS). Indeed,
by justinpombrio 5y ago
> So close to getting to the actual root issue (ambient authority), but so far away (blaming the programmer, instead of structural deficits in the OS).
Indeed, this is the entire point of the post! (Well, the second point of the post. The "deeper issue".)
- The root cause is ambient authority: the fact that log4j (and its further dependencies like JNDI) can just create a network connection without having been explicitly given the ability to do so.
- This is not the fault of the programmer. I was focusing blame on the programming language not having capabilities, though as many commenters including you have pointed out, capabilities at the OS level are also very important. Ultimately you want both, and they complement each other.
- chii 5y ago> the fact that log4j (and its further dependencies like JNDI) can just create a network connection without having been explicitly given the ability to do so. i dont think this is the responsibility of log4j to express it's capabilities like that. The responsibility should be in the runtime - like the JVM, or even the OS. Services should run in a sandbox, like how a browser runs a webpage in a sandbox, and only allow capabilities explicitly being requested, and require a human to allow it. Or, have a sandbox such that no matter what code executes, it cannot do more harm than a pre-determined amount (such as limited disk space, limited CPU usage, network usage etc). The root cause is the security model of modern applications.
- klodolph 5y agoRunning a whole service in a sandbox doesn't offer the kind of granularity you might want.