Severity by source
AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:H
Browser-driven reach to a localhost server gives AV:N with UI:R; unreliable OOB pointer control gives AC:H; no auth is PR:N; code execution escaping the WebSocket handler yields S:C and C/I/A:H.
Primary rating from Vendor (GV).
CVSS VectorVendor: GV
Lifecycle Timeline
1DescriptionCVE.org
GeoWebPlayer (also called "Web Plugin" in the GV-VMS documentation and "WS Player" for VMS-Cloud) is an addon that can be installed with various GeoVision software (GV-VMS, GV-Cloud, ...). It creates a websocket server that expands the capabilities of the various web-interfaces provided by the GeoVision software and may be necessary for them to function properly.
The Websocket server can accept various commands coming from localhost. Many of the commands will take an index value that is then used to access various arrays to enter critical sections, perform various actions via function calls, etc. However the index value is usually not checked for valid range, and as such it can be used to access multiple arrays out-of-bound.
saveVideo command index-out-of-bound
When sending the saveVideo command, the index field is extracted from the websocket message [1]. Then without checking the range of the index, it is used to trigger a CriticalSection ([2]) and releases it [3]. The release function call ([3]) is executed using a function pointer which will be read out of bounds potentially leading to code execution:
v6 = get_entry(a2, "index");
result = json_is_value_int(v6);
if ( (_BYTE)result )
{
v8 = get_entry(a2, "index");
index = json_value_to_int(&v8->value); // [1]
result = CCriticalSection::EnterCritSection(&this->crit_sections[index]); //[2]
if ( result )
{
if ( this->array_of_IPCams[index] )
{
if ( this->array_of_IPCams[index]->field_20 )
do_PostMessageA((CViewer *)this->array_of_IPCams[index], 0x111u, 0x139Fu, v11);
}
return (*(int (__thiscall **)(CCriticalSection *))(this->crit_sections[index].vtbl + 20))(&this->crit_sections[index]); //[3]
}
}
AnalysisAI
Out-of-bounds array access in GeoVision's GeoWebPlayer addon (also branded 'Web Plugin' in GV-VMS and 'WS Player' in VMS-Cloud) can lead to remote code execution when the addon's localhost WebSocket server processes a saveVideo command with an attacker-controlled index. Because the addon ships with widely-used GeoVision products (GV-VMS, GV-Cloud) and is reachable from a victim's browser via a malicious web page, a lured user visiting attacker-controlled content can trigger an out-of-bounds function-pointer call. This is a Talos-reported (TALOS-2026-2373) issue with no public exploit identified at time of analysis and is not listed in CISA KEV.
Technical ContextAI
GeoWebPlayer runs a local WebSocket server that bridges GeoVision web interfaces to native functionality; commands are accepted from localhost and dispatched by a native C++ handler. The root cause is CWE-129 (Improper Validation of Array Index): the saveVideo handler extracts the JSON 'index' field and uses it directly to index parallel arrays - crit_sections[], array_of_IPCams[] - without any bounds check. The decompiled flow shows the index driving CCriticalSection::EnterCritSection(&crit_sections[index]) and then a virtual/function-pointer call '(*(...)( crit_sections[index].vtbl + 20))', so an out-of-range index causes both a critical-section object and its vtable/function pointer to be read from arbitrary adjacent memory, and the subsequent indirect call transfers control to whatever is at that computed pointer - the classic path from OOB read to control-flow hijack. The single affected component per CPE is cpe:2.3:a:geovision_inc.:geowebplayer:*.
RemediationAI
Consult the GeoVision cyber security advisory (https://www.geovision.com.tw/cyber_security.php) and apply the fixed GeoWebPlayer/Web Plugin build once published; no exact fix version is identified in the available data, so no vendor-released patch version can be independently confirmed at time of analysis, and the TALOS-2026-2373 report (https://talosintelligence.com/vulnerability_reports/TALOS-2026-2373) should be tracked for coordinated-disclosure fix details. As compensating controls until a confirmed patch is deployed: uninstall or disable the GeoWebPlayer addon on hosts where the web-interface features it enables are not required (trade-off: some GeoVision web UI features such as in-browser video playback may stop working); restrict outbound browsing on machines running GV-VMS/GV-Cloud so operators do not visit untrusted sites while the local WebSocket server is running (trade-off: operational friction on operator workstations); and where feasible add a host firewall/loopback filtering or browser policy that blocks untrusted origins from reaching the local WebSocket listener to reduce the browser-driven trigger surface (trade-off: may require testing to avoid breaking legitimate same-host UI traffic).
More in Geowebplayer
View allMissing authentication in GeoVision's GeoWebPlayer addon (also branded 'Web Plugin' in GV-VMS and 'WS Player' in VMS-Clo
Remote code execution in GeoVision GeoWebPlayer (the browser-facing 'Web Plugin'/'WS Player' addon bundled with GV-VMS,
Cross-site WebSocket-driven buffer overflow in GeoVision GeoWebPlayer (the 'Web Plugin'/'WS Player' addon bundled with G
Buffer overflow vulnerabilities in GeoVision's GeoWebPlayer WebSocket addon (CWE-120) allow a remote attacker to induce
Remote code execution in GeoVision GeoWebPlayer (the "Web Plugin"/"WS Player" addon bundled with GV-VMS, GV-Cloud and VM
Buffer overflow in GeoVision's GeoWebPlayer addon (also branded "Web Plugin" in GV-VMS and "WS Player" in VMS-Cloud) all
Stack buffer overflow in GeoVision's GeoWebPlayer addon (also branded "Web Plugin" for GV-VMS and "WS Player" for VMS-Cl
Out-of-bounds array access in GeoVision's GeoWebPlayer add-on (also branded 'Web Plugin' for GV-VMS and 'WS Player' for
Out-of-bounds array access in GeoVision's GeoWebPlayer (a.k.a. 'Web Plugin' / 'WS Player') addon lets an attacker read m
Out-of-bounds array indexing in GeoVision's GeoWebPlayer addon (also branded 'Web Plugin' in GV-VMS and 'WS Player' in V
Out-of-bounds array access in GeoVision GeoWebPlayer (a.k.a. "Web Plugin"/"WS Player"), a websocket-server addon bundled
Out-of-bounds array access in GeoVision's GeoWebPlayer (the 'Web Plugin'/'WS Player' addon bundled with GV-VMS, GV-Cloud
Same weakness CWE-129 – Improper Validation of Array Index
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-41230
GHSA-fxf5-23x5-47m9