]> git.saurik.com Git - apt.git/commit
treat older Release files than we already have as an IMSHit
authorDavid Kalnischkies <david@kalnischkies.de>
Mon, 18 May 2015 20:15:06 +0000 (22:15 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Mon, 18 May 2015 20:15:06 +0000 (22:15 +0200)
commit6bf93605fdb8e858d3f0a79a124c1d39f760094d
tree4f1fb6549db04d6b39845e8587316460b493f249
parent8eafc759544298211cd0bfaa3919afc0fadd47d1
treat older Release files than we already have as an IMSHit

Valid-Until protects us from long-living downgrade attacks, but not all
repositories have it and an attacker could still use older but still
valid files to downgrade us. While this makes it sounds like a security
improvement now, its a bit theoretical at best as an attacker with
capabilities to pull this off could just as well always keep us days
(but in the valid period) behind and always knows which state we have,
as we tell him with the If-Modified-Since header. This is also why this
is 'silently' ignored and treated as an IMSHit rather than screamed at
the user as this can at best be an annoyance for attackers.

An error here would 'regularily' be encountered by users by out-of-sync
mirrors serving a single run (e.g. load balancer) or in two consecutive
runs on the other hand, so it would just help teaching people ignore it.

That said, most of the code churn is caused by enforcing this additional
requirement. Crisscross from InRelease to Release.gpg is e.g. very
unlikely in practice, but if we would ignore it an attacker could
sidestep it this way.
12 files changed:
apt-pkg/acquire-item.cc
apt-pkg/acquire-item.h
apt-pkg/indexrecords.cc
apt-pkg/indexrecords.h
test/integration/framework
test/integration/test-apt-update-ims
test/integration/test-apt-update-nofallback
test/integration/test-apt-update-not-modified
test/integration/test-apt-update-rollback
test/integration/test-releasefile-date-older [new file with mode: 0755]
test/integration/test-releasefile-valid-until
test/integration/test-releasefile-verification