[Haskell-cafe] SSL support for hackage and cabal

Vincent Hanquez tab at snarc.org
Mon Nov 4 06:57:55 UTC 2013


On 2013-11-04 03:00, Gershom Bazerman wrote:
> On various topics:
>
> Security is a multifaceted beast with many related issues, depending 
> on which attack vectors we're concerned about, with what degree of 
> assurance.
>
> Ultimately, we rely on trusted parties, and so of course don't have a 
> defense (other than 'many eyes') if someone were to hand e.g. SPJ or 
> Austin or the maintainer of a key package in the Platform a swiss bank 
> account with some quantity of gold sufficient to induce them to put in 
> a backdoor, or perhaps just steal their computers, passwords, and keys 
> to put in a backdoor themselves.
>
> That said, even if we consider that we 'trust' key individuals 
> involved, as well as the security of their keys and identity, we still 
> have other vectors to prevent. Here's my summary of what I understand 
> (thanks to Duncan for helping me sort this out on IRC. Most insights 
> his, all omissions mine).
>
> 1) Only those individuals who own packages should be able to upload 
> their packages.
>     A) This is solvable soon and directly by adding SSL to hackage, so 
> that they can upload (via the web interface) in a secure manner.
>     B) To upload securely via "cabal upload" we'll need cabal to have 
> access to the right secure protocols.
>     C) The "easy" answer here is to shell out to curl or the like, and 
> place the obligation on the end user to have the right 
> security-enabled binaries on their system.
>     D) Other than that, we need to use e.g. "tls" and "tls-extras"
>     E) To trust those, we should encourage outreach to the security 
> community as a whole to examine, harden, etc. the code. It is in the 
> interests of many, not just in the haskell world, to have more, 
> different, and reliable open-source implementations of our open 
> protocols for secure communication.
>     F) Even if we don't 'trust' tls sufficiently to bless it for the 
> platform, we can still bake it into platform-distributed cabal-install 
> binaries, as better than nothing.
>
> 2) When I download a package, I should be able to trust that the 
> package I download is one uploaded by a verified uploader.
>     A) This is about signing and verification, not a secure protocol 
> as such.
>     B) It requires a different design. The library support is easier 
> than that for SSL. However, there are more options for "how verified" 
> we want the chain of trust to be -- is it sufficient for hackage to 
> sign the tarballs, or do we want to let users sign their own tarballs 
> and allow verification of that, etc.

This is a very good list.

1) c) I think "shelling out" is probably the best idea:
* it doesn't cost much on cabal infrastructure and its maintenance
* it doesn't add any dependencies
* it allow user to replace their binaries by custom solutions if needed.

With this in place, even tls doesn't necessary have to be favorited.

2) b) similar to the uploading/downloading, if you have a special binary 
somewhere,
it would use it to automatically insert signatures (at sdist time), and 
verify packages when needed.

-- 
Vincent



More information about the Haskell-Cafe mailing list