Patch Forecast
Yellow warning
Plan into this sprint.

CVE-2026-96634 · GHSA-p96f-p2p2-2g3h

AdminNeo SQLite: multi_query Incorrect Check of Function Return Value RCE

Risk score
46/100
CVSS
6.9 v4.0
Published
30 Oct 2026

Open in the live forecast Today's forecast

What to know

What it is
This vulnerability is a patch bypass that exploits catastrophic backtracking in a regular expression used to filter ATTACH statements in AdminNeo's SQLite functionality. The original vulnerability (CVE-2021-43008) allowed authenticated users to create PHP files through SQLite ATTACH statements, achieving remote code e…
Affected
adminneo-org/adminneo (composer) < 5.5.1
Fix
Upgrade adminneo-org/adminneo to 5.5.1 or later.
Exploitation
No known exploitation

Story map

Story map: adminneo-org/adminneoTHE FLAWSTHE FIXCVE-2026-96634AdminNeo SQLite: multi_queryIncorrect Check of FunctionReturn Value RCECVSS 6.9CVE-2026-96631AdminNeo has Cookie AttributeInjection via UnsanitizedX-Forwarded-Prefix in…CVSS 8.2CVE-2026-96632AdminNeo Vulnerable to XSS viaRogue MySQL Server VersionString (CSP Nonce Bypass)CVSS 8.2CVE-2026-59978AdminNeo: version-cache arrayinjection causes persistentdenial of serviceCVSS 7.5Upgrade…5.5.0or later on your release lineWho is exposed{'products': ['AdminNeo'],'packages': [{'ecosystem':'composer', 'name':'adminneo-org/adminneo','vulnerable': '>= 4.6.0, <…AMBER · PATCH THIS WEEKadminneo-org/adminneoAdminNeo versions 4.6.0 to 5.5.0are vulnerable to cookieattribute injection via the`X-Forwarded-Prefix` HTTPheader. An attacker can injectarbitrary cookie attributes,allowing them to expand the…Where it standsPublic proof of conceptCONNECTS TOSame weaknessInjection (CWE-74)240 other warnings in 30 days →
Story map: the flaws, the fix, how it unfolded and what it connects to. Boxes link to the record or article.

At a glance

adminneo-org/adminneo: Amber, patch this week. AdminNeo versions 4.6.0 to 5.5.0 are vulnerable to cookie attribute injection via the `X-Forwarded-Prefix` HTTP header. An attacker can inject arbitrary cookie attributes, allowing them to expand the cookie scope to an attacker-controlled domain.

The flaws

  • CVE-2026-96634: AdminNeo SQLite: multi_query Incorrect Check of Function Return Value RCE (CVSS 6.9)
  • CVE-2026-96631: AdminNeo has Cookie Attribute Injection via Unsanitized X-Forwarded-Prefix in Set-Cookie Headers (CVSS 8.2)
  • CVE-2026-96632: AdminNeo Vulnerable to XSS via Rogue MySQL Server Version String (CSP Nonce Bypass) (CVSS 8.2)
  • CVE-2026-59978: AdminNeo: version-cache array injection causes persistent denial of service (CVSS 7.5)

The fix

Upgrade adminneo-org/adminneo: 5.5.0 or later on your release line

Who is exposed: {'products': ['AdminNeo'], 'packages': [{'ecosystem': 'composer', 'name': 'adminneo-org/adminneo', 'vulnerable': '>= 4.6.0, < 5.5.1'}], 'versions': ['4.6.0', '5.5.0', '5.5.1']}

Where it stands

  • Public proof of concept

Connects to

Why it is Yellow

  • CVSS 6.9 medium
  • On your watchlist: Composer

Affected packages

PackageEcosystemVulnerableFixed in
adminneo-org/adminneocomposer< 5.5.15.5.1

References

Original description

### Summary This vulnerability is a patch bypass that exploits catastrophic backtracking in a regular expression used to filter ATTACH statements in AdminNeo's SQLite functionality. The original vulnerability (CVE-2021-43008) allowed authenticated users to create PHP files through SQLite ATTACH statements, achieving remote code execution. The patch introduced a regex filter to block ATTACH queries, but this filter is vulnerable to catastrophic backtracking. Originally reported by @zdi-disclosures in Adminer: https://github.com/vrana/adminer/security/advisories/GHSA-3582-q6xq-5vf7 ### Analysis **[Source]** sql.inc.php :: SQL import handler:47 ```php $query = get_file("sql_file", true, ";"); ``` > User uploads a malicious SQL file through the import form. The file content is read into the `$query` variable without any initial sanitization. **[Transform]** sql.inc.php :: SQL import handler:87 ```php // Query parsing loop that extracts individual SQL statements ``` > The uploaded SQL content is processed in a loop that splits it into individual queries. Each query `$query` is extracted for processing. **[Context]** sql.inc.php :: SQL import handler:65 ```php $space = "(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$line_comment)[^\n]*\n?|--\r?\n)"; ``` > Definition of the `$space` regex pattern used in the ATTACH filter. The possessive quantifier `*+` combined with SQLite comment patterns (`--`) creates the catastrophic backtracking vulnerability when many comment lines are processed. **[Transform]** sql.inc.php :: SQL import handler:146 ```php if (DIALECT == "sqlite" && preg_match("~^$space*+ATTACH\\b~i", $q, $match)) { ``` > The ATTACH query filter check. When the regex encounters 350,000 SQLite comment lines (`--`), it triggers catastrophic backtracking. The possessive quantifier `*+` causes exponential backtracking, eventually hitting PHP's backtracking limit and causing `preg_match()` to return `false` instead of `0` or `1`, bypassing the security filter. **[Sink]** sql.inc.php :: SQL import handler:162 ```php Connection::get()->multiQuery($q) ``` > When the ATTACH filter is bypassed due to the `preg_match()` returning `false`, the malicious SQL query containing the ATTACH statement is executed. This allows the attacker to create a `.php` file with embedded PHP code, achieving remote code execution when the file is accessed via HTTP. The root cause is that PHP's `preg_match()` function returns `false` when the backtracking limit is exceeded, but the code only checks for truthy values (1 for match), treating `false` the same as `0` (no match). This allows the ATTACH statement to bypass the security filter. -- CREDIT --------------------------------------- This vulnerability was discovered by: 0daystolive (Sorcery Ltd) working with TrendAI Zero Day Initiative Zero Day Initiative zdi-disclosures@trendmicro.com The PGP key used for all ZDI vendor communications is available from: http://www.zerodayinitiative.com/documents/disclosures-pgp-key.asc -- INFORMATION ABOUT THE ZDI -------------------- Established by TippingPoint and acquired by Trend Micro, the Zero Day Initiative (ZDI) neither re-sells vulnerability details nor exploit code. Instead, upon notifying the affected product vendor, the ZDI provides its Trend Micro TippingPoint customers with zero day protection through its intrusion prevention technology. Explicit details regarding the specifics of the vulnerability are not exposed to any parties until an official vendor patch is publicly available. Please contact us for further details or refer to: http://www.zerodayinitiative.com -- DISCLOSURE POLICY ---------------------------- Our vulnerability disclosure policy is available online at: http://www.zerodayinitiative.com/advisories/disclosure_policy/

Last activity 30 Oct 2026. Patch Forecast updates every hour.