/

CVE-2026-107081

Severity:

CRITICAL RISK

(9.8)

SQL Injection (CWE-89) in SLiMS Bulian AJAX Endpoints

CVE-2026-107081

Deferred

Vulnerability type

Category:

SQL Injection

CWE:

CWE-89

Impact:

Unauthorized Database Access

Severity:

CRITICAL RISK

(9.8)

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

A critical SQL injection vulnerability in SENAYAN Library Management System (SLiMS) Bulian 9.8.0 affects identifier-related POST parameters used by administrative AJAX endpoints. An authenticated staff user may exploit insufficiently constrained table and field inputs to extract arbitrary database contents when these endpoints are reachable and the supplied values influence SQL construction.

A critical SQL injection vulnerability in SENAYAN Library Management System (SLiMS) Bulian 9.8.0 affects identifier-related POST parameters used by administrative AJAX endpoints. An authenticated staff user may exploit insufficiently constrained table and field inputs to extract arbitrary database contents when these endpoints are reachable and the supplied values influence SQL construction.

Affected context

The vulnerability occurs in administrative AJAX functionality that processes the tableName and tableFields POST parameters. It is relevant where authenticated staff users can reach the affected lookup, identifier-checking, or vocabulary-control endpoints and the application incorporates these parameters into database queries without adequately restricting identifiers or using safe query construction.

The vulnerability occurs in administrative AJAX functionality that processes the tableName and tableFields POST parameters. It is relevant where authenticated staff users can reach the affected lookup, identifier-checking, or vocabulary-control endpoints and the application incorporates these parameters into database queries without adequately restricting identifiers or using safe query construction.

Exploit preconditions

  • Attack surface: Administrative AJAX endpoints, including lookup, identifier-checking, and vocabulary-control handlers
  • Required access: Valid authentication as a staff user with access to the affected functionality
  • Trigger point: Processing of attacker-controlled tableName or tableFields POST parameters
  • Why exploitation is possible: Identifier values are insufficiently constrained before being incorporated into database query logic, allowing query structure to be influenced
  • Attack surface: Administrative AJAX endpoints, including lookup, identifier-checking, and vocabulary-control handlers
  • Required access: Valid authentication as a staff user with access to the affected functionality
  • Trigger point: Processing of attacker-controlled tableName or tableFields POST parameters
  • Why exploitation is possible: Identifier values are insufficiently constrained before being incorporated into database query logic, allowing query structure to be influenced

Why this happens

The underlying issue is identifier injection caused by treating request-controlled table or field names as trusted SQL components. Unlike ordinary data values, SQL identifiers cannot always be protected solely through standard value parameterization, so they require strict allowlisting and controlled query construction. Failing to enforce those boundaries maps to CWE-89: Improper Neutralization of Special Elements used in an SQL Command, allowing input to alter the intended database operation.

The underlying issue is identifier injection caused by treating request-controlled table or field names as trusted SQL components. Unlike ordinary data values, SQL identifiers cannot always be protected solely through standard value parameterization, so they require strict allowlisting and controlled query construction. Failing to enforce those boundaries maps to CWE-89: Improper Neutralization of Special Elements used in an SQL Command, allowing input to alter the intended database operation.

Potential impact

  • An authenticated staff user may extract arbitrary database contents
  • Sensitive library, user, catalog, or administrative records could be disclosed
  • Database integrity could be affected if broader query capabilities are exposed
  • Compromised data could support follow-on account abuse or targeted attacks
  • Availability may be affected if malicious queries impose excessive database workload
  • An authenticated staff user may extract arbitrary database contents
  • Sensitive library, user, catalog, or administrative records could be disclosed
  • Database integrity could be affected if broader query capabilities are exposed
  • Compromised data could support follow-on account abuse or targeted attacks
  • Availability may be affected if malicious queries impose excessive database workload

General mitigation guidance

Mitigation typically focuses on eliminating user control over SQL identifiers and reducing trust in administrative request parameters.

Common defensive patterns include:

  • Restricting table and field names to server-side allowlists mapped to fixed query definitions
  • Using parameterized queries for all data values and safe query-builder abstractions where appropriate
  • Separating identifier selection from raw request input rather than concatenating request values into SQL
  • Validating request parameters against strict type, format, and length constraints
  • Applying authorization checks for each operation and limiting database credentials to required privileges
  • Returning minimal query results and avoiding disclosure of database errors or schema details

Mitigation typically focuses on eliminating user control over SQL identifiers and reducing trust in administrative request parameters.

Common defensive patterns include:

  • Restricting table and field names to server-side allowlists mapped to fixed query definitions
  • Using parameterized queries for all data values and safe query-builder abstractions where appropriate
  • Separating identifier selection from raw request input rather than concatenating request values into SQL
  • Validating request parameters against strict type, format, and length constraints
  • Applying authorization checks for each operation and limiting database credentials to required privileges
  • Returning minimal query results and avoiding disclosure of database errors or schema details

How teams detect issues like this

Organizations commonly detect this class of issue through:

  • Static analysis rules for SQL string concatenation involving request parameters
  • Code review checks for dynamic table or column names derived from client input
  • Database activity monitoring for unusual metadata access, query errors, or high-volume reads
  • Web application logs identifying unexpected parameters sent to administrative AJAX handlers
  • Policy enforcement requiring approved query builders, parameter binding, and identifier allowlists

Automated security review tools may help identify untrusted data flows into database query construction, but findings should be validated against the application's authorization and query-design context.

Organizations commonly detect this class of issue through:

  • Static analysis rules for SQL string concatenation involving request parameters
  • Code review checks for dynamic table or column names derived from client input
  • Database activity monitoring for unusual metadata access, query errors, or high-volume reads
  • Web application logs identifying unexpected parameters sent to administrative AJAX handlers
  • Policy enforcement requiring approved query builders, parameter binding, and identifier allowlists

Automated security review tools may help identify untrusted data flows into database query construction, but findings should be validated against the application's authorization and query-design context.

Sources

SourceLink
github.comgithub.com/Primandito/CVE-2026-107081
github.comgithub.com/slims/slims9_bulian/issues/391

Frequently asked

questions

Exploitation generally requires an authenticated staff account that can access the affected administrative AJAX endpoints. The practical scope depends on endpoint authorization and deployment exposure.

Not necessarily. The endpoints must be reachable by the attacker, which could occur through an internet-facing deployment, an internal network, or another trusted access path.

Do not accept arbitrary table or field names from clients. Map approved logical identifiers to fixed server-side query definitions, use parameterized queries for values, and enforce authorization for each operation.

Combine strict input validation, identifier allowlisting, least-privilege database accounts, secure query-construction standards, code review, and monitoring of administrative database activity.

Exploitation generally requires an authenticated staff account that can access the affected administrative AJAX endpoints. The practical scope depends on endpoint authorization and deployment exposure.

Not necessarily. The endpoints must be reachable by the attacker, which could occur through an internet-facing deployment, an internal network, or another trusted access path.

Do not accept arbitrary table or field names from clients. Map approved logical identifiers to fixed server-side query definitions, use parameterized queries for values, and enforce authorization for each operation.

Combine strict input validation, identifier allowlisting, least-privilege database accounts, secure query-construction standards, code review, and monitoring of administrative database activity.

Find out what's already
exploitable in your codebase.