-
Notifications
You must be signed in to change notification settings - Fork 1k
Security model #278
Comments
/cc @Alex-Wauters |
also maybe of interest to @raggi |
Please review the vectors in the TUF papers. We may not be getting into distribution immediately, but in any case, the threat model documented there applies wholesale to users. |
I'll also say here, as it's not written down prominently and concisely anywhere: During the rubygems yaml scare, the only way we asserted user safety in a tenable timeline was by comparison of fast processed content hashes from known trusted mirror data sets. Specifically a number of us had access to write-only and/or older partial data sets that we used to generate md5, sha1, and sha256 of. We got results about potential tampering very quickly this way, and it didn't require a ton of sophistication. One of the most important things a distributor can do is to post content hashes in a place that is hardened against tampering and ideally replicated by unrelated actors. TUF provides a ton more than that, but the above is the reality from a real world scare. |
A big +1 to TUF. It's worth noting that we already have a Go implementation and sorting out the CLA/licensing for the existing code would not be an issue if there is interest in bring it upstream. |
Ah yes, TUF - I read the spec last fall, but hadn't revisited it yet. As @raggi noted, the issue with TUF is it's designed around the idea of having upstream code repositories. That puts it out of our reach, at least until we get into building code hosting services, a la discussion in #174. Until then, the best we can do is try to cover the vectors they describe as best we can, and try to aim our implementation in a direction that would make it not terribly painful to integrate such central repository services later. @titanous, I think guidance from Flynn folks would be very helpful on the latter front 😄 For other folks' reference, here's the vectors described in the TUF spec:
|
To date, we've generally deferred the harder security questions in the interest of figuring out what we actually want the tool to be. With the basic vision now settled, security is now at the forefront of our considerations.
To start, we need to articulate a security model for
dep
; this is just a stub/sketch to get us started.The essential task of a dependency management system is to select and reproduce a dependency set. Selection should avoid versions of code known to have vulnerabilities, and reproduction should be byte-level precise.
In functional terms, this means a few things:
We needn't necessarily ship a security service as part of 1.9 - speccing and prototyping it is probably sufficient.
The text was updated successfully, but these errors were encountered: