1,537 titles and 14 fingerprints: UVDesk exposure, and the 9.3 behind it
UVDesk Community Skeleton is an open-source helpdesk, and its two ZoomEye counts differ by a factor of a hundred: 1,537 title matches against 14 application fingerprints on 27 October 2026. That gap is not a measurement error. It is the difference between "a page whose title names the product" and "a host that a rule can positively identify", and the case for caring about the population comes from a record with a 9.3 score that landed in September.
The measurement
ZoomEye, sub_type=all, one page per query, totals only, no host records retrieved:
| Query | Total |
|---|---|
| title:"UVDesk" | 1,537 |
| app:"UVDesk" | 14 |
A hundred-to-one is the widest ratio in this collection outside the products whose titles are ordinary English words, and it needs an explanation before either figure goes into a report.
Why the ratio is this wide
UVDesk is deployed as a Symfony application behind a web server, and most operators publish it on a domain or subdomain of their own. The framework's default templates render a title, but theme overrides and white-labelling are common in a helpdesk — the portal is customer-facing, so organisations rename it. The title becomes "Support Centre" or the company name; the underlying Symfony assets, cookies and route patterns do not change, so the fingerprint still matches.
That produces the classic asymmetry: the fingerprint catches white-labelled deployments, and the title catches the ones that never customised. Fourteen fingerprint matches describe hosts the index can positively identify; 1,537 title matches describe pages whose title contains the string, which includes documentation sites, tutorial pages, theme marketplaces and comparison articles alongside live instances.
What makes the 14 worth more than their size
On 16 September 2026, CVE-2026-92805 was published against UVDesk Community Skeleton through 1.1.8: the installation wizard endpoints in the ConfigureHelpdesk controller "fail to authenticate or validate installation state", so an unauthenticated caller can repoint the database and create super administrator accounts. CVSS v3.1 score 9.3, and no account required.
Four more records sit in the same product family, all authorization failures in ordinary features: stored XSS in the SwiftMailer configuration identifier (5.1), a saved-reply endpoint that lets agents read replies belonging to other support groups (5.3), an editAgent privilege escalation where an agent with agent-management rights can set their own role to ROLE_ADMIN (8.6), and an IDOR in rateTicket that lets a customer rate other customers' tickets (5.3).
The set has a shape worth naming: every one of them is a case where the request is trusted to describe the object, the group or the role it wants. A helpdesk is a concentration of exactly the data those boundaries protect — correspondence, contact records, and often credentials pasted into a ticket by a confused user.
Using the two numbers together
-
Discovery: use the fingerprint.
app:"UVDesk"finds white-labelled instances that a title query misses. Fourteen is small, and inside your own address space a small precise list is worth more than a large imprecise one. -
Then test the wizard path directly. The routes are public in the skeleton repository:
/wizard/xhr/check-requirements,/wizard/xhr/verify-database-credentials,/wizard/xhr/intermediary/super-user,/wizard/xhr/load/migrations,/wizard/xhr/load/super-user. A request to any of these on an installed host that reaches the controller instead of being refused is the finding, and it needs no payload. - Version first, exposure second. Core-framework fixes for the three 2025 records are in 1.1.7; the wizard record is against the skeleton through 1.1.8. An exposed instance on either side of those boundaries is a different conversation.
-
Audit administrators after any suspicion. CVE-2025-71421 leaves an administrator account behind, and CVE-2026-92805 creates one. Enumerate accounts with
ROLE_ADMINand check each against change control.
Reporting the pair
The honest sentence is: 1,537 indexed pages carry UVDesk in their title, 14 hosts are positively identified by fingerprint, and the population of running instances lies between those observations rather than at either end. Quoting 1,537 as an exposure count inflates by two orders of magnitude; quoting 14 as a census assumes every operator customised their portal. Reporting both, with the reason for the gap, is the only version that survives review.
Limits
Both totals are single-day index observations from one provider. The explanation for the ratio is an inference about white-labelling and Symfony asset patterns, not a classification of matched pages. No host was inspected, no wizard path was tested against a live system for this article, and no exploitation in the wild is asserted. CVE identifiers, scores and version boundaries are quoted from their NVD records.
References
- NVD record for CVE-2026-92805: https://nvd.nist.gov/vuln/detail/CVE-2026-92805
- UVDesk community-skeleton repository: https://github.com/uvdesk/community-skeleton
- UVDesk core-framework release v1.1.7: https://github.com/uvdesk/core-framework/releases/tag/v1.1.7
- NVD record for CVE-2025-71421: https://nvd.nist.gov/vuln/detail/CVE-2025-71421
- NVD record for CVE-2025-71420: https://nvd.nist.gov/vuln/detail/CVE-2025-71420
- NVD record for CVE-2026-105029: https://nvd.nist.gov/vuln/detail/CVE-2026-105029
- ZoomEye search syntax reference: https://www.zoomeye.org/doc
Top comments (0)