{"schemaVersion":3,"id":"CVE-2022-50994","aliases":[],"status":"published","duplicateOf":null,"title":null,"description":"DrayTek Vigor 2960 firmware versions prior to 1.5.1.4 contain an OS command injection vulnerability in the CGI login handler that allows unauthenticated remote attackers to execute arbitrary commands by injecting shell metacharacters into the formpassword parameter. Attackers can exploit unsanitized input passed to the otp_check.sh script to achieve remote code execution with web server privileges. Exploitation requires knowledge of a valid username and that the target account has MOTP authentication enabled.","dates":{"published":"2026-05-08T12:35:08.919Z","modified":"2026-07-15T01:24:49.737Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":9.2,"severity":"critical","version":"4.0","versionLabel":"v4.0","source":"CVE.org","vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":9.2,"severity":"critical","vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":8.1,"severity":"high","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":9.2,"severity":"critical","vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/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","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":8.1,"severity":"high","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.01432,"percentile":0.72812,"severity":"low","asOf":"2026-10-21T00:00:00.000Z","change":{"pp":0,"baselineDate":"2026-09-21T00:00:00.000Z","baselineScore":0.01432},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.01432,"percentile":0.72812}],"last30":[{"date":"2026-09-21T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.01432,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.01432,"percentile":0.72812}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-78","name":"Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')","description":"The product constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component.","type":"weakness","status":"Stable","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/78.html"}],"affected":[{"vendor":"draytek","product":"vigor_2960_firmware","name":"vigor 2960 firmware","label":"vigor_2960_firmware","ecosystem":null,"cpePart":"o","purl":null,"purlType":null,"versions":[{"text":"< 1.5.1.4","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.5.1.4","eol":null,"hubHref":"/vendor/draytek/vigor_2960"}],"affectedCount":1,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://www.draytek.co.uk/support/downloads/vigor-2960/older-firmware/firmware-1514?task=download.send&id=2597:readme-v2960-1514&catid=1251","label":"www.draytek.co.uk/support/…","hostname":"www.draytek.co.uk","tags":["Release Notes","Patch"]},{"url":"https://www.draytek.com/about/newsroom/2021/2021/end-of-life-notification-vigor2960","label":"www.draytek.com/about/newsroom/2021/2021/end-of-life-notification-vigor2960","hostname":"www.draytek.com","tags":["Vendor Advisory"]},{"url":"https://www.vulncheck.com/advisories/draytek-vigor-2960-os-command-injection-via-mainfunction-cgi","label":"www.vulncheck.com/advisories/draytek-vigor-2960-os-command-injection-via-mainfunction-cgi","hostname":"www.vulncheck.com","tags":["Third Party Advisory"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-05-08T12:35:08.919Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-07-15T01:24:49.737Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":70,"level":"high","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-22T13:45:09.851Z","stale":false,"partial":false}}