I’ve been spending time recently thinking about PGP signatures and SBT. Specifically, thinking about trust models, threat models, and how to realistically (read: both in meaning and in terms of user adoption) verify build artifacts. My conclusion thus far: everything is awful.
-
Show this thread
-
Here’s the root of the problem… Artifact signing is supposed to be a tool to make sure the artifact was published by who you think it was. It is designed to be verified by whoever downloaded the artifact (so, SBT). Ignore the “key claiming/trust” problem. How do we trust SBT?
2 replies 0 retweets 0 likesShow this thread -
A major attack vector removed by signature checks is MITM on artifact acquisition. SBT *itself* and all of its plugins are obtained as artifacts! So… how can we trust SBT’s own verification?
3 replies 0 retweets 2 likesShow this thread -
Our trust in our random artifacts is effectively the same as our trust in SBT. So we need an external verifier, like a signed secure launcher. But everyone launches SBT using random scripts they curled off the inter webs.
1 reply 0 retweets 0 likesShow this thread -
Probably the only way to resolve this is to get Travis (and other CIs) into the fray. They need to do signature checks on build tool launchers, checked against key lists they control and curate. Then bootstrap from there.
2 replies 0 retweets 0 likesShow this thread -
If we can get a trusted SBT script, it can embed keys to verify SBT and a global verification plugin, which can verify everything else in the build. Still doesn’t even touch the artifact verification and key claiming problem, but at least the ground is no longer quicksand.
2 replies 0 retweets 1 likeShow this thread -
As it stands (the ecosystem), there’s almost no point in working on artifact signature checks, since all of the same threats that could compromise artifacts would *also* compromise SBT itself and, by extension, the signature verification.
3 replies 0 retweets 3 likesShow this thread -
Replying to @djspiewak
I'm concerned about this for Fury. How would you feel about Fury's installer being a readable bash script which builds it from sources it downloads from Github? You would still need to trust the Scala compiler that's used, at least until I can build that from source, too.
1 reply 0 retweets 0 likes -
Replying to @propensive
You would need hard-coded signature checks on the scala compiler and on the source tarball (and all its dependencies). Basically the same as what SBT needs to do, but with a source stage.
2 replies 0 retweets 1 like
That makes sense. Always ensuring that at least two independent systems need to be already compromised in order for yours to become compromised.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.