{"id":"CVE-2026-114400","kind":"vulnerability","aliases":["CVE-2026-114400"],"related":[],"title":"Trudesk: unauthenticated download of private ticket attachments","description":"Trudesk through 1.2.11 contains a missing authentication vulnerability that allows unauthenticated attackers to download private ticket attachments under /uploads. Because express.static serves the public/ directory before the hasAuth-guarded /uploads mount, attackers who know or guess a ticket ObjectId and filename can retrieve confidential attachments.","summary":"Trudesk through 1.2.11 serves files under /uploads without checking login, because a static route for the public directory is matched first. An unauthenticated attacker who knows or guesses a ticket ID and filename can download confidential ticket attachments.","severity":"high","cvss":8.2,"epss":0.00523,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["helpdesk","node.js","package","self-hosted","trudesk"],"not_affected_if":["auth-enforced-at-proxy","no-attachments"],"how_to_check":"- Check the installed Trudesk version and whether it is `1.2.11` or earlier.\n- Look for the `express.static` setup that serves `public/` ahead of the `hasAuth`-guarded `/uploads` mount in the Trudesk server code.\n- Request an attachment URL under `/uploads` without a session cookie and see whether it returns the file.","fix":"- Upgrade Trudesk to a version later than `1.2.11`; the sources do not name the fixed release, so check the vendor repository.\n- Until patched, put the `/uploads` path behind authentication at the reverse proxy or block unauthenticated requests to it.","status":"open","published_at":"2026-10-21T13:18:31+00:00","first_seen_at":"2026-10-23T21:57:28+00:00","triaged_at":"2026-10-25T03:03:49+00:00","updated_at":"2026-10-25T03:03:49+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T03:03:49Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Trudesk to a version later than `1.2.11`; the sources do not name the fixed release, so check the vendor repository.\n- Until patched, put the `/uploads` path behind authentication at the reverse proxy or block unauthenticated requests to it.","reach":"internet","title":"Trudesk: unauthenticated download of private ticket attachments","impact":"medium","summary":"Trudesk through 1.2.11 serves files under /uploads without checking login, because a static route for the public directory is matched first. An unauthenticated attacker who knows or guesses a ticket ID and filename can download confidential ticket attachments.","category":"package","nicknames":[],"who_cares":["trudesk","self-hosted","node.js","helpdesk"],"confidence":0.7,"needs_auth":"no","worst_case":"Confidential ticket attachments downloaded by anyone who guesses an ID and filename","analyst_note":"Find the fixed Trudesk version and vendor advisory from the NVD reference; sources do not name a patched release.","how_to_check":"- Check the installed Trudesk version and whether it is `1.2.11` or earlier.\n- Look for the `express.static` setup that serves `public/` ahead of the `hasAuth`-guarded `/uploads` mount in the Trudesk server code.\n- Request an attachment URL under `/uploads` without a session cookie and see whether it returns the file.","needs_analyst":true,"not_affected_if":["auth-enforced-at-proxy","no-attachments"],"who_is_affected":"Any Trudesk instance at version 1.2.11 or earlier that stores ticket attachments is exposed, and self-hosted instances reachable from the internet are the most at risk. Deployments that already block direct access to `/uploads` at a proxy, or that run no attachments, are less affected.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000667,"input_tokens":3375,"output_tokens":659,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-114400':10A,13A '-2026':9A,12A '/uploads':27B,77C,89C '1.2.11':23B,61C 'allow':68C 'attach':7A,58B,75C,104C 'attack':44B,70C,91C 'authent':65C 'check':29B 'confidenti':56B,103C 'contain':62C 'cve':8A,11A 'directori':38B,83C 'download':3A,55B,72C 'express.static':79C 'file':25B 'filenam':53B,100C 'first':41B 'guard':88C 'guess':48B,95C 'hasauth':87C 'hasauth-guard':86C 'helpdesk':14B 'host':19B 'id':51B 'know':46B,93C 'login':30B 'match':40B 'miss':64C 'mount':90C 'node.js':15B 'objectid':98C 'packag':16B 'privat':5A,73C 'public':37B,82C 'retriev':102C 'rout':34B 'self':18B 'self-host':17B 'serv':24B,80C 'static':33B 'ticket':6A,50B,57B,74C,97C 'trudesk':1A,20B,21B,59C 'unauthent':2A,43B,69C 'vulner':66C 'without':28B","nicknames":[],"mitigations":[],"who_affected":"Any Trudesk instance at version 1.2.11 or earlier that stores ticket attachments is exposed, and self-hosted instances reachable from the internet are the most at risk. Deployments that already block direct access to `/uploads` at a proxy, or that run no attachments, are less affected.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-21T13:18:31+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/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","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-114400","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-114400","severity":null,"published_at":"2026-10-21T13:18:31+00:00","modified_at":"2026-10-23T19:17:44+00:00","first_seen_at":"2026-10-23T21:57:28+00:00","fetched_at":"2026-10-23T22:29:01+00:00","note":null},{"source":"epss","external_id":"CVE-2026-114400","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-114400","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T13:15:54+00:00","fetched_at":"2026-10-24T13:15:54+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"}