{"items":[{"id":"NVI-00006216","kind":"vulnerability","title":"AdminNeo SQLite Database-List Drop Arbitrary File Deletion","revision":2,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-6vfx-w7q3-42gq","CVE-2026-96633"],"plain_summary":"GitHub lists this reviewed advisory for adminneo-org/adminneo. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-784d7ae5584a7ab52fc0925a46c7cb56"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null},{"summary":"The original advisory lists fixed boundaries 5.5.1 for adminneo-org/adminneo. Confirm the publisher’s latest guidance.","source_ids":["sr-abce58410a40179e34ba9faf531171d5"],"action_type":"vendor_patch","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-30T22:53:01.000Z","value":"8.1 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-784d7ae5584a7ab52fc0925a46c7cb56"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-784d7ae5584a7ab52fc0925a46c7cb56","url":"https://github.com/advisories/GHSA-6vfx-w7q3-42gq","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-6vfx-w7q3-42gq","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T21:55:49.621Z"},{"id":"sr-abce58410a40179e34ba9faf531171d5","url":"https://github.com/advisories/GHSA-6vfx-w7q3-42gq","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-6vfx-w7q3-42gq","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:41:59.940Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-784d7ae5584a7ab52fc0925a46c7cb56"],"technology":"adminneo-org/adminneo","known_exclusions":[],"conditions_summary":"## Summary\n\nAdminNeo 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()`.\n\nOriginally reported by @slpoiuewalspoid-dotcom in Adminer: https://github.com/vrana/adminer/security/advisories/GHSA-6pg3-chwq-wgqc\n\n## Impact\n\nAn 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.\n\n## Root Cause\n\nThe database-list page accepts selected database names from the POST body and calls `drop_databases()`:\n\n```php\nif ($_POST[\"db\"]) {\n\tqueries_redirect(substr(ME, 0, -1), lang('Databases have been dropped.'), drop_databases($_POST[\"db\"]));\n}\n```\n\nIn SQLite mode, `drop_databases()` attaches an in-memory database and unlinks each submitted path directly:\n\n```php\nfunction drop_databases($databases): bool\n{\n\tConnection::get()->close(); // to unlock file, doesn't work in P","public_affected_ranges":["< 5.5.1"]},{"certainty":"source_listed","source_ids":["sr-abce58410a40179e34ba9faf531171d5"],"technology":"adminneo-org/adminneo","known_exclusions":[],"conditions_summary":"## Summary\n\nAdminNeo 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()`.\n\nOriginally reported by @slpoiuewalspoid-dotcom in Adminer: https://github.com/vrana/adminer/security/advisories/GHSA-6pg3-chwq-wgqc\n\n## Impact\n\nAn 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.\n\n## Root Cause\n\nThe database-list page accepts selected database names from the POST body and calls `drop_databases()`:\n\n```php\nif ($_POST[\"db\"]) {\n\tqueries_redirect(substr(ME, 0, -1), lang('Databases have been dropped.'), drop_databases($_POST[\"db\"]));\n}\n```\n\nIn SQLite mode, `drop_databases()` attaches an in-memory database and unlinks each submitted path directly:\n\n```php\nfunction drop_databases($databases): bool\n{\n\tConnection::get()->close(); // to unlock file, doesn't work in P","public_affected_ranges":["ECOSYSTEM: introduced 0; fixed 5.5.1"]}],"null_published_at":"2026-10-31T22:13:27.127Z","source_updated_at":"2026-10-30T22:53:01.000Z","source_disclosed_at":"2026-10-30T22:52:58.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Source facts changed; compare the preserved prior revision.","null_first_observed_at":"2026-10-31T21:41:59.940Z"}],"next_cursor":null,"snapshot_revision":"42594"}