Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain code execution as nobody web user
-
DeliveryPlant malicious package in /usr/local/lsws/autoupdate/
-
ExploitWait for admin-triggered auto-update
-
ExecutionWin TOCTOU race before root extraction
-
Impactinstall.sh executes arbitrary code as root
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
|
| Exploitation Conditions | Requires three concrete preconditions: (1) the attacker must already control the 'nobody' web-server process (prior code execution as that low-privileged user); (2) OpenLiteSpeed's lsup.sh auto-update feature must be exercised by an administrator, since the malicious payload only runs when root performs an update; and (3) the attacker must win a TOCTOU race to replace the package in the nobody-writable /usr/local/lsws/autoupdate/ directory before root extracts and runs its install.sh. Limiting factors: affected only in versions before 1.9.3, local access only (AV:L), no SHA-256 verification in the pre-fix script, and dependence on an operator-triggered update plus race timing (AC:H/AT:P) - all of which substantially narrow realistic exploitation despite the root-level impact. |
| Impact | This is a genuine but conditional local privilege-escalation (CWE-367 TOCTOU) issue, not a remotely weaponizable critical. The input CVSS 4.0 vector (AV:L/AC:H/AT:P/PR:L/UI:P, score 5.4 Medium) is internally consistent with the description: exploitation is local, requires an existing low-privileged foothold (the nobody web process), depends on an administrator-initiated update actually occurring (UI/attack requirement), and hinges on winning a race condition (AC:H) - so this is a second-stage escalation primitive rather than an initial-access bug. The technical impact is severe once conditions are met (VC:H/VI:H/VA:H = full root code execution), which is why it matters for defense-in-depth. However, the signals temper urgency: NO EPSS score was provided (exploitation-probability unknown), the CVE is NOT in CISA KEV, and no public proof-of-concept is referenced - only a vendor/VulnCheck advisory, the fixing commit, and source lines. SSVC-style reading: exploitation=none observed, automatable=no (requires a race against an operator-triggered update), technical impact=total. Net: real but lower-priority than its root-code-execution impact might suggest; prioritize on hosts where OpenLiteSpeed auto-update is used and where web code already runs as nobody. No signals conflict here - all point to a high-impact, hard-to-reach local escalation. |
| Exploit ScenarioDerived | An attacker who has already achieved code execution as the unprivileged 'nobody' web user (e.g., via a separate web-application flaw) plants a malicious update package in the world/nobody-writable /usr/local/lsws/autoupdate/ directory. When an administrator next triggers the auto-update, lsup.sh running as root extracts and executes the attacker's install.sh without verifying it, yielding root. No public exploit code is identified at time of analysis, and success requires winning a TOCTOU race against the root update process. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 03, 2026
Local privilege escalation in OpenLiteSpeed before 1.9.3 lets an attacker who already controls the low-privileged 'nobody' web-server process escalate to root by exploiting a time-of-check/time-of-use race in the admin/misc/lsup.sh auto-update script, which fetches, extracts and executes update packages as root from the nobody-writable /usr/local/lsws/autoupdate/ directory with no integrity verification. Realistic exploitation requires three preconditions together - existing code execution as 'nobody', an administrator-triggered update, and winning the race to replace the package before root runs its install.sh - so the flaw is genuine but conditional rather than remotely weaponizable; no public exploit code has been identified at time of analysis (no CISA KEV entry). The vendor fix in 1.9.3 adds SHA-256 checksum verification of downloaded packages, a mode-0700 update directory that refuses symlinks, HTTPS-only downloads with redirects refused, and a proper lock file.
RemediationAI
Upgrade to OpenLiteSpeed 1.9.3 or later, which is the vendor-released fix for the lsup.sh auto-update flaw (see https://openlitespeed.org/release-log/version-1-9-x/); the underlying patch is commit 468523ce84388cea9ba6633c26517bc05b3e2bc1 at https://github.com/litespeedtech/openlitespeed/commit/468523ce84388cea9ba6633c26517bc05b3e2bc1, and because the vulnerable artifact is a shell script rather than a compiled binary, verify that both the binary build and the admin/misc/lsup.sh helper were actually replaced (the fixed helper reports LSUPVERSION v2.85 dated 09/26/2026). The advisory reference is https://www.vulncheck.com/advisories/openlitespeed-before-1.9.3-local-privilege-escalation-via-lsup-sh-auto-update. If upgrading must be delayed, the highest-value compensating control is to remove the attack primitive rather than rely on detection: change /usr/local/lsws/autoupdate (and the /usr/src fallback used when it is absent) to be root-owned and non-writable by the 'nobody' account, for example chmod 0755 or 0700 with root:root ownership, since the race is only winnable while that directory remains nobody-writable; the trade-off is that the previous behavior implied world-writable staging, so confirm no other automation depends on writing there. Next, disable or de-schedule the automatic OpenLiteSpeed update job so lsup.sh is only ever run manually by an administrator after verifying package integrity out of band; the trade-off is loss of automatic patch ingestion, so pair it with a documented manual update cadence. Also ensure lsup.sh is mode 0755 and root-owned rather than 777, and confirm the /tmp-based lock file (/tmp/olsupdatingflag) cannot be pre-created or symlinked by an unprivileged user, since that was an adjacent weakness in the same script. Note that these measures only reduce exposure; they do not repair the missing SHA-256 verification, so patching remains the only complete fix. Because the assessed attack path requires the attacker to already hold 'nobody' code execution, treating any compromise of that account as a full root-risk event is warranted until the upgrade is complete.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-367, time-of-check time-of-use race condition, implemented in a privileged shell script. OpenLiteSpeed's auto-update helper dist/admin/misc/lsup.sh (called with root privileges by the control panel / update mechanism) built its temporary working directory as ${LSWSHOME}/autoupdate, falling back to /usr/src, and that directory was writable by the unprivileged 'nobody' account under which the lshttpd web process runs. The script then downloaded the release tarball with permissive downloaders (curl -L -k, fetch, or wget without redirect or protocol restrictions), extracted it, and executed the bundled install.sh as root - with no signature or SHA-256 check against a trusted manifest. Because the package path was attacker-observable and attacker-writable, the 'nobody' process could win the TOCTOU window and substitute a malicious package between download and extraction. Additional weaknesses in the same script compounded the issue: a world-writable chmod 777 applied to lsup.sh, an umask that was never set (umask 022 added by the fix), a lock file in /tmp (LOCKFILE=/tmp/olsupdatingflag) subject to symlink and pre-creation attacks, temporary files written to /tmp (e.g. /tmp/tmprelease, /tmp/testpid) and package version strings taken from an unauthenticated remote file. The upstream commit 468523ce84388cea9ba6633c26517bc05b3e2bc1 rewrites this logic: it bumps the helper to v2.85, sets umask 022, creates and validates an update directory (rejecting symlinks and non-directories) with mode 0700, moves the lock into the install tree, enforces HTTPS with --proto =https and --max-redirect=0, validates the version string against a numeric/period whitelist, downloads both the package and its .sha256 sidecar, and calls verify_package_sha256() (sha256sum on Linux, sha256 -q on FreeBSD) before extraction. The vulnerability is confined to OpenLiteSpeed installations at or below /usr/local/lsws whose lsup.sh is pre-1.9.3; no CPE strings were supplied with this record, so the affected scope is taken from the vendor release log and the advisory's stated version boundary of before 1.9.3, on Linux and FreeBSD hosts where the auto-update path runs as root.
Know when Openlitespeed gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Local escalation needing a nobody foothold (PR:L) and a race against an operator-triggered root update (AC:H, UI:R), yielding full root compromise (C:H/I:H/A:H).
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
1DescriptionCVE.org
OpenLiteSpeed before 1.9.3 contains a local privilege escalation vulnerability in admin/misc/lsup.sh that runs unverified update packages from a nobody-writable directory as root. Attackers controlling the nobody web process can replace the package in /usr/local/lsws/autoupdate/ before extraction, so its install.sh runs as root on the next update.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
More in Openlitespeed
View allUntrusted Search Path vulnerability in LiteSpeed Technologies OpenLiteSpeed Web Server and LiteSpeed Web Server Containe
Improper Input Validation vulnerability in LiteSpeed Technologies OpenLiteSpeed Web Server and LiteSpeed Web Server dash
Privilege Escalation in LiteSpeed Technologies OpenLiteSpeed web server version 1.7.8 allows attackers to gain root term
The server in LiteSpeed OpenLiteSpeed before 1.5.0 RC6 allows local users to cause a denial of service (buffer overflow)
The server in LiteSpeed OpenLiteSpeed before 1.5.0 RC6 does not correctly handle requests for byte sequences, allowing a
Directory Traversal vulnerability in LiteSpeed Technologies OpenLiteSpeed Web Server and LiteSpeed Web Server dashboards
The WebAdmin Console in OpenLiteSpeed before v1.6.5 does not strictly check request URLs, as demonstrated by the "Server
OS command injection in OpenLiteSpeed and LSWS Enterprise web servers from LiteSpeed Technologies allows administrative
Use-after-free vulnerability in Open Litespeed before 1.3.10. Rated high severity (CVSS 7.5), this vulnerability is remo
LiteSpeed OpenLiteSpeed before 1.7.18 does not strictly validate HTTP request headers. Rated high severity (CVSS 7.5), t
OpenLiteSpeed before 1.8.1 mishandles chunked encoding. Rated medium severity (CVSS 5.3), this vulnerability is remotely
LiteSpeed QUIC (LSQUIC) Library before 4.3.1 has an lsquic_engine_packet_in memory leak. Rated medium severity (CVSS 5.3
EUVD-2026-91850
GHSA-4qqw-wg6j-834r
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB