{"id":"CVE-2026-108980","state":"PUBLISHED","title":"Blinko through 1.8.8 allows directory traversal, overwriting startup files as root, via installPlugin. It builds the plugin install path from an unsanitized name in server/routerTr","description":"Blinko through 1.8.8 allows directory traversal, overwriting startup files as root, via installPlugin. It builds the plugin install path from an unsanitized name in server/routerTrpc/plugin.ts, and the plugin.installPlugin tRPC procedure is open to any authenticated user. Thus, a name containing ../ sequences writes the downloaded plugin files outside the plugins directory. Because the official Docker image runs as root, an authenticated attacker overwrites a root-owned startup file and achieves remote code execution as root. Self-registration for an account may be possible.","publishedAt":"2026-10-12T01:55:59.223Z","updatedAt":"2026-10-13T19:12:39.874Z","severity":{"score":8.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"mitre"},"assigner":"mitre","products":["Blinko Blinko"],"affected":[{"vendor":"Blinko","product":"Blinko","defaultStatus":"unknown","versions":[{"version":"0","status":"affected","lessThanOrEqual":"1.8.8","versionType":"semver"}],"programFiles":["server/routerTrpc/plugin.ts"],"programRoutines":[{"name":"installPlugin"},{"name":"getPluginDir"}],"repo":"https://github.com/blinko-space/blinko"}],"references":["https://github.com/kashishtopi/blinko-plugin-path-traversal-rce","https://github.com/blinkospace/blinko/blob/178e4b3538a21823a50ac2481e653d56cb1ffa86/server/routerTrpc/plugin.ts#L273","https://github.com/blinkospace/blinko/blob/178e4b3538a21823a50ac2481e653d56cb1ffa86/app/src/pages/signin.tsx#L238-L243"],"weaknesses":["CWE-24"],"ingestedAt":"2026-10-29T20:10:33.477Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/108xxx/CVE-2026-108980.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-108980","state":"PUBLISHED","datePublished":"2026-10-12T01:55:59.223Z","dateUpdated":"2026-10-13T19:12:39.874Z","assignerShortName":"mitre","assignerOrgId":"8254265b-2729-46b6-b9e3-3dfca2d5bfca","dateReserved":"2026-10-12T01:55:58.302Z"},"containers":{"cna":{"descriptions":[{"lang":"en","value":"Blinko through 1.8.8 allows directory traversal, overwriting startup files as root, via installPlugin. It builds the plugin install path from an unsanitized name in server/routerTrpc/plugin.ts, and the plugin.installPlugin tRPC procedure is open to any authenticated user. Thus, a name containing ../ sequences writes the downloaded plugin files outside the plugins directory. Because the official Docker image runs as root, an authenticated attacker overwrites a root-owned startup file and achieves remote code execution as root. Self-registration for an account may be possible."}],"affected":[{"vendor":"Blinko","product":"Blinko","defaultStatus":"unknown","versions":[{"version":"0","status":"affected","lessThanOrEqual":"1.8.8","versionType":"semver"}],"programFiles":["server/routerTrpc/plugin.ts"],"programRoutines":[{"name":"installPlugin"},{"name":"getPluginDir"}],"repo":"https://github.com/blinko-space/blinko"}],"references":[{"url":"https://github.com/kashishtopi/blinko-plugin-path-traversal-rce","tags":["exploit","technical-description"]},{"url":"https://github.com/blinkospace/blinko/blob/178e4b3538a21823a50ac2481e653d56cb1ffa86/server/routerTrpc/plugin.ts#L273","tags":["product"]},{"url":"https://github.com/blinkospace/blinko/blob/178e4b3538a21823a50ac2481e653d56cb1ffa86/app/src/pages/signin.tsx#L238-L243","tags":["product"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"HIGH","baseScore":8.8,"baseSeverity":"HIGH","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"LOW","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","version":"3.1"},"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}]}],"problemTypes":[{"descriptions":[{"cweId":"CWE-24","description":"CWE-24 Path Traversal: '../filedir'","lang":"en","type":"CWE"}]}],"providerMetadata":{"shortName":"mitre","orgId":"8254265b-2729-46b6-b9e3-3dfca2d5bfca","dateUpdated":"2026-10-12T01:55:59.223Z"},"x_generator":{"engine":"CVE-Request-form 0.0.1"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:a:blinko:blinko:*:*:*:*:*:*:*:*","versionEndIncluding":"1.8.8"}]}]}]},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-10-13T19:12:25.927139Z","id":"CVE-2026-108980","options":[{"Exploitation":"poc"},{"Automatable":"no"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-13T19:12:39.874Z"}}]}}}