---
id: CVE-2026-80348
title: >-
  TarsWeb enforces its per-application roles by calling AuthService from
  individual controller methods, and four methods in
  app/controller/patch/PatchController.js make no such call
summary: >-
  TarsWeb enforces its per-application roles by calling AuthService from
  individual controller methods, and four methods in
  app/controller/patch/PatchController.js make no such call. uploadAndPublish
  accepts a package upload and then build…
severity: high
cvss: 8.8
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'
cwe:
  - CWE-862
published: '2026-08-26'
updated: '2026-09-23'
sourceUpdated: '2026-09-23T17:17:45.487'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-80348'
references:
  - url: 'https://github.com/TarsCloud/TarsWeb'
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/TarsCloud/TarsWeb/blob/v3.0.16/app/controller/patch/PatchController.js
    label: disclosure@vulncheck.com
  - url: 'https://github.com/TarsCloud/TarsWeb/issues/213'
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/tarsweb-through-3.0.16-missing-authorization-on-patch-deploy-download-and-delete-endpoints
    label: disclosure@vulncheck.com
tags:
  - nvd
epss: 0.00569
epssPercentile: 0.44712
ingestedAt: '2026-09-23T17:28:14.802Z'
---

## Overview

TarsWeb enforces its per-application roles by calling AuthService from individual controller methods, and four methods in app/controller/patch/PatchController.js make no such call. uploadAndPublish accepts a package upload and then builds and dispatches a deployment task to every server matching the supplied application and module name, while its sibling uploadPatchPackage, which only stores the package, does check developer authorization first. The only precondition uploadAndPublish enforces is that the named server is registered, and any registered server in the installation satisfies it. downloadPackage and deletePatchPackage select a package by an unscoped sequential primary key covering every application's uploads, and setPatchPackageDefault changes which package a given application deploys by default. Any authenticated account, including one holding a role scoped to a single unrelated application, can therefore push a package to and trigger its deployment on any server the console manages, retrieve or delete any other application's package, and change which package is deployed by default.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
