Skip to main content

OpenLiteSpeed CVE-2026-104474

| EUVDEUVD-2026-91850 MEDIUM
Time-of-check Time-of-use (TOCTOU) Race Condition (CWE-367)
2026-10-03 disclosure@vulncheck.com GHSA-4qqw-wg6j-834r
5.4
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain code execution as nobody web user
  2. Delivery
    Plant malicious package in /usr/local/lsws/autoupdate/
  3. Exploit
    Wait for admin-triggered auto-update
  4. Execution
    Win TOCTOU race before root extraction
  5. Impact
    install.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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

OpenLiteSpeed 0 <1.9.3

Affected Packages

euvd openlitespeed fix: 1.9.3

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

Vendor (vulncheck) PRIMARY 5.4 MEDIUM
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
vuln.today AI 6.7 MEDIUM

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).

3.1 AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Local
Attack Complexity
High
Attack Requirements
Present
Privileges Required
Low
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Oct 03, 2026 - 01:01 EUVD

DescriptionCVE.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

EPSS Score
0.1%
Top 100% exploitable
Prevalence
Medium
popular open-source web server in hosting, but far below nginx/Apache ubiquity
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Total

Priority Score

27
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +27
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

CVE-2022-0074 HIGH POC
8.8 Oct 27

Untrusted Search Path vulnerability in LiteSpeed Technologies OpenLiteSpeed Web Server and LiteSpeed Web Server Containe

CVE-2022-0073 HIGH POC
8.8 Oct 27

Improper Input Validation vulnerability in LiteSpeed Technologies OpenLiteSpeed Web Server and LiteSpeed Web Server dash

CVE-2021-26758 HIGH POC
8.8 Apr 07

Privilege Escalation in LiteSpeed Technologies OpenLiteSpeed web server version 1.7.8 allows attackers to gain root term

CVE-2018-19792 MEDIUM POC
6.7 Dec 03

The server in LiteSpeed OpenLiteSpeed before 1.5.0 RC6 allows local users to cause a denial of service (buffer overflow)

CVE-2018-19791 MEDIUM POC
6.5 Dec 03

The server in LiteSpeed OpenLiteSpeed before 1.5.0 RC6 does not correctly handle requests for byte sequences, allowing a

CVE-2022-0072 MEDIUM POC
5.8 Oct 27

Directory Traversal vulnerability in LiteSpeed Technologies OpenLiteSpeed Web Server and LiteSpeed Web Server dashboards

CVE-2020-5519 CRITICAL
9.8 Jan 06

The WebAdmin Console in OpenLiteSpeed before v1.6.5 does not strictly check request URLs, as demonstrated by the "Server

CVE-2026-31386 HIGH
8.6 Mar 16

OS command injection in OpenLiteSpeed and LSWS Enterprise web servers from LiteSpeed Technologies allows administrative

CVE-2015-3890 HIGH
7.5 Sep 20

Use-after-free vulnerability in Open Litespeed before 1.3.10. Rated high severity (CVSS 7.5), this vulnerability is remo

CVE-2023-40518 HIGH
7.5 Aug 14

LiteSpeed OpenLiteSpeed before 1.7.18 does not strictly validate HTTP request headers. Rated high severity (CVSS 7.5), t

CVE-2024-31617 MEDIUM
5.3 May 22

OpenLiteSpeed before 1.8.1 mishandles chunked encoding. Rated medium severity (CVSS 5.3), this vulnerability is remotely

CVE-2025-54939 MEDIUM POC
5.3 Aug 01

LiteSpeed QUIC (LSQUIC) Library before 4.3.1 has an lsquic_engine_packet_in memory leak. Rated medium severity (CVSS 5.3

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy