{"id":"CVE-2026-12849","aliases":["EUVD-2026-38651","GHSA-vrqf-28p4-6h8f"],"status":"published","title":"GeoVision GV-I/O Box 4E libNetSetObj.so OS command injection vulnerability","description":"Multiple OS command injection vulnerabilities exist in the libNetSetObj.so functionality of GeoVision GV-I/O Box 4E 2.09. A specially crafted network packet can lead to command execution. An attacker can send a network request to trigger this vulnerability.\n\n\n`libNetSetObj.so` is an internal library used by various binaries on the device to configure the network stack (start and stop various services, configure IP, Netmask, gateway, dns, etc.)\n\n\n\n#### CNetSetObj::m_F_n_Set_Net_Mask command injection\n\nThe following function takes a string as a net mask address, performs no sanitization on it and calls `system`. This is a classic command injection vulnerability. The function is reachable from both the network-exposed `DVRSearch` service and the `Network.cgi` endpoint. \n\n\n\n    int __fastcall CNetSetObj::m_F_n_Set_Net_Mask(const char **this, char *netmask_addr)\n\n    {\n\n      bool v2; // zf\n\n      char v4[72]; // [sp+0h] [bp-48h] BYREF\n\n\n\n      v2 = *this == 0;\n\n      if ( *this )\n\n        v2 = netmask_addr == 0;\n\n      if ( v2 )\n\n        return 0;\n\n      sprintf(v4, \"/sbin/ifconfig %s netmask %s\", *this, netmask_addr);  // attacker controlled netmask_addr\n\n      system(v4);\n\n      return 1;\n\n    }","severity":{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H","level":"critical","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.02703,"percentile":0.86067,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-78"],"published":"2026-06-24T03:40:21Z","modified":"2026-10-25T23:10:00Z","products":[{"vendor":"geovision inc.","product":"gv-i/o box 4e"}],"references":[{"url":"https://www.geovision.com.tw/cyber_security.php","tags":["vendor-advisory"]},{"url":"https://talosintelligence.com/vulnerability_reports/TALOS-2026-2379","tags":["third-party-advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-12849"},{"url":"https://github.com/advisories/GHSA-vrqf-28p4-6h8f"}],"sources":{"cve":[{"id":"CVE-2026-12849","title":"GeoVision GV-I/O Box 4E libNetSetObj.so OS command injection vulnerability","description":"Multiple OS command injection vulnerabilities exist in the libNetSetObj.so functionality of GeoVision GV-I/O Box 4E 2.09. A specially crafted network packet can lead to command execution. An attacker can send a network request to trigger this vulnerability.\n\n\n`libNetSetObj.so` is an internal library used by various binaries on the device to configure the network stack (start and stop various services, configure IP, Netmask, gateway, dns, etc.)\n\n\n\n#### CNetSetObj::m_F_n_Set_Net_Mask command injection\n\nThe following function takes a string as a net mask address, performs no sanitization on it and calls `system`. This is a classic command injection vulnerability. The function is reachable from both the network-exposed `DVRSearch` service and the `Network.cgi` endpoint. \n\n\n\n    int __fastcall CNetSetObj::m_F_n_Set_Net_Mask(const char **this, char *netmask_addr)\n\n    {\n\n      bool v2; // zf\n\n      char v4[72]; // [sp+0h] [bp-48h] BYREF\n\n\n\n      v2 = *this == 0;\n\n      if ( *this )\n\n        v2 = netmask_addr == 0;\n\n      if ( v2 )\n\n        return 0;\n\n      sprintf(v4, \"/sbin/ifconfig %s netmask %s\", *this, netmask_addr);  // attacker controlled netmask_addr\n\n      system(v4);\n\n      return 1;\n\n    }","status":"published","published":"2026-06-24T03:40:21.823Z","modified":"2026-06-24T12:53:41.973Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H","level":"critical","assessor":"cna"}],"cwes":["CWE-78"],"updated_at":"2026-11-02T14:19:48.461833Z"}],"euvd":[{"id":"EUVD-2026-38651","description":"Multiple OS command injection vulnerabilities exist in the libNetSetObj.so functionality of GeoVision GV-I/O Box 4E 2.09. A specially crafted network packet can lead to command execution. An attacker can send a network request to trigger this vulnerability.\n\n\n`libNetSetObj.so` is an internal library used by various binaries on the device to configure the network stack (start and stop various services, configure IP, Netmask, gateway, dns, etc.)\n\n\n\n#### CNetSetObj::m_F_n_Set_Net_Mask command injection\n\nThe following function takes a string as a net mask address, performs no sanitization on it and calls `system`. This is a classic command injection vulnerability. The function is reachable from both the network-exposed `DVRSearch` service and the `Network.cgi` endpoint. \n\n\n\n    int __fastcall CNetSetObj::m_F_n_Set_Net_Mask(const char **this, char *netmask_addr)\n\n    {\n\n      bool v2; // zf\n\n      char v4[72]; // [sp+0h] [bp-48h] BYREF\n\n\n\n      v2 = *this == 0;\n\n      if ( *this )\n\n        v2 = netmask_addr == 0;\n\n      if ( v2 )\n\n        return 0;\n\n      sprintf(v4, \"/sbin/ifconfig %s netmask %s\", *this, netmask_addr);  // attacker controlled netmask_addr\n\n      system(v4);\n\n      return 1;\n\n    }","status":"published","published":"2026-06-24T03:40:21Z","modified":"2026-06-24T12:53:41Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T18:20:31.123469Z"}],"ghsa":[{"id":"GHSA-vrqf-28p4-6h8f","title":"Multiple OS command injection vulnerabilities exist in the libNetSetObj.so functionality of...","description":"Multiple OS command injection vulnerabilities exist in the libNetSetObj.so functionality of GeoVision GV-I/O Box 4E 2.09. A specially crafted network packet can lead to command execution. An attacker can send a network request to trigger this vulnerability.\n\n\n`libNetSetObj.so` is an internal library used by various binaries on the device to configure the network stack (start and stop various services, configure IP, Netmask, gateway, dns, etc.)\n\n\n\n#### CNetSetObj::m_F_n_Set_Net_Mask command injection\n\nThe following function takes a string as a net mask address, performs no sanitization on it and calls `system`. This is a classic command injection vulnerability. The function is reachable from both the network-exposed `DVRSearch` service and the `Network.cgi` endpoint. \n\n\n\n    int __fastcall CNetSetObj::m_F_n_Set_Net_Mask(const char **this, char *netmask_addr)\n\n    {\n\n      bool v2; // zf\n\n      char v4[72]; // [sp+0h] [bp-48h] BYREF\n\n\n\n      v2 = *this == 0;\n\n      if ( *this )\n\n        v2 = netmask_addr == 0;\n\n      if ( v2 )\n\n        return 0;\n\n      sprintf(v4, \"/sbin/ifconfig %s netmask %s\", *this, netmask_addr);  // attacker controlled netmask_addr\n\n      system(v4);\n\n      return 1;\n\n    }","status":"published","published":"2026-06-24T06:31:45Z","modified":"2026-06-24T06:31:46Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-78"],"updated_at":"2026-11-02T15:08:57.478089Z"}],"nvd":[{"id":"CVE-2026-12849","description":"Multiple OS command injection vulnerabilities exist in the libNetSetObj.so functionality of GeoVision GV-I/O Box 4E 2.09. A specially crafted network packet can lead to command execution. An attacker can send a network request to trigger this vulnerability.\n\n\n`libNetSetObj.so` is an internal library used by various binaries on the device to configure the network stack (start and stop various services, configure IP, Netmask, gateway, dns, etc.)\n\n\n\n#### CNetSetObj::m_F_n_Set_Net_Mask command injection\n\nThe following function takes a string as a net mask address, performs no sanitization on it and calls `system`. This is a classic command injection vulnerability. The function is reachable from both the network-exposed `DVRSearch` service and the `Network.cgi` endpoint. \n\n\n\n    int __fastcall CNetSetObj::m_F_n_Set_Net_Mask(const char **this, char *netmask_addr)\n\n    {\n\n      bool v2; // zf\n\n      char v4[72]; // [sp+0h] [bp-48h] BYREF\n\n\n\n      v2 = *this == 0;\n\n      if ( *this )\n\n        v2 = netmask_addr == 0;\n\n      if ( v2 )\n\n        return 0;\n\n      sprintf(v4, \"/sbin/ifconfig %s netmask %s\", *this, netmask_addr);  // attacker controlled netmask_addr\n\n      system(v4);\n\n      return 1;\n\n    }","status":"published","published":"2026-06-24T05:17:26.89Z","modified":"2026-10-25T23:10:00.167Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H","level":"critical","assessor":"secondary"}],"cwes":["CWE-78"],"updated_at":"2026-11-02T14:12:25.288279Z"}]}}
