WireGuard Portal v2 has Open Redirect Vulnerability in OAuth Authentication FlowGHSA-grh9-37g7-53mj
MEDIUMFix: h44z/wg-portal@e62db0dGHSA-grh9-37g7-53mj is a medium-severity (CVSS 6.1) vulnerability in github.com/h44z/wg-portal. A fix is available for github.com/h44z/wg-portal — see the affected versions and patch details below.
Real-World Exposure
github.com/h44z/wg-portalReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.
Description
Summary
An Open Redirect vulnerability exists in the OAuth authentication flow that allows attackers to redirect users to external malicious websites after authentication. The vulnerability is caused by insufficient validation of the return parameter in the OAuth login initialization endpoint.
Patches
The problem was fixed in the latest release, v2.1.2. The docker images for the tag 'latest' built from the master branch also include the fix.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/h44z/wg-portal | all versions | 2.1.2go get github.com/h44z/wg-portal@v2.1.2 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/h44z/wg-portal, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update github.com/h44z/wg-portal to 2.1.2 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-grh9-37g7-53mj is resolved across your whole dependency graph.
Workarounds
Stop reflecting attacker-controlled destinations: resolve every redirect target against an allowlist of paths or hosts you own, prefer a server-side key over a full URL in the request, and reject absolute URLs entirely where the flow only ever needs a relative one.
Frequently Asked Questions
Is GHSA-grh9-37g7-53mj in your dependencies?
Find it across Go, including transitive dependencies.