Summary
CVE-2026-38447 is a broken-cryptography vulnerability in osTicket, an open-source support-ticket/helpdesk platform. The application generates REST API keys using MD5 over predictable inputs, drastically reducing the effective keyspace and allowing an attacker to predict or brute-force valid keys. It is rated CRITICAL with a CVSS v3.1 base score of 9.8.
Technical details
- Root cause: API keys are derived from
md5(time() . $vars['ipaddr'] . md5(Misc::randCode(16)))ininclude/class.api.php. Building the key from MD5 combined with low-entropy inputs undermines the randomness expected of an authentication token. - Predictable inputs: The construction folds in the current Unix timestamp (
time()) and the client IP address ($vars['ipaddr']), both of which are guessable or knowable, shrinking the search space well below that of a truly random token. - Trigger conditions: An attacker who can narrow the approximate key-creation timestamp and the associated allowed IP address can predict or brute-force the generated key value.
- Attack vector: Network-exploitable without authentication. A valid API key grants REST access enabling ticket creation as arbitrary users, triggering of cron job execution, and access to ticket data permitted to the key.
Affected software
- osTicket version 1.18.3 and earlier.
Severity
- CVSS v3.1 base score: 9.8 (Critical)
- Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Mitigation and recommended actions
- Immediate: Upgrade to an osTicket release that incorporates the upstream fix (reference commit
feccb6a3a90863fd31215ee738b39762177e658c), which replaces the MD5-and-predictable-input construction with a cryptographically secure random generator (e.g.bin2hex(random_bytes(32))). - If no patch can be applied: Restrict access to the osTicket REST API endpoints at the network layer, rotate any existing API keys, and enforce strict IP allow-listing on API access.
How IONIX identifies potentially affected assets
IONIX matches the following signals against data already collected when it crawled the asset; identifying the technology sends no request beyond that crawl.
- Set-Cookie response header:
OSTSESSID

