GitHub Advisoryadvisory · Packagist
GHSA-8p2x-5cpm-qrqw AVideo vulnerable to IP Address Spoofing via Untrusted HTTP Headers in getRealIpAddr()
MEDIUM
Official page ↗
- Aliases
- CVE-2026-33690
- Ecosystem
- Packagist
- Packages
- wwbn/avideo
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
- Weaknesses
- CWE-348
- Reviewed
- 2026-03-25
Affected packages
• Packagist wwbn/avideo: <= 26.0 (no fix yet)
Description
Summary
The `getRealIpAddr()` function in `objects/functions.php` trusts user-controlled HTTP headers to determine the client's IP address.
An attacker can spoof their IP address by sending forged headers, bypassing any IP-based access controls or audit logging.
Vulnerable Code
File: `objects/functions.php`
```php
$headers = [
'HTTP_X_REAL_IP',
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED_FOR',
'REMOTE_ADDR'
];
foreach ($headers as $header) {
if (!empty($_SERVER[$header])) {
$ips = explode(',', $_SERVER[$header]);
foreach ($ips as $ipCandidate) {
$ipCandidate = trim($ipCandidate);
if (filter_var($ipCandidate, FILTER_VALIDATE_IP,
FILTER_FLAG_IPV4)) {
return $ipCandidate;
}
}
}
}
```
Attack Scenario
1. Attacker sends request with forged header:
```
X-Client-IP: 127.0.0.1
```
or
```
X-Real-IP: 192.168.1.1
```
2. `getRealIpAddr()` returns the forged IP
3. Any IP-based rate limiting, access control, or audit
log that relies on this function is bypassed
Proof of Concept
```bash
curl -H "X-Client-IP: 127.0.0.1" \
https://target.com/any_endpoint.php
```
The server now believes the request came from localhost.
Impact
• Bypass IP-based rate limiting
• Bypass IP-based access controls
• Forge audit log entries
• Potential privilege escalation if localhost is trusted
Related
Alias · CVE (1)
- CVE-2026-33690 WWBN AVideo is an open source video platform. vulnerability
Weakness · CWE (1)
- CWE-348 Use of Less Trusted Source weakness