SQL Injection in ReactPress API via Unsanitized Query Parameter Names
An unauthenticated SQL injection vulnerability in ReactPress allows attackers to exfiltrate database contents via malicious HTTP query parameter keys in API requests.
CVE search metadata
CVE search record: CVE-2026-61685. Severity: high. CVSS: 7.5. KEV: no. Product: reactpress (<= 3.6.0). Brief: SQL Injection in ReactPress API via Unsanitized Query Parameter Names. Brief link: https://feed.craftedsignal.io/briefs/2026-09-reactpress-sqli/
ReactPress versions 3.6.0 and earlier contain a critical SQL injection vulnerability (CVE-2026-61685) due to improper handling of dynamic column names within its API. The application uses unsanitized HTTP query parameter names directly in TypeORM QueryBuilder conditions, specifically constructing identifiers like article.${key}. While TypeORM parameterizes values, it does not parameterize column identifiers, allowing an attacker to inject SQL syntax through crafted query keys. This vulnerability affects multiple endpoints including /api/article, /api/comment, /api/file, /api/page, and /api/Knowledge. Successful exploitation allows an unauthenticated remote attacker to perform blind SQL injection, leading to the unauthorized exfiltration of sensitive data such as user credentials, system settings, and proprietary content.
Attack Chain
- Attacker identifies a ReactPress instance exposed to the internet.
- Attacker inspects the API structure and identifies susceptible GET endpoints (/api/article, /api/comment, /api/file, /api/page, /api/Knowledge).
- Attacker crafts an HTTP GET request containing malicious SQL fragments within a query parameter key (e.g.,
?some_col=valueis replaced with?1=1;--=value). - The ReactPress server parses the query parameter key and dynamically constructs a TypeORM QueryBuilder statement using the malicious key as a column identifier.
- The resulting unsanitized query is sent to the underlying database driver.
- The database executes the injected SQL commands alongside legitimate queries.
- Attacker uses boolean-based or time-based blind SQL injection techniques to extract data character by character based on the server response or latency.
Impact
Successful exploitation results in unauthorized access to the application database. An attacker can exfiltrate sensitive information, including user records, system configurations, API keys, and article contents. The vulnerability is highly impactful due to its unauthenticated nature, allowing complete compromise of the database layer.
Recommendation
- Upgrade to
@fecommunity/reactpressversion 3.7.0 or higher immediately to patch CVE-2026-61685. - If upgrading is not immediately possible, implement a WAF or API gateway rule to inspect and reject incoming HTTP GET requests that contain suspicious SQL syntax or illegal characters within query parameter keys.
- Implement strict allow-listing for all query parameters accepted by the API endpoints listed in this brief.
Immediate actions
Upgrade @fecommunity/reactpress to >= 3.7.0
Threat Hunt
Search logs for unusual query parameter keys in GET /api/* requests
Data: webserver logs
Mitigations
Block or inspect requests targeting vulnerable endpoints with suspicious query strings
CVE-2026-61685
Detection coverage 1
Detects CVE-2026-61685 Exploitation - SQL Injection via Query Parameter Keys
highDetects exploitation attempts by identifying SQL-specific characters in URL query parameter keys targeting ReactPress API endpoints
Detection queries are available on the platform. Get full rules →