I found this! I posted a semi-click-bait-ey tweet about it here [0], I think it’s important for people know how easy these bugs are to find now. It’s becoming borderline irresponsible not to audit your internet-facing code with modern AI tools.
Do you think there might be even more still lurking out there?
justicz [3 hidden]5 mins ago
I do. I think that security-critical but overly complex software like this should be rewritten and certain aspects of it formally verified, since such things are now practical.
sczi [3 hidden]5 mins ago
Nice work! A similar vulnerability in 2019 also found by you included the recommendation to update with:
Since this also involves redirects, would that protect users while updating apt for this one also?
justicz [3 hidden]5 mins ago
That sounds right to me, but FYI the APT maintainers themselves are recommending Acquire::Retries=0 as the mitigation since some mirrors might actually have redirects.
I feel like they should release manual update instructions since the update mechanism is vulnerable. Although I see my systems already updated via unattended upgrades.
How would an attacker inject a redirect into an apt package download?
mikepurvis [3 hidden]5 mins ago
MITM on the network, I guess like DNS takeover or the like.
So you pass through the upstream headers but then simulate a failure/resume and supply different contents for the resumed download.
SoftTalker [3 hidden]5 mins ago
So apt doesn't verify signatures on what is actually downloaded?
dinosaurdynasty [3 hidden]5 mins ago
> 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).
thayne [3 hidden]5 mins 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
SoftTalker [3 hidden]5 mins 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?
tosti [3 hidden]5 mins ago
The somehow is package B has the same filename as package A.
[0] https://x.com/just1cz/status/2118009777922228361
Do you think there might be even more still lurking out there?
edit: On lobste.rs I see a recommendation for `apt download`: https://lobste.rs/s/h7bvma/man_middle_arbitrary_code_executi...
So you pass through the upstream headers but then simulate a failure/resume and supply different contents for the resumed download.
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).
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