NIST deprecates RSA-2048 from 2030. Find every one of them before attackers do.
🐘 Packagist
Not in CISA KEV

AVideo has an Open Redirect via Unvalidated redirectUri in userLogin.phpGHSA-hj5h-5623-gwhw

Fix: WWBN/AVideo@68d0fbb

GHSA-hj5h-5623-gwhw is a Open Redirect vulnerability in wwbn/avideo. The records list no fixed version yet; check the vendor advisory below and apply the mitigations in the meantime.

Also known asCVE-2026-33296
Published
Updated
Affected
1 pkg
Patched
See advisory
Exploits
None indexed
Exploitation data as of Nov 6, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

Exploitation Status

Proof-of-concept exploit code exists

  • CISA’s SSVC triage found public proof-of-concept exploit code for this CVE, though no confirmed active exploitation.

Exploitation and automatability from CISA’s SSVC triage for GHSA-hj5h-5623-gwhw.

EPSS Exploitation Probability

via FIRST.org ↗
0.2%probability of exploitation in next 30 days
Lower Risk0.00%
Lower risk than most CVEs9th percentile — riskier than 9% of all scored CVEsHighest risk
0.00%0.25%0.50%0.76%0.0%0.2%May 26Sep 26Nov 26

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

Real-World Exposure

1 pkg affected
🐘wwbn/avideo

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Packagist packages — download data is not available via public APIs for these ecosystems.

Description

Summary

WWBN/AVideo contains an open redirect vulnerability in the login flow where a user-supplied redirectUri parameter is reflected directly into a JavaScript document.location assignment without JavaScript-safe encoding. After a user completes the login popup flow, a timer callback executes the redirect using the unvalidated value, sending the victim to an attacker-controlled site.

Details

In view/userLogin.php, the application accepts a redirectUri GET parameter, passes it through a function called isSafeRedirectURL(), and stores the result in $safeRedirectUri. This value is then embedded into an inline JavaScript block:

var logintimer = setInterval(function() {
    if (win.closed) {
        clearInterval(logintimer);
        document.location = "<?php print $safeRedirectUri; ?>";
    }
}, 1000);

The value is printed directly into a JavaScript string literal with no call to json_encode(), htmlspecialchars(), or any JavaScript-context escaping. Even if isSafeRedirectURL() is intended to filter dangerous values, protocol-relative URLs such as //evil.com satisfy many naive URL validation checks because they carry no explicit scheme, yet browsers will resolve them as https://evil.com when embedded in a navigation target. Additional bypass vectors include subdomain confusion of the form https://trusted.com.evil.com and path-prefix matching weaknesses. Because the reflected value lands inside a JavaScript string rather than an HTML attribute, HTML-level encoding would not prevent exploitation either. Once the popup window is closed, the setInterval callback fires every second, and the first time win.closed is truthy the victim's main page is redirected to the attacker's URL.

PoC

https://victim.com/view/userLogin.php?redirectUri=//evil.com
import requests

base = "https://victim.com/view/userLogin.php"
payload = "//evil.com"
r = requests.get(base, params={"redirectUri": payload})
assert payload in r.text, "Payload not reflected"
print("Reflected payload found in response")

Impact

An unauthenticated attacker can craft a login URL and distribute it to victims. After the victim interacts with the login popup and closes it, the main page is silently navigated to an attacker-controlled domain. This enables phishing attacks where the victim is presented with a credential-harvesting page that visually mimics the original site. All users of any AVideo installation are potentially affected because no authentication is required to trigger the redirect. The attack requires only that the victim follow the crafted link and complete or dismiss the popup, making it practical in targeted phishing campaigns.

Affected Packages

1 total
EcosystemPackageVulnerable rangeFix
🐘Packagistwwbn/avideoall versionsNo fix

Affected Products

1 product · 1 configurations
Application
avideowwbn
< 26.0
range

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for wwbn/avideo, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Remediation status

    The records we use list no patched version of wwbn/avideo for GHSA-hj5h-5623-gwhw. Check the maintainer's advisory, and where your build allows, override or pin the dependency away from the vulnerable range.

  3. Mitigate without a patch

    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

### Summary WWBN/AVideo contains an open redirect vulnerability in the login flow where a user-supplied redirectUri parameter is reflected directly into a JavaScript `document.location` assignment without JavaScript-safe encoding. After a user completes the login popup flow, a timer callback executes the redirect using the unvalidated value, sending the victim to an attacker-controlled site. ### Details In `view/userLogin.php`, the application accepts a redirectUri GET parameter, passes it through a function called `isSafeRedirectURL()`, and stores the result in $safeRedirectUri. This value
O3 Security · Impact-Aware SCA

Is GHSA-hj5h-5623-gwhw in your dependencies?

Find it across Packagist, including transitive dependencies.

AVideo has an Open Redirect via Unvalidated redirectUri…