Skip to content

fix(remote): refuse a redirect that drops TLS - #3003

Open
vmaerten wants to merge 4 commits into
mainfrom
fix/remote-redirect-downgrade
Open

fix(remote): refuse a redirect that drops TLS#3003
vmaerten wants to merge 4 commits into
mainfrom
fix/remote-redirect-downgrade

Conversation

@vmaerten

@vmaerten vmaerten commented Aug 28, 2026

Copy link
Copy Markdown
Member

If a redirect https -> http occured, the taskfile was downloaded.
Now it require --insecure

The scheme was only checked on the URL the user wrote. A server answering
an https URL with a redirect to http was followed by the client without
any further check, so both the HEAD probe and the download travelled in
the clear, and a network attacker could substitute the Taskfile that is
about to be executed.

CheckRedirect now refuses an https to http hop. --insecure does not
loosen it: requesting an http entrypoint is the user's decision, being
sent to one is the server's. Setting CheckRedirect also replaces Go's
default cap, so the ten-hop limit is kept explicitly.

The three call sites turned almost every client error into a generic
download failure, which would have hidden the reason; TaskfileNotSecureError
is now passed through, with wording of its own for the redirect case since
--insecure is not a way out of it.
The same policy — keep TaskfileNotSecureError, make everything else a
generic download failure — was spelled out at each of the three call
sites, where copies of a security rule tend to drift apart.
Refusing it unconditionally was security theatre: --insecure also sets
InsecureSkipVerify, so an attacker in position to intercept can already
serve anything over the https leg with a self-signed certificate. It also
broke an internal server that redirects and works today.

--insecure now means one thing everywhere: the transport guarantees are
waived.
@vmaerten vmaerten changed the title Fix/remote redirect downgrade fix(remote): refuse a redirect that drops TLS Aug 29, 2026
@vmaerten
vmaerten marked this pull request as ready for review August 29, 2026 08:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant