Repository navigation
Conversation
Signed-off-by: riha ilyas <riha@research.itecz.au>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updater.updateTimestampreturns as soon as the mirror serves a timestamp with the same version as the trusted one, so the freeze attack check from spec 5.4.4 never runs on the timestamp the update goes on with.updateMetathen sees an unchanged timestamp and reuses the cached snapshot and targets without checking theirexpireseither. A mirror or stale CDN cache that keeps serving the last signed timestamp is accepted by any client with a populated cache, which keeps using its cached targets (includingtrusted_root.json) until root.json expires. A client with an empty cache rejects the same responses.Check the trusted timestamp's expiry before the equal-version return, and check the cached snapshot and targets when the timestamp did not change. The checks live in
Updaterbecause it holds the update start time and decides which copy of each role is kept. python-tuf and go-tuf behave the same way: they keep the old timestamp on an equal version and fail the refresh once it, or the cached snapshot or targets, has expired. The newUpdaterTestcases cover the unchanged-mirror path for each role and fail on main. tuf-conformance v2.4.0 still passes and has no test for this case.