{"id":"CVE-2026-113391","kind":"vulnerability","aliases":["CVE-2026-113391"],"related":[],"title":"DrayTek Vigor2960 router: remote command injection via firmware upload endpoint","description":"A vulnerability has been found in DrayTek Vigor2960 1.5.1.6 Revision 8218. This affects the function uploadlangs of the file /cgi-bin/mainfunction.cgi of the component Upload Endpoint. Such manipulation leads to command injection. The attack can be executed remotely. The exploit has been disclosed to the public and may be used. Upgrading to version 1.5.1.7 is able to mitigate this issue. It is recommended to upgrade the affected component. The vendor explains: \"2960 1.5.1.7 has corrected many security issues. And 2960 is EoS with limited support, only major issues would be reviewed(e.g. unauthenticated vuln.)\". This vulnerability only affects products that are no longer supported by the maintainer.","summary":"The uploadlangs function in the Vigor2960 web management CGI (/cgi-bin/mainfunction.cgi) fails to sanitize input, allowing command injection. A remote attacker can run commands on the router, and public exploit code is reported to exist.","severity":"critical","cvss":9.9,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["draytek","firmware","infrastructure","routers","self-hosted","vigor2960"],"not_affected_if":["already-on-1.5.1.7"],"how_to_check":"Compare the firmware version on the device admin page with 1.5.1.6 Revision 8218 or earlier.","fix":"Upgrade to firmware 1.5.1.7 or later, per the source. The vendor says this model is end-of-sale with limited support, so confirm 1.5.1.7 is still available before relying on it.","status":"open","published_at":"2026-10-20T13:16:40+00:00","first_seen_at":"2026-10-23T21:57:20+00:00","triaged_at":"2026-10-23T22:39:36+00:00","updated_at":"2026-10-23T22:39:36+00:00","category":"infrastructure","confidence":0.6,"triage":{"at":"2026-10-23T22:39:36Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade to firmware 1.5.1.7 or later, per the source. The vendor says this model is end-of-sale with limited support, so confirm 1.5.1.7 is still available before relying on it.","reach":"unknown","title":"DrayTek Vigor2960 router: remote command injection via firmware upload endpoint","impact":"high","summary":"The uploadlangs function in the Vigor2960 web management CGI (/cgi-bin/mainfunction.cgi) fails to sanitize input, allowing command injection. A remote attacker can run commands on the router, and public exploit code is reported to exist.","category":"infrastructure","who_cares":["draytek","vigor2960","routers","self-hosted"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Attacker runs commands on the router as a remote user.","analyst_note":"Check whether 1.5.1.7 is still downloadable from DrayTek's support site given end-of-sale status, and whether the upload endpoint requires login (NVD and the vendor note do not say).","how_to_check":"Compare the firmware version on the device admin page with 1.5.1.6 Revision 8218 or earlier.","needs_analyst":true,"not_affected_if":["already-on-1.5.1.7"],"user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000837,"input_tokens":3088,"output_tokens":1057,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-113391':13A,16A '-2026':12A,15A '/cgi-bin/mainfunction.cgi':34B,78C '1.5.1.6':67C '1.5.1.7':111C,130C '2960':129C,137C '8218':69C 'abl':113C 'affect':71C,124C,155C 'allow':39B 'attack':44B,91C 'cgi':33B 'code':54B 'command':5A,40B,47B,88C 'compon':81C,125C 'correct':132C 'cve':11A,14A 'disclos':100C 'draytek':1A,17B,65C 'e.g':149C 'endpoint':10A,83C 'eo':139C 'execut':94C 'exist':58B 'explain':128C 'exploit':53B,97C 'fail':35B 'file':77C 'firmwar':8A,18B 'found':63C 'function':27B,73C 'host':23B 'infrastructur':19B 'inject':6A,41B,89C 'input':38B 'issu':117C,135C,145C 'lead':86C 'limit':141C 'longer':160C 'maintain':164C 'major':144C 'manag':32B 'mani':133C 'manipul':85C 'may':105C 'mitig':115C 'product':156C 'public':52B,103C 'recommend':120C 'remot':4A,43B,95C 'report':56B 'review':148C 'revis':68C 'router':3A,20B,50B 'run':46B 'sanit':37B 'secur':134C 'self':22B 'self-host':21B 'support':142C,161C 'unauthent':150C 'upgrad':108C,122C 'upload':9A,82C 'uploadlang':26B,74C 'use':107C 'vendor':127C 'version':110C 'via':7A 'vigor2960':2A,24B,30B,66C 'vuln':151C 'vulner':60C,153C 'web':31B 'would':146C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-20T13:16:40+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"cna@vuldb.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-113391","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-113391","severity":null,"published_at":"2026-10-20T13:16:40+00:00","modified_at":"2026-10-20T19:27:34+00:00","first_seen_at":"2026-10-23T21:57:20+00:00","fetched_at":"2026-10-23T22:28:58+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}