Deb.haskell.org Security Breach
status.haskell.org
status.haskell.org
That the security of package integrity is so fragile should greatly concern all of us. Almost all big Linux distributions rely on downloading compiled packages signed by a single key. If the build system is compromised your Linux distribution of choice will happily give you trojaned packages that you install as root. If the signing key is compromised a man-in-the-middle is required, but the difficulty to mount an attack is decreased due to the fact that most repositories don't transport over TLS.
The situation can be improved in many ways. By making the build process deterministic many parties can compile the same package and compare the result, alerting the community if one of the build systems report a different checksum. Package managers like apt and yum should be extended with the ability to rely on signatures from multiple parties.
The Tor Project, Debian and Fedora has started working on the first problem, but I don't know of any efforts to support multi-sig.
https://blog.torproject.org/blog/deterministic-builds-part-o...
https://blog.torproject.org/blog/deterministic-builds-part-t...
https://wiki.debian.org/ReproducibleBuilds
https://securityblog.redhat.com/2013/09/18/reproducible-buil...
Now, if anyone followed only part of the instructions:
http://webcache.googleusercontent.com/search?q=cache:deb.haskell.org&ie=utf-8&oe=utf-8&gws_rd=cr&ei=fzXiVKr5NuvXyQPe9oKoCA
They would be owned: Repository keys
To avoid warnings, you might want to install
the key used to sign these repositories:
GET http://deb.haskell.org/deb.haskell.org.gpg-key | \
apt-key add -
Unless they paid attention to: The key is signed using a key from the Debian keyring,
in case you want to verify it first.
This is of course backwards: it should list instructions for verifying the key before instructions on how to add it to apt...Sadly, Debian's support for trusted (by the user, and which Debian can vouch for the key, if not the software) third party repositories is still somewhat sketchy -- it'd be nice if there was a "apt-get-me-a-key-for-this-url-only-if-signed-by-the-debian-keyring <apt-url>"-command. That would of course imply that Debian becomes a bit of a CA for apt-repositories -- which it already is in the case of deb.haskell.org. See also:
https://www.debian.org/doc/manuals/securing-debian-howto/ch7...
[ed: changing link to use https!]
Nix and SmartOS[2] are both really important in my book. Nobody's talking about them as distributions but they both have intense potential to completely change not just server-administration (which is what they solve right now) but having a nice desktop experience. It would look like the Windows desktop experience, where they try to hide C: from you and just give you a set of shared-across-your-applications folders: Documents, Desktop Icons, Pictures. When every application occupies its own universe, then the OS itself behaves just the way that the "window" metaphor suggests; moreover you can start to seamlessly include VMs and get Windows applications living next to OSX ones. The only cost is hard-drive space, but hard drive space can be shared if we can package the software and share packages with the same checksums.
Eventually, I hope that people will just assume that an application "comes with" its operating environment.
E.g. various build tools (e.g. gcc) include timestamps in their output
I've also done it using apt-ftparchive using a simple script. Very bare bones, but easy enough.
Was looking at trying aptly next time I needed one. It looked interesting.
https://packages.debian.org/jessie/reprepro
https://packages.debian.org/jessie/apt-utils
https://packages.debian.org/jessie/aptly
[edit to include all links]
The syntax for sources.list is then "deb http://path/to/your/directory ./". Users can pick up your key by piping it into "sudo apt-key add -", or they can "sudo apt-key adv --keyserver... --recv-key..." with the usual GPG options (and check the fingerprint the same way).
The problem is that most serious users will quickly want tooling to do things like keep track of which versions of which packages are in the archive, not have two versions of the same package, support multiple distros/releases, support separate "test" and "production" areas, etc. And that's where the complexity shows up. (Also why you never see "./" sources.list lines in real life.)
But for "Hey, I built these three packages", it's kind of perfect.
But more impirtant than me actually doing that, is convincing all of you to update the wiki whenever you encounter errors or missing information! :-)
(No affilation with the Debian project other than being a long time user of Debian)
But I will try to make some changes to that page.
If anyone wants to collaborate on fixing that apt page then my email is in my profile. It should only take about an hour to clean up.
I started out with a reprepro archive, which is an abandoned project (or at least, had been for a couple of years early last year (edit: looks like I am in error, there are commits dating to last august... I must have been looking at the wrong repo)). The biggest problem with reprepro is that you can have only one package version per package - so no rollbacks.
But yeah, though you need software to calculate the index files, once they're done, an apt archive is just a static website, easily pushable to s3. Of course, if you want a private repo, it gets a bit more difficult...
One note: it's not quite true that you can't throw it on S3 -- they're just static files. This is how the mirroring infrastructure works, after all.
If you have questions about setting up an apt repo, feel free to reach out!
[1] http://mirrorer.alioth.debian.org/
[2] https://github.com/ocf/puppet/tree/master/modules/ocf_apt is an example
In any case, I find the process of actually creating the packages far more arduous than setting up the repo...
It also happened to host the firmware packages for a very large device maker, which were not signed.
Likely an IDS such as Snort or Suricata to detect compromised hosting clients. And possibly something to measure unusual traffic volume, or traffic to suspicious regions or hosts.
In fact there are very few users that we know of -- to the point that when the site went down, there were no reports filed or complaints made.
That said, when the service gets up and running again, the key will indeed need to be replaced.