Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Lifecycle Timeline
3DescriptionGitHub Advisory
PraisonAI is a multi-agent teams system. Prior to praisonai version 4.6.9 and praisonaiagents version 1.6.9, the fix for CVE-2026-40315 added input validation to SQLiteConversationStore only. Nine sibling backends - MySQL, PostgreSQL, async SQLite/MySQL/PostgreSQL, Turso, SingleStore, Supabase, SurrealDB - pass table_prefix straight into f-string SQL. Same root cause, same code pattern, same exploitation. 52 unvalidated injection points across the codebase. postgres.py additionally accepts an unvalidated schema parameter used directly in DDL. This issue has been patched in praisonai version 4.6.9 and praisonaiagents version 1.6.9.
AnalysisAI
SQL injection in PraisonAI's multi-backend conversation storage system allows authenticated attackers to execute arbitrary SQL commands. The incomplete fix for CVE-2026-40315 validated input only in SQLiteConversationStore, leaving nine other database backends (MySQL, PostgreSQL, Turso, SingleStore, Supabase, SurrealDB, and their async variants) vulnerable to f-string SQL injection via unvalidated table_prefix and schema parameters. 52 injection points exist across the codebase. Exploitable in multi-tenant deployments or API-driven configurations where table_prefix is derived from external input. Patches released in praisonai 4.6.9 and praisonaiagents 1.6.9 address all affected backends. EPSS and KEV data unavailable; no public POC confirmed at time of analysis.
Technical ContextAI
PraisonAI is a multi-agent AI teams system with conversation persistence backed by multiple database systems. The vulnerability stems from CWE-89 (SQL Injection) via unsafe f-string formatting in Python database connectors. The original CVE-2026-40315 fix implemented regex validation (^[a-zA-Z0-9_]*$) for table_prefix in sqlite.py:52 only. The remaining backends (mysql.py, postgres.py, async_sqlite.py, async_mysql.py, async_postgres.py, turso.py, singlestore.py, supabase.py, surrealdb.py) continued using table_prefix directly in f-string SQL DDL and DML statements without sanitization. PostgreSQL backend additionally accepts an unvalidated schema parameter at line 88. Affected packages are pip/praisonai (vulnerable <= 4.5.148) and pip/praisonaiagents (vulnerable <= 1.6.7), indicating the vulnerability exists in both the core PraisonAI framework and its standalone agents library.
RemediationAI
Upgrade immediately to praisonai version 4.6.9 or later and praisonaiagents version 1.6.9 or later via pip install --upgrade praisonai praisonaiagents. Vendor advisory at https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-rg3h-x3jw-7jm5 confirms patches implement regex validation (^[a-zA-Z0-9_]*$) across all affected backends. If immediate patching is blocked, implement these SPECIFIC compensating controls: (1) Hardcode table_prefix to 'praison_' in all backend initialization code-prevents external input entirely but breaks multi-tenant table isolation; (2) Deploy web application firewall rules blocking SQL metacharacters (semicolon, dash-dash, quotes) in any API parameters mapped to storage configuration-may cause false positives with legitimate underscores in prefixes; (3) Restrict database user privileges to DML-only (revoke CREATE/DROP/ALTER)-limits injection impact to data exfiltration/modification but prevents normal table creation workflows; (4) Enable database query logging and monitor for suspicious DDL statements containing unusual table/schema names-detective control only, no prevention. Each workaround trades functionality for security; patching remains the only complete fix.
More in PostgreSQL
View allPostgreSQL libpq functions PQescapeLiteral(), PQescapeIdentifier(), PQescapeString(), and PQescapeStringConn() improperl
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
Argument injection vulnerability in PostgreSQL 9.2.x before 9.2.4, 9.1.x before 9.1.9, and 9.0.x before 9.0.13 allows re
Unauthenticated arbitrary file write in Splunk Enterprise (below 10.2.4 and 10.0.7) and Splunk Cloud Platform (below 10.
PostgreSQL versions before 9.2.22, 9.3.18, 9.4.13, 9.5.8 and 9.6.4 are vulnerable to incorrect authentication flaw allow
The build_tablename function in pgsql.c in the PostgreSQL (aka pgsql) extension in PHP through 5.6.7 does not validate t
A vulnerability in the h2oai/h2o-3 REST API versions 3.46.0.4 allows unauthenticated remote attackers to execute arbitra
In PostgreSQL 9.3 through 11.2, the "COPY TO/FROM PROGRAM" function allows superusers and users in the 'pg_execute_serve
## Summary An unauthenticated SQL injection vulnerability exists in the Vendure Shop API. A user-controlled query strin
Parse Server is an open source http web server backend. Rated critical severity (CVSS 10.0), this vulnerability is remot
Hard-coded default PostgreSQL credentials shipped in the docker-compose.yaml of langgenius Dify through version 1.5.1 al
A vulnerability in the FinanceChatLlamaPack of the run-llama/llama_index repository, versions up to v0.12.3, allows for
Same weakness CWE-89 – SQL Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-28594
GHSA-rg3h-x3jw-7jm5