/

CVE-2026-59978

Severity:

HIGH RISK

(7.5)

Improper Input Validation (CWE-20) in AdminNeo Web App

CVE-2026-59978

Deferred

Vulnerability type

Category:

Improper Input Validation

CWE:

CWE-20

Impact:

Denial of Service

Severity:

HIGH RISK

(7.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

AdminNeo improperly accepts an array where its version-checking flow expects a scalar version string. An unauthenticated attacker may poison the shared version cache, causing later requests to fail with HTTP 500 errors for up to the cache lifetime or until the poisoned entry is removed.

AdminNeo improperly accepts an array where its version-checking flow expects a scalar version string. An unauthenticated attacker may poison the shared version cache, causing later requests to fail with HTTP 500 errors for up to the cache lifetime or until the poisoned entry is removed.

Affected context

The issue affects AdminNeo deployments within the impacted version range when:

  • The unauthenticated ?script=version endpoint is reachable
  • POST parameters are processed without origin, CSRF, or parameter-type validation
  • The web server can write the shared adminneo.version cache
  • Later requests consume the cached value as a version string

Deployments where the shared cache is not writable may not be affected through this specific poisoning path.

The issue affects AdminNeo deployments within the impacted version range when:

  • The unauthenticated ?script=version endpoint is reachable
  • POST parameters are processed without origin, CSRF, or parameter-type validation
  • The web server can write the shared adminneo.version cache
  • Later requests consume the cached value as a version string

Deployments where the shared cache is not writable may not be affected through this specific poisoning path.

Exploit preconditions

  • Attack surface: The unauthenticated version-checking HTTP endpoint
  • Required access: Network access to submit a crafted POST request; authentication is not required
  • Trigger point: Processing of the version[] parameter and subsequent use of the poisoned cache value
  • Why exploitation is possible: The application accepts an unexpected array type, serializes it into shared cache storage, and later passes the value to string-oriented functions without adequate type validation
  • Attack surface: The unauthenticated version-checking HTTP endpoint
  • Required access: Network access to submit a crafted POST request; authentication is not required
  • Trigger point: Processing of the version[] parameter and subsequent use of the poisoned cache value
  • Why exploitation is possible: The application accepts an unexpected array type, serializes it into shared cache storage, and later passes the value to string-oriented functions without adequate type validation

Why this happens

The underlying defect is insufficient validation of externally supplied parameter types. A request parameter expected to represent a scalar version string can instead be supplied as an array, and that unexpected structure is persisted in shared cache state.

When later code retrieves the cached value and treats it as a string, functions such as cookie handling and URL encoding may raise a runtime TypeError. This behavior maps to CWE-20: Improper Input Validation, because the application fails to enforce the expected type and acceptable structure before storage and use.

The underlying defect is insufficient validation of externally supplied parameter types. A request parameter expected to represent a scalar version string can instead be supplied as an array, and that unexpected structure is persisted in shared cache state.

When later code retrieves the cached value and treats it as a string, functions such as cookie handling and URL encoding may raise a runtime TypeError. This behavior maps to CWE-20: Improper Input Validation, because the application fails to enforce the expected type and acceptable structure before storage and use.

Potential impact

  • The application may return HTTP 500 errors to users
  • Availability of the AdminNeo instance may be disrupted
  • Shared cached state may remain corrupted for the cache lifetime
  • Administrative database-management functions may become temporarily inaccessible
  • Repeated requests could prolong service disruption if cache poisoning remains possible
  • The application may return HTTP 500 errors to users
  • Availability of the AdminNeo instance may be disrupted
  • Shared cached state may remain corrupted for the cache lifetime
  • Administrative database-management functions may become temporarily inaccessible
  • Repeated requests could prolong service disruption if cache poisoning remains possible

General mitigation guidance

Mitigation generally focuses on enforcing strict input contracts and preventing attacker-controlled values from entering shared application state.

Common defensive patterns include:

  • Require the version parameter to be a scalar string with an appropriate format
  • Reject arrays, nested structures, and unexpected parameter types before business logic runs
  • Apply CSRF and origin protections to state-changing or cache-affecting endpoints
  • Validate values before serialization and again when reading shared cache data
  • Treat cached data as untrusted and fail safely when its type or schema is invalid
  • Restrict write access to shared cache storage and use least-privilege service accounts
  • Remove or invalidate poisoned cache entries through controlled operational procedures
  • Prefer secure-by-default endpoint designs that do not allow unauthenticated mutation of shared state

Mitigation generally focuses on enforcing strict input contracts and preventing attacker-controlled values from entering shared application state.

Common defensive patterns include:

  • Require the version parameter to be a scalar string with an appropriate format
  • Reject arrays, nested structures, and unexpected parameter types before business logic runs
  • Apply CSRF and origin protections to state-changing or cache-affecting endpoints
  • Validate values before serialization and again when reading shared cache data
  • Treat cached data as untrusted and fail safely when its type or schema is invalid
  • Restrict write access to shared cache storage and use least-privilege service accounts
  • Remove or invalidate poisoned cache entries through controlled operational procedures
  • Prefer secure-by-default endpoint designs that do not allow unauthenticated mutation of shared state

How teams detect issues like this

Organizations can look for this issue through:

  • Static analysis rules identifying request parameters used without scalar-type or schema validation
  • Code review checks for array-capable parameters passed to string functions
  • Review of endpoints that allow unauthenticated writes to shared cache or application state
  • Runtime monitoring for repeated HTTP 500 responses following requests to the version-checking endpoint
  • Logging and alerting on unexpected parameter shapes, cache-write events, and type-related application exceptions
  • Policy enforcement requiring input validation, CSRF protection, and safe handling of shared cached data

Automated code-review and security-analysis tools may help identify missing type checks and unsafe state transitions.

Organizations can look for this issue through:

  • Static analysis rules identifying request parameters used without scalar-type or schema validation
  • Code review checks for array-capable parameters passed to string functions
  • Review of endpoints that allow unauthenticated writes to shared cache or application state
  • Runtime monitoring for repeated HTTP 500 responses following requests to the version-checking endpoint
  • Logging and alerting on unexpected parameter shapes, cache-write events, and type-related application exceptions
  • Policy enforcement requiring input validation, CSRF protection, and safe handling of shared cached data

Automated code-review and security-analysis tools may help identify missing type checks and unsafe state transitions.

Sources

SourceLink
github.comgithub.com/adminneo-org/adminneo/commit/b7ae929e6afb374f0a7aba3d73b7d441470ff907
github.comgithub.com/adminneo-org/adminneo/releases/tag/v5.5.0
github.comgithub.com/adminneo-org/adminneo/security/advisories/GHSA-jm85-8cpp-9cjc

Frequently asked

questions

Yes. The affected endpoint is unauthenticated and can be reached remotely when the AdminNeo instance is exposed and the web server can write the shared cache.

No AdminNeo authentication is required. The attacker needs network access to the version-checking endpoint and a deployment configuration that permits the cache to be modified.

Enforce scalar parameter typing and strict format validation before caching or using the value, while rejecting malformed input and invalid cached data safely.

Use schema-based request validation, protect cache-affecting endpoints against unauthorized requests, monitor type-related failures, and apply least privilege to shared application storage.

Yes. The affected endpoint is unauthenticated and can be reached remotely when the AdminNeo instance is exposed and the web server can write the shared cache.

No AdminNeo authentication is required. The attacker needs network access to the version-checking endpoint and a deployment configuration that permits the cache to be modified.

Enforce scalar parameter typing and strict format validation before caching or using the value, while rejecting malformed input and invalid cached data safely.

Use schema-based request validation, protect cache-affecting endpoints against unauthorized requests, monitor type-related failures, and apply least privilege to shared application storage.

Find out what's already
exploitable in your codebase.