Open Redirect in reflex-dev/reflex
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- Required
- Attack complexity
- High
- Impact type
- Spoofing
- Confidentiality · integrity · availability
- None · Low · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-601.
Summary
Reflex is a library to build full-stack web apps in pure Python. In versions 0.5.4 through 0.8.14, the /auth-codespace endpoint automatically assigns the redirect_to query parameter value directly to client-side links without any validation and triggers automatic clicks when the page loads in a GitHub Codespaces environment. This allows attackers to redirect users to arbitrary external URLs. The vulnerable route is only registered when a Codespaces environment is detected, and the detection is controlled by environment variables. The same behavior can be activated in production if the GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN environment variable is set. The vulnerability occurs because the code assigns the redirect_to query parameter directly to a.href without any validation and immediately triggers a click (automatic navigation), allowing users to be sent to arbitrary external domains. The execution condition is based on the presence of a sessionStorage flag, meaning it triggers immediately on first visits or in incognito/private browsing windows, with no server-side origin/scheme whitelist or internal path enforcement defenses in place. This issue has been patched in version 0.8.15. As a workaround, users can ensure that GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN is not set in a production environment.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| reflex-dev | reflex | 0.5.4 to before 0.8.15 | 0.8.15 | Patch available | CNA |
| — | reflex (PyPI) | 0.5.4 – 0.8.14 | — | No fix listed | GHSA-rfh5-c9h5-q8jm |
- reflex Vendorreflex-dev Affected 0.5.4 to before 0.8.15 Fixed in 0.8.15 Patch available CNA
- reflex (PyPI) Vendor— Affected 0.5.4 – 0.8.14 Fixed in — No fix listed GHSA-rfh5-c9h5-q8jm
Remediation
- Fix · CNA reflex (reflex-dev) Fixed in 0.8.15
Timeline
- 2026-10-02 Threatist record created from CVE-2025-62379
- 2026-10-03 Alias added: GHSA-rfh5-c9h5-q8jm
References
Other 5
- https://github.com/reflex-dev/reflex/security/advisories/GHSA-rfh5-c9h5-q8jm
- https://github.com/reflex-dev/reflex/commit/ade12549f3c0ddab3d7382c581bc04a3c1f989ec
- https://file.notion.so/f/f/d105d145-04bc-45c5-b46c-ed880895e9de/a86c3e3b-f67f-45d1-8fa2-4aa0ba7d0068/poc.mp4?table=block&id=26955717-5d2e-805a-b53c-e25ee03f1d4b&spaceId=d105d145-04bc-45c5-b46c-ed880895e9de&expirationTimestamp=1760508000000&signature=ZPp8PVldfGOh0gB5tVElRV6GN789R-EG0oxZgkFjjLU&downloadName=poc.mp4
- https://github.com/reflex-dev/reflex
- https://github.com/reflex-dev/reflex/blob/51f9f2c2f52cac4d66c07683a12bc0237311b6be/reflex/utils/codespaces.py#L18-L46
Sources
- CVE-2025-62379 · CVE Program
- CVE-2025-62379 · NVD
- FIRST EPSS
- GHSA-rfh5-c9h5-q8jm · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences