Skip to main content

AdminNeo CVE-2026-59978

| EUVDEUVD-2026-114329 HIGH
Improper Input Validation (CWE-20)
2026-10-30 GitHub_M GHSA-jm85-8cpp-9cjc
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Reach exposed AdminNeo endpoint over network
  2. Delivery
    POST version[] array to ?script=version
  3. Exploit
    Array serialized into shared adminneo.version cache
  4. Execution
    Next page load passes array to rawurlencode()
  5. Persist
    Uncaught TypeError returns HTTP 500
  6. Impact
    Persistent denial of service for 24 hours to all users

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
Exploitation Conditions

No authentication, credentials, or user interaction are required: any network client can POST version[]=... to the ?script=version endpoint of an AdminNeo instance (4.6.2 up to but not including 5.5.0) in its default configuration. Two concrete prerequisites limit exploitation: (1) the web server must be able to write the shared cache file adminneo.version in the temp directory (typically PHP's upload_tmp_dir) - making that file unwritable is the vendor's documented interim workaround; and (2) the crash-triggering read path in design.inc.php runs only when version verification is enabled (isVersionVerificationEnabled). Impact is limited to availability (HTTP 500 DoS) and is self-limiting to the cache's 24-hour lifetime, with immediate recovery by deleting the poisoned cache file.

Impact

Signals are internally consistent and point to a genuine but availability-only risk. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H = 7.5) matches the described mechanism exactly: a remote, unauthenticated attacker sends one low-complexity POST with no user interaction, and impact is confined to availability (A:H) with no confidentiality or integrity loss - appropriate for a persistent DoS. The vuln.today decision label is 'this_week' (not act_now/emergency), which aligns with a high-severity DoS that is trivial to trigger yet non-destructive and easily recovered (delete the poisoned cache file, or apply the interim workaround of making adminneo.version unwritable). No EPSS score and no CISA KEV entry are present in the input, so there is no evidence of active exploitation; this is therefore a prioritize-this-week issue rather than an emergency. The GHSA advisory supplies complete step-by-step curl reproduction commands (a public PoC reference), so triggering it is demonstrably easy, but the input does not flag that reference as verified working exploit code and it is not weaponized beyond DoS. Net: a real, easy-to-exploit availability flaw whose practical urgency is tempered by DoS-only impact, fast recovery, a documented workaround, and the likely niche deployment of AdminNeo.

Exploit ScenarioDerived

A remote, unauthenticated attacker sends a single HTTP POST to ?script=version with a version[] array parameter, which PHP stores as an array in the shared adminneo.version cache. On the next page load, AdminNeo passes that array to rawurlencode() via cookie(), raising an uncaught TypeError and returning HTTP 500 to every user for the cache's 24-hour lifetime. The GHSA advisory includes full curl reproduction steps, so the attack is trivial to reproduce (AV:N/AC:L, no auth, no user interaction).

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 PoC candidate (unverified) Patch available 0.6% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 30, 2026

AdminNeo's unauthenticated ?script=version endpoint accepts POST data with no origin, CSRF or parameter-type validation, so a remote client can submit version[]=... and have PHP turn the expected string into an array. From 4.6.2 up to but not including 5.5.0, that array is serialized into the shared adminneo.version cache and later fed to cookie() and rawurlencode(), which throws a TypeError and returns HTTP 500 to every user of the instance. No credentials or user interaction are required, but exploitation depends on the web server being able to write the cache file and on version verification being enabled; the outage self-clears after the cache's 24-hour lifetime or immediately when the poisoned file is deleted. No confirmed public exploit code or active exploitation is identified at time of analysis, though the advisory does publish step-by-step reproduction commands.

RemediationAI

Vendor-released patch: upgrade to AdminNeo 5.5.0, which removes the ?script=version endpoint and the cache-read path entirely (commit https://github.com/adminneo-org/adminneo/commit/b7ae929e6afb374f0a7aba3d73b7d441470ff907, release https://github.com/adminneo-org/adminneo/releases/tag/v5.5.0). If upgrading is not immediately possible, the vendor's documented workaround is to make the cache file adminneo.version in the temp directory (typically the value of upload_tmp_dir) unwritable by the web server; the trade-off is that version verification can no longer refresh its shared cache, so the version badge is not populated from the cached value. To recover an instance that is already poisoned, delete the adminneo.version file from the temp directory, which restores HTTP 200 immediately rather than waiting out the 24-hour cache lifetime, and inspect PHP logs for the rawurlencode() TypeError to confirm the cause.

Affected VersionsENISA

adminneo 4.6.2, < 5.5.0

Affected Packages

composer adminneo-org/adminneo fix: 5.5.0
euvd adminneo fix: 5.5.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in composer, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

AdminNeo is a PHP database management tool, and its version-check flow lets browser JavaScript fetch the latest release from the GitHub API and POST the version string back to ?script=version, where bootstrap.inc.php stores it with serialize(["version" => $_POST["version"]]) in get_temp_dir() . "/adminneo.version" as a 24-hour shared cache. The root cause is CWE-20 improper input validation: the handler checks only $_GET["script"] == "version" and never verifies request origin, that a CSRF token matches, or that version is a scalar. Supplying version[] makes PHP build an array, which is faithfully serialized and cached; on subsequent page loads design.inc.php unserializes the cache and passes the value to cookie() and rawurlencode(), declared string, producing Fatal error: Uncaught TypeError: rawurlencode(): Argument #1 ($string) must be of type string, array given and an HTTP 500 for all visitors. The same type-validation defect was previously reported in upstream Adminer (GHSA-q4f2-39gr-45jh); AdminNeo reworked the version-check flow but kept the flaw until the 5.5.0 commit b7ae929, which deletes the ?script=version handler, removes the cache-reading code from design.inc.php, and drops the AJAX POST from functions.js.

Know when Adminneo 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 (GitHub_M) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Remote unauthenticated single POST with no user interaction (AV:N/AC:L/PR:N/UI:N); impact is availability-only persistent DoS (A:H) with no confidentiality or integrity effect.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch available
Oct 30, 2026 - 20:03 EUVD
CVE Published
Oct 30, 2026 - 18:53 cve.org
HIGH 7.5

DescriptionCVE.org

AdminNeo is a full-featured database management tool written in PHP. From 4.6.2 until 5.5.0, the unauthenticated ?script=version endpoint accepts POST data without origin, CSRF or parameter-type validation. A version[] parameter becomes a PHP array that bootstrap.inc.php serializes into the shared adminneo.version cache. On later page loads, design.inc.php passes that cached value to cookie() and rawurlencode(), causing a TypeError rather than encoding a version string. A remote attacker can make the instance return HTTP 500 to all users for the cache's twenty-four-hour lifetime or until the poisoned cache is removed. Exploitation requires the web server to be able to write that shared cache; making it unwritable is an interim workaround. The issue retains the underlying type-validation defect reported previously in Adminer despite changes to AdminNeo's version-checking flow. This issue is fixed in version 5.5.0.

Technical POC Analysis

Class: improper input validation / type confusion (CWE-20).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Latest POC

1 PoC candidate from github (unverified)

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

CVE-2026-59978 is a high-severity vulnerability in AdminNeo (versions 4.6.2 to before 5.5.0) that allows an unauthenticated remote attacker to crash the application, causing a denial-of-service for all users until the cache self-clears after 24 hours. Leadership should care because this can disrupt business operations and user access, potentially impacting productivity and customer experience.

Business Impact: High
Compensating Controls

Disable version verification, restrict access to the ?script=version endpoint, implement input validation to reject array parameters, and regularly clear the cache file.

Threat Intelligence Overview

EPSS Score
0.6%
Top 49% exploitable
Prevalence
Low
niche Adminer fork; limited enterprise deployment footprint
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
4 sources
Confidence: Medium

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 HIGH
CISA KEV No
Public POC Yes
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

59
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.

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