The sad state of Linux download security
worldwidemann.com
worldwidemann.com
"Official releases of Debian CDs come with signed checksum files; look for them alongside the images in the iso-cd, jigdo-dvd, iso-hybrid etc. directories." No directory or direct links are provided. Verification instructions are not linked to from the download page.
I do:
- https://www.debian.org/CD/http-ftp/
- https://www.debian.org/CD/http-ftp/#stable
- http://cdimage.debian.org/debian-cd/8.5.0/amd64/iso-cd/
And here, along the images, there are difficult to miss (and GPG-signed) SHA256SUMS and SHA512SUMS files. Moreover, the last page clearly links the verification instructions in the "How can I verify my download is correct and exactly what has been created by Debian?" section.
- Click "Getting Debian"...
- https://www.debian.org/distrib/ (no signatures, no checksums, no "verify" link)
- Click "Download an installation image"...
- https://www.debian.org/distrib/netinst (no signatures, no checksums, no "verify" link)
- Click on my architecture, the ISO download starts
- The file is now on my machine and I have not seen the words "signature", "GPG", "checksum", or "verify" anywhere.
I eventually found https://www.debian.org/CD/verify using a Google search. It's safe to say there is room for improvement here.
HTTPS can be MITMed by anybody with a root certificate (or who is able to dupe the holder of a root certificate). Signatures rely on (at best) multiple hosts or domains not being compromised. You can also mirror and cache distro ISOs when retrieved by HTTP or bittorrent.
In the end, who cares how you downloaded it, so long as you can verify it with a GPG signature?
I've also found some projects where the key used to sign the software isn't even consistent between releases, so you don't even have the (minimal) protection offered by checking the signatures against "known good" builds.
I wonder how hard would it be to socially engineer yourself into trust chain. I haven't read GPG manuals, but I'd be surprised if there were strict protocols followed by everyone when signing others' keys. Most people probably don't or can't insure that there is no mitm when signing keys and can't reliably verify that government id papers aren't forgeries so likely reliable chains of trusts exists only between people that spend large quantities of time together and exchange fingerprints over secure channel.
There are mentions of signatures but that these are "too hard". I looked at the Debian cdimage download and I end up in a directory with iso images and gpg signatures, so they're hardly invisible. There should be better instructions how to actually verify them, but inconstructive rants accomplish nothing.
Transport security such as https does not protect against this type of attacks.
I argue that the privacy provided is minimal, and for real privacy, you'll have to find something like tor (not an endorsement of it) or alternative, anonymous channels...
As for authentication, yes, it is quite minimal.
So HTTPS doesn't solve any problem well (meanwhile introducing some of its own problems). The better solutions to these problems make HTTPS wholly unnecessary.
I find the fixation on HTTPS bizarre, even concerning. Would the author have written this piece if all distros ticked all the three HTTPS boxes? Would he then no longer consider the state of things sad? That would be dangerous. That would be alarming. I hate the "false sense of security" argument that people apply to just about anything these days.. but this would be it.
"Would the author have written this piece if all distros ticked all the three HTTPS boxes?"
Most likely, as three of the criteria listed have nothing to do with HTTPS ("Checksum available", "GPG signature available", and "Verification instructions clear and easy to find").
Nobody is anti-https here. The point is that it does doesn't protect against software distribution integrity (especially not when mirrors and CDNs are used). Pretending that security would improve with https risks making the problem worse, not better. What's needed is better instructions how to verify integrity included with the installation instructions.
To guard against MITMs as well as DNS spoofing to an extent.
Packages are signed with strong hashes. Their signatures verified in lists that are themselves signed by trusted keys. Images have HTTPS-verifiable, even out-of-band if you have any friends.
To say that this is in any way insecure because package transit isn't done over an encrypted link is lunacy. A minor, potential privacy issue maybe but if you're that bothered, mirror the whole repo.
The author was referring specifically to the download page itself. As they correctly point out, the checksums and keys themselves can be modified if the page isn't served securely.
As for 'trusted keys', that doesn't help someone downloading the ISO for the first time, who hasn't previously verified a download from that site (how do they know if the key fingerprint is the correct one?)
That's well before you consider the group security of torrents (hashed chunks, optional SSL on tracker, etc).
It's easier to distract somebody and get physical access to their computer.
I just went to download the Ubuntu ISO. Everything was over HTTP, and I was not instructed to use or even offered any gpg signatures. I didn't see anything about hashes (which would need to be signed or offered over HTTPS to mean anything).
> Verify your download - If you want to verify the data integrity and authenticity of your Ubuntu download, follow our guide. Learn how to verify [2] ›
Yes, this could be more prominent. Yes, this download could be offered over SSL. Yes, ubuntu.com should definitely force-on SSL (rather than force-off). But these don't equate to a process that is impossible to securely verify. You can.
The SHA and MD5 checksums are both GPG-signed [3].
[1]: http://www.ubuntu.com/download/desktop/thank-you?country=GB&...
For those that care I suggest: https://help.ubuntu.com/community/VerifyIsoHowto
It's over HTTPs, and mentions both the short finger prints (0xFBB75451 and 0xEFE21092) as well as the full finger prints (C598 6B4F 1257 FFA8 6632 CBA7 4618 1433 FBB7 5451 and 8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092).
The community wiki page is editable. Obvious issues there.
That seems not only incredible, but plain false. OpenSUSE offers PGP-signed checksum files prominently with the images. It also provides the signing key's fingerprint over HTTPS.
When choosing the regular releases you also get some verification instructions. This is not true when picking the Tumbleweed rolling-release distribution. In either case, though, the checksum files are signed.
Seeing that there is no way for me to verify the authenticity of the signing keys (short of visiting canonical in person), every bit of security helps.
Gonna have to once again Google around to fix the problem or start from scratch with new install or distro. Might just bite the bullet to learn Fedora given it consistently ranks higher in security metrics. Don't know about quality or UX experience, though.
So, distributions and updates have issues in Ubuntu. The very things you want to be painless & secure.
The boot partition is small and Ubuntu doesn't clean out old kernels. You have to do it yourself.
sudo apt-get autoremove
This will remove an old kernel. There may be a better way, because I find if there are multiple old kernels I have to do this multiple times. I also found if I have to remove more than one, it's best to follow with a
sudo update-grub
I previously managed to hose things by removing multiple old kernel versions, seeing a warning about needing to do this, ignoring it, then rebooting. So now I just do it after any autoremove that tosses an old kernel.
This may not be the 100% correct magic ubuntu dance, but it is the one that seems to work for me.
UX should be fine but Fedora uses RPM so might have a bigger risk to end up with broken or incompatible packages, not sure though maybe things improved lately.
Seriously? the author has no idea what they're talking about
"For each ISO, we offer a checksum file with the corresponding SHA256 sum. For extra security, you can use GPG to verify who signed those .sha256 files. It should be 22C0 7BA5 3417 8CD0 2EFE 22AA B88B 2FD4 3DBD C284."
https://en.opensuse.org/openSUSE:Tumbleweed_installation
http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumblew...
http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumblew...
http://download.opensuse.org/distribution/leap/42.1/iso/open...
http://download.opensuse.org/distribution/leap/42.1/iso/open...
All signed, happy and healthy...and regularly checked.. people really should double check before making statements like this..
And the key has been the same for years, so there are quite a few independent sources quoting it, which helps to verify it.
Both claims are demonstrably false.
It's also easy, simple and cheap to maintain while already being popular enough among your target audience. Certainly more people know how to run a torrent download than how to check GPG/PGP signatures or even would run a regular checksum.
How so?
The author is voicing criticism that a lot of people (including myself) have with regards to the current state of software distribution security.
Furthermore, his survey of the top distributions is interesting for people who take their security seriously.
I remain unconvinced.
Anyone wanting to build on this should apply same methodology to major BSD's to see how they compare.
For example, Arch has HTTP downloads but the download page provides the MD5SUM, SHA1SUM, and PGP signature for verification that the files are correct. I just don't really see this as that big of an issue right now. Even if one has provided instructions for doing so it's still going to require that the end user cares about checking the validity of the files.
One of the points in that and article jacquesm linked is that checksum verification still requires trusting the transport. Otherwise, you get fake binary plus fake checksum that then look safe but were for malicious app. There's just an extra thing to change for attacker. No work at all given what was already put in to get to that point.
So, trustworthy transport of binary and/or checksum is necessary. The checksum should still be there even if binary is sent safely, though, to verify no corruption of binary happened due to transmission or storage faults.
My initial point is that no matter the solutions offered, the user has to care about checking. Forcing HTTPS transport for the download isn't really going to make it any more secure because it's still possible the file is illegitimate and you should be testing the signatures.
tl;dr: Arch's downloads are over HTTP, the checksums and signature are over HTTPS and on the official download page.
https://www.freebsd.org/where.html https://www.freebsd.org/releases/10.3R/signatures.html
Downloads are via FTP by default, but I agree with those that HTTPS cannot be trusted either. Signatures plus building up key trust is the way to go.
Hopefully Keybase.io will make it easier in the future to establish trust in such keys.
I don't know fedora, but when I tried to switch I found the following blocking issue. Fedora has packages missing that you can get in Ubuntu (irc it was vlc for me). There is RPM Fusion but it doesn't have reliable method of verifying repo keys - they send instructions only over http and have only selfsigs on keys. As this has been going on for years and without bothering anyone I can't trust them even if they fix it sometime in the future.
I've had the luck finding and verifying the majority of what I'd concern myself with. But what really frustrates me is downloading something (verified and all...) and then record its traffic downloading its updates via HTTP. I don't know if it's verifying its own downloads but I simply wish applications were more transparent or that applications had no shame in throwing up a screen providing the checksums of its downloads (well maybe for the users like me who have the time to put towards verifying every thing coming in.)
So I love Notepad++, but I hate how its plugin manager (last time I checked...) downloads the majority of, if not all, its plugins from sourceforge and over HTTP. Windows UAC will pop up saying the newly selected plugins want to make changes to my computer - no, I stop there. If I can, then I'll download the plugin from its developer's GitHub and prepare it to use for Notepad++ myself. The plugin manager could be verifying packages, the packages could be hosted on something other than sourceforge, or whatever else. This is a rant over things I've already built habits and routines around.
Fedora's own key is also available over HTTPS so you get at least some assurance when bootstrapping.