Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support allowed hosts for webhook to work with proxy #27655

Merged
merged 7 commits into from Oct 18, 2023

Conversation

wolfogre
Copy link
Member

@wolfogre wolfogre commented Oct 17, 2023

When webhook.PROXY_URL has been set, the old code will check if the proxy host is in ALLOWED_HOST_LIST or reject requests through the proxy. It requires users to add the proxy host to ALLOWED_HOST_LIST. However, it actually allows all requests to any port on the host, when the proxy host is probably an internal address.

But things may be even worse. ALLOWED_HOST_LIST doesn't really work when requests are sent to the allowed proxy, and the proxy could forward them to any hosts.

This PR fixes it by:

  • If the proxy has been set, always allow connectioins to the host and port.
  • Check ALLOWED_HOST_LIST before forwarding.

@wolfogre wolfogre added type/bug topic/security Something leaks user information or is otherwise vulnerable. Should be fixed! backport/v1.20 This PR should be backported to Gitea 1.20 backport/v1.21 This PR should be backported to Gitea 1.21 labels Oct 17, 2023
@wolfogre wolfogre added this to the 1.22.0 milestone Oct 17, 2023
@GiteaBot GiteaBot added the lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. label Oct 17, 2023
@pull-request-size pull-request-size bot added the size/S Denotes a PR that changes 10-29 lines, ignoring generated files. label Oct 17, 2023
@GiteaBot GiteaBot added lgtm/need 1 This PR needs approval from one additional maintainer to be merged. and removed lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. labels Oct 17, 2023
@pull-request-size pull-request-size bot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/S Denotes a PR that changes 10-29 lines, ignoring generated files. labels Oct 17, 2023
@GiteaBot GiteaBot added lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. and removed lgtm/need 1 This PR needs approval from one additional maintainer to be merged. labels Oct 18, 2023
@lunny lunny enabled auto-merge (squash) October 18, 2023 09:12
@lunny lunny added the reviewed/wait-merge This pull request is part of the merge queue. It will be merged soon. label Oct 18, 2023
@lunny lunny merged commit 4e98224 into go-gitea:main Oct 18, 2023
25 checks passed
GiteaBot pushed a commit to GiteaBot/gitea that referenced this pull request Oct 18, 2023
When `webhook.PROXY_URL` has been set, the old code will check if the
proxy host is in `ALLOWED_HOST_LIST` or reject requests through the
proxy. It requires users to add the proxy host to `ALLOWED_HOST_LIST`.
However, it actually allows all requests to any port on the host, when
the proxy host is probably an internal address.

But things may be even worse. `ALLOWED_HOST_LIST` doesn't really work
when requests are sent to the allowed proxy, and the proxy could forward
them to any hosts.

This PR fixes it by:

- If the proxy has been set, always allow connectioins to the host and
port.
- Check `ALLOWED_HOST_LIST` before forwarding.
GiteaBot pushed a commit to GiteaBot/gitea that referenced this pull request Oct 18, 2023
When `webhook.PROXY_URL` has been set, the old code will check if the
proxy host is in `ALLOWED_HOST_LIST` or reject requests through the
proxy. It requires users to add the proxy host to `ALLOWED_HOST_LIST`.
However, it actually allows all requests to any port on the host, when
the proxy host is probably an internal address.

But things may be even worse. `ALLOWED_HOST_LIST` doesn't really work
when requests are sent to the allowed proxy, and the proxy could forward
them to any hosts.

This PR fixes it by:

- If the proxy has been set, always allow connectioins to the host and
port.
- Check `ALLOWED_HOST_LIST` before forwarding.
@GiteaBot GiteaBot removed the reviewed/wait-merge This pull request is part of the merge queue. It will be merged soon. label Oct 18, 2023
KN4CK3R pushed a commit that referenced this pull request Oct 18, 2023
Backport #27655 by @wolfogre

When `webhook.PROXY_URL` has been set, the old code will check if the
proxy host is in `ALLOWED_HOST_LIST` or reject requests through the
proxy. It requires users to add the proxy host to `ALLOWED_HOST_LIST`.
However, it actually allows all requests to any port on the host, when
the proxy host is probably an internal address.

But things may be even worse. `ALLOWED_HOST_LIST` doesn't really work
when requests are sent to the allowed proxy, and the proxy could forward
them to any hosts.

This PR fixes it by:

- If the proxy has been set, always allow connectioins to the host and
port.
- Check `ALLOWED_HOST_LIST` before forwarding.

Co-authored-by: Jason Song <i@wolfogre.com>
KN4CK3R pushed a commit that referenced this pull request Oct 18, 2023
Backport #27655 by @wolfogre

When `webhook.PROXY_URL` has been set, the old code will check if the
proxy host is in `ALLOWED_HOST_LIST` or reject requests through the
proxy. It requires users to add the proxy host to `ALLOWED_HOST_LIST`.
However, it actually allows all requests to any port on the host, when
the proxy host is probably an internal address.

But things may be even worse. `ALLOWED_HOST_LIST` doesn't really work
when requests are sent to the allowed proxy, and the proxy could forward
them to any hosts.

This PR fixes it by:

- If the proxy has been set, always allow connectioins to the host and
port.
- Check `ALLOWED_HOST_LIST` before forwarding.

Co-authored-by: Jason Song <i@wolfogre.com>
@GiteaBot
Copy link
Contributor

I was unable to create a backport for 1.20. @wolfogre, please send one manually. 🍵

go run ./contrib/backport 27655
...  // fix git conflicts if any
go run ./contrib/backport --continue

@GiteaBot GiteaBot added the backport/manual No power to the bots! Create your backport yourself! label Oct 18, 2023
@GiteaBot
Copy link
Contributor

I was unable to create a backport for 1.21. @wolfogre, please send one manually. 🍵

go run ./contrib/backport 27655
...  // fix git conflicts if any
go run ./contrib/backport --continue

@wolfogre wolfogre added backport/done All backports for this PR have been created and removed backport/manual No power to the bots! Create your backport yourself! labels Oct 19, 2023
zjjhot added a commit to zjjhot/gitea that referenced this pull request Oct 19, 2023
* giteaofficial/main:
  [skip ci] Updated translations via Crowdin
  Add link for repositories README file (go-gitea#27684)
  Fix typo "GetLatestRunnerToken" (go-gitea#27680)
  Clipboard copy enhancements (go-gitea#27669)
  Remove unnecessary parameter (go-gitea#27671)
  Always delete existing scheduled action tasks (go-gitea#27662)
  Support allowed hosts for webhook to work with proxy (go-gitea#27655)
@go-gitea go-gitea locked as resolved and limited conversation to collaborators Jan 16, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
backport/done All backports for this PR have been created backport/v1.20 This PR should be backported to Gitea 1.20 backport/v1.21 This PR should be backported to Gitea 1.21 lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. topic/security Something leaks user information or is otherwise vulnerable. Should be fixed! type/bug
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants