{"schemaVersion":3,"id":"CVE-2026-31817","aliases":["GHSA-364q-w7vh-vhpc","GO-2026-4670"],"status":"published","duplicateOf":null,"title":null,"description":"OliveTin gives access to predefined shell commands from a web interface. Prior to 3000.11.2, when the saveLogs feature is enabled, OliveTin persists execution log entries to disk. The filename used for these log files is constructed in part from the user-supplied UniqueTrackingId field in the StartAction API request. This value is not validated or sanitized before being used in a file path, allowing an attacker to use directory traversal sequences (e.g., ../../../) to write files to arbitrary locations on the filesystem. This vulnerability is fixed in 3000.11.2.","dates":{"published":"2026-03-10T21:08:53.873Z","modified":"2026-03-11T15:19:29.025Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":8.5,"severity":"high","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:L","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":8.5,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:L","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Go","score":8.5,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:L","exploitability":7.9,"impact":7.8,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":8.5,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:L","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00955,"percentile":0.6097,"severity":"low","asOf":"2026-10-21T00:00:00.000Z","change":{"pp":0.243,"baselineDate":"2026-09-21T00:00:00.000Z","baselineScore":0.00712},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00955,"percentile":0.6097}],"last30":[{"date":"2026-09-21T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00712,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00919,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00955,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00955,"percentile":0.6097}]},"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":[{"id":"GITHUB_OLIVETIN_OLIVETIN","name":"Olivetin","source":"github","url":"https://github.com/OliveTin/OliveTin/security/advisories/GHSA-49gm-hh7w-wfvf","maturity":"poc","reliabilityScore":0.3,"verified":false,"type":null,"platforms":[],"requiresAuth":null,"exploitdb":null,"metasploit":null}],"exploitCount":1,"weaknesses":[{"id":"CWE-22","name":"Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')","description":"The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.","type":"weakness","status":"Stable","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/22.html"}],"affected":[{"vendor":"github.com/OliveTin","product":"OliveTin","name":"github.com/OliveTin/OliveTin","label":"OliveTin","ecosystem":"Go","cpePart":null,"purl":"pkg:golang/github.com/OliveTin/OliveTin","purlType":"golang","versions":[{"text":"< 0.0.0-20260309102040-b03af0e2eca3","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.0.0-20260309102040-b03af0e2eca3","eol":null,"hubHref":null},{"vendor":"olivetin","product":"olivetin","name":"olivetin","label":"olivetin","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 3000.11.2","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 3000.11.2","eol":null,"hubHref":"/vendor/olivetin/olivetin"}],"affectedCount":2,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/OliveTin/OliveTin/security/advisories/GHSA-364q-w7vh-vhpc","label":"github.com/OliveTin/OliveTin/security/advisories/GHSA-364q-w7vh-vhpc","hostname":"github.com","tags":["X Refsource CONFIRM","WEB","Advisory","Exploit","Mitigation","Vendor Advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-31817","label":"nvd.nist.gov/vuln/detail/CVE-2026-31817","hostname":"nvd.nist.gov","tags":["Advisory"]},{"url":"https://github.com/OliveTin/OliveTin/commit/2f77000de44f65690f257e3cf8e2c8462b0e74c7","label":"github.com/OliveTin/OliveTin/commit/2f77000de44f65690f257e3cf8e2c8462b0e74c7","hostname":"github.com","tags":["WEB","FIX"]},{"url":"https://github.com/OliveTin/OliveTin","label":"github.com/OliveTin/OliveTin","hostname":"github.com","tags":["PACKAGE"]},{"url":"https://github.com/OliveTin/OliveTin/releases/tag/3000.11.2","label":"github.com/OliveTin/OliveTin/releases/tag/3000.11.2","hostname":"github.com","tags":["WEB"]}],"lineage":{"upstream":[],"downstream":["OPENSUSE-SU-2026:21483-1","SUSE-SU-2026:1042-1"],"duplicates":[],"related":["OPENSUSE-SU-2026:21483-1","SUSE-SU-2026:1042-1"]},"timeline":[{"kind":"published","date":"2026-03-10T21:08:53.873Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-03-11T15:19:29.025Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":44,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-22T11:41:38.065Z","stale":false,"partial":false}}