Skip to main content
Vulnerability Database/CVE-2025-53360

CVE-2025-53360: GLPI Database Inventory Auth Bypass Flaw

CVE-2025-53360 is an authentication bypass vulnerability in GLPI Database Inventory Plugin allowing any authenticated user to send unauthorized requests to Teclib inventory agents. This post covers technical details, affected versions, impact assessment, and mitigation strategies.

Published:

CVE-2025-53360 Overview

CVE-2025-53360 affects the pluginsGLPI Database Inventory Plugin, a component that coordinates Teclib' inventory agents to enumerate databases on managed workstations. In versions prior to 1.0.3, any authenticated user can send requests to inventory agents without holding the dedicated database_inventory right. The flaw is a broken access control issue tracked under CWE-284. Maintainers patched the issue in version 1.0.3 by enforcing right checks on the AJAX endpoint and massive-action handler.

Critical Impact

Any authenticated GLPI user can trigger inventory agent actions on managed computers, enabling unauthorized inventory operations and potential availability impact on agent workflows.

Affected Products

  • pluginsGLPI Database Inventory Plugin versions prior to 1.0.3
  • GLPI deployments using the Teclib' inventory agent integration
  • Environments where the plugin exposes ajax/agent.php to authenticated users

Discovery Timeline

  • 2025-11-18 - CVE-2025-53360 published to NVD
  • 2026-06-17 - Last updated in NVD database

Technical Details for CVE-2025-53360

Vulnerability Analysis

The Database Inventory Plugin exposes an AJAX endpoint (ajax/agent.php) that dispatches actions to Teclib' inventory agents. Before version 1.0.3, the endpoint only verified that the caller was authenticated through Session::checkLoginUser(). It did not enforce the database_inventory right or validate the caller's authorization against the target computer. As a result, any low-privileged authenticated user could POST an action and agent id and trigger inventory operations.

The server-side rendering of the action button used Session::checkRight incorrectly, calling a method that raises a fatal error path rather than performing a permission gate that returns cleanly. The underlying dispatch logic still executed because the AJAX handler itself lacked equivalent enforcement.

Root Cause

The root cause is missing authorization on a sensitive AJAX endpoint combined with an incorrect API call for right verification. The patch introduces Session::checkRight("inventory", READ) and later a dedicated database_inventory_run_inventory right in ajax/agent.php, and replaces Session::checkRight with Session::haveRight in inc/inventoryaction.class.php so the UI branch fails gracefully.

Attack Vector

Exploitation requires network access to the GLPI instance and any authenticated account. The attacker sends a crafted POST to ajax/agent.php with an action and target agent id. The vulnerability does not expose data confidentiality or integrity, but it allows unauthorized invocation of inventory workflows against managed computers.

php
// Patch 1 - inc/inventoryaction.class.php
// Replace fatal checkRight with non-fatal haveRight for UI branch
-        if (!Session::checkRight("database_inventory", PluginDatabaseinventoryProfile::RUN_DATABSE_INVENTORY)) {
+        if (!Session::haveRight("database_inventory", PluginDatabaseinventoryProfile::RUN_DATABSE_INVENTORY)) {
             return;
         }

// Patch 2 - ajax/agent.php
// Add server-side authorization on the AJAX endpoint
 Session::checkLoginUser();
+Session::checkRight("inventory", READ);
+$computer = new Computer();
+$computer->check($_POST['computers_id'], UPDATE);

// Patch 3 - ajax/agent.php (final hardening)
// Enforce dedicated database_inventory right
 Session::checkLoginUser();
 Session::checkRight("inventory", READ);
+Session::checkRight("database_inventory", PluginDatabaseinventoryProfile::RUN_DATABSE_INVENTORY);

Source: GitHub commits 0a376a0, 7dcad1e, and e9d4474

Detection Methods for CVE-2025-53360

Indicators of Compromise

  • POST requests to ajax/agent.php originating from user accounts that do not hold the database_inventory profile right.
  • Repeated partial_database_inventory massive actions triggered from unexpected user sessions.
  • Inventory agent activity on workstations that does not correlate to a scheduled inventory task or an administrator action.

Detection Strategies

  • Review GLPI web server access logs for requests to /plugins/databaseinventory/ajax/agent.php and correlate with the authenticated user and their assigned profile.
  • Audit the GLPI historical log for inventory actions attributed to non-privileged users.
  • Compare inventory agent execution timestamps against expected schedules to identify out-of-band triggers.

Monitoring Recommendations

  • Enable verbose logging on the GLPI application server and forward web access logs to a central log platform for correlation.
  • Alert on any HTTP POST to the plugin's AJAX endpoint from accounts lacking inventory administration privileges.
  • Monitor Teclib' agent-side logs for now? endpoint hits that lack a corresponding administrator-initiated task.

How to Mitigate CVE-2025-53360

Immediate Actions Required

  • Upgrade the pluginsGLPI Database Inventory Plugin to version 1.0.3 or later on all GLPI instances.
  • Review GLPI profiles and restrict the database_inventory right to administrative roles only.
  • Audit recent activity on ajax/agent.php to identify any unauthorized invocations prior to patching.

Patch Information

The fix is available in Database Inventory Plugin version 1.0.3. The maintainers applied three commits: 0a376a0 corrects the Session::checkRight misuse, 7dcad1e adds server-side authorization and target-computer validation to ajax/agent.php, and e9d4474 introduces a dedicated database_inventory_run_inventory right. See the GitHub Security Advisory GHSA-5j5j-xr62-jr58 for the full advisory.

Workarounds

  • Restrict network access to the GLPI web interface using an authenticating reverse proxy or IP allow-listing until the plugin is upgraded.
  • Temporarily disable the Database Inventory Plugin in the GLPI plugin manager if immediate patching is not feasible.
  • Reduce the number of accounts with any authenticated access to the GLPI instance to shrink the exploitable user population.
bash
# Verify installed plugin version and upgrade
cd /var/www/glpi/plugins/databaseinventory
git fetch --tags
git checkout 1.0.3

# Restart the web server to load patched files
systemctl restart apache2

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.