Hacker News
points by dinosaurdynasty 4 days ago | 0 comments
> Improper file handling when resuming an HTTP download allows a man-in-the-middle attacker to replace a package after verification

from the OP

APT can use HTTPS, but often doesn't, making a MITM attack easier (also the idea for a long time has been signatures are enough, and/or TLS certs used to be a lot harder to get, but at this point you should really be using both).

[–] SoftTalker 4 days ago
Still doesn't make sense to me. So package A is downloaded, signature verified, then package B is downloaded, but somehow the package A file is replaced? Is it something like that?
[–] xeyownt 4 days ago
The bug is not trivial, I asked my AI friend to analyze.

To summarize, APT may have several download sessions in parallel, which may download the same "resources". To save bandwidth, disk storage, these same resources are downloaded only one, but given different names on the disk through hard links.

Because of HTTP retry, APT may be lured into downloading again a resource, but that was associated with a different package name, package that was already checked (hash verified). This is because of some differences between the package name / filename / URI, etc.

Anyway, the point is that hash are verified when a package is completed, but because of possible parallel downloads and hard links usage, a verified package can be rewritten.

What I find crazy though is that why packages are not first completely all downloaded, then every time a package is used, the hash be verified before being used. This would reduce even further the surface of attacks, and I don't care about any performance impact.

[–] SoftTalker 3 days ago
> What I find crazy though is that why packages are not first completely all downloaded, then every time a package is used, the hash be verified before being used. This would reduce even further the surface of attacks, and I don't care about any performance impact.

Yes I'm amazed to learn this is not the case. Without that, any local exploit that could replace a file could potentially replace a downloaded, "already verified" package.

[–] tosti 4 days ago
The somehow is package B has the same filename as package A.
[–] thayne 4 days ago
Https doesn't help with this if the MitM is the apt mirror you are using.

One reason http is still used is because you need an independent signature anyway since it is common to use mirrors that don't have the same level of trust as the debian maintainers