HIGHCVSS 8.1Vulnerability

CVE-2026-96633

## Summary AdminNeo allows an authenticated SQLite-mode user to delete arbitrary files writable by the PHP process through the database-list drop action. The SQLite driver validates file extensions when creating or renaming databases, but the database-list drop path passes submitted `db[]` values directly to `unlink()`. Originally reported by @slpoiuewalspoid-dotcom in Adminer: https://github.com/vrana/adminer/security/advisories/GHSA-6pg3-chwq-wgqc ## Impact An authenticated AdminNeo SQLite user with a valid CSRF token can submit an arbitrary relative file path in the database-list `db[]` field. If the PHP process can delete that path, AdminNeo unlinks it even when the file is not a SQLite database. ## Root Cause The database-list page accepts selected database names from the POST body and calls `drop_databases()`: ```php if ($_POST["db"]) { queries_redirect(substr(ME, 0, -1), lang('Databases have been dropped.'), drop_databases($_POST["db"])); } ``` In SQLite mode, `drop_databases()` attaches an in-memory database and unlinks each submitted path directly: ```php function drop_databases($databases): bool { Connection::get()->close(); // to unlock file, doesn't work in PDO on Windows foreach ($databases as $db) { if (!@unlink($db)) { Connection::get()->setError(lang('File exists.')); return false; } } return true; } ``` The same SQLite driver protects create and rename operations with `check_sqlite_name()`, which requires a `.db`, `.sdb`, or `.sqlite` extension: ```php function check_sqlite_name($name) { // avoid creating PHP files on unsecured servers $extensions = "db|sdb|sqlite"; if (!preg_match("~^[^\\0]*\\.($extensions)\$~", $name)) { Connection::get()->setError(lang('Please use one of the extensions %s.', str_replace("|", ", ", $extensions))); return false; } return true; } ``` The drop path does not apply an equivalent extension check or bind the submitted path to a known listed SQLite database. ## POC ### 1. Start a comp

Properties

Summary
AdminNeo SQLite Database-List Drop Arbitrary File Deletion
Severity
high
Cvss score
8.1
Retrieved at
2026-10-31T00:14:10+00:00
Ghsa published
2026-10-30T22:52:58Z
Source url
https://github.com/advisories/GHSA-6vfx-w7q3-42gq
Ghsa updated
2026-10-30T22:53:01Z
Ghsa id
GHSA-6vfx-w7q3-42gq
Last source
GitHub Advisory Database
Cve id
CVE-2026-96633
Cvss vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
First seen by Signal
2026-10-31T00:14:10+00:00
Is ghsa only
false

Related Entities (3)

AFFECTS (1)

HAS_WEAKNESS (1)

VULNERABLE_TO (1)

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-96633 (CVSS 8.1) — Ninja Signal Threat Intelligence | Ninja Signal