GHSA-wmw4-mw6x-6vfm: SQL Injection

Published Sep 23, 2026
·
Updated

Summary

ReactPress API list endpoints build TypeORM QueryBuilder conditions using unsanitized HTTP query parameter names as SQL column identifiers (e.g. article.${key} ). TypeORM parameterizes values but not column names, allowing unauthenticated attackers to inject SQL through crafted query string keys.

Impact

An unauthenticated remote attacker can perform blind SQL injection against the application database, potentially exfiltrating sensitive data (users, settings, API keys, article content, etc.).

Affected endpoints (unauthenticated GET)

- GET /api/article - GET /api/comment - GET /api/file - GET /api/page - GET /api/Knowledge

Affected code

Vulnerable pattern in findAll() methods, including but not limited to:

- server/src/modules/article/article.service.ts - server/src/modules/comment/comment.service.ts - server/src/modules/file/file.service.ts - server/src/modules/page/page.service.ts - server/src/modules/knowledge/knowledge.service.ts

Remediation

- Whitelist allowed filter column names before interpolating into SQL. - Upgrade to @fecommunity/reactpress >= 3.7.0.

Credit

Reported by lsr365400.

Affected Software

1 affected componentFixes available
npm/@fecommunity/reactpress<=3.6.0
3.7.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/@fecommunity/reactpress to a version that resolves this vulnerability.

    Fixed in 3.7.0
  2. Upgrade

    Upgrade @fecommunity/reactpress to a version that resolves this vulnerability.

    Fixed in 3.7.0
  3. Compensating control

    Whitelist allowed filter column names before interpolating them into SQL in the ReactPress API list endpoints.

Event History

Sep 23, 2026
Advisory Published
via GitHub·09:51 PM
Data Sourced
via GitHub·09:51 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Who is exposed to this issue?

ReactPress deployments that expose the listed unauthenticated GET API endpoints are exposed. The affected endpoints include article, comment, file, page, and Knowledge listing APIs.

2

What does an attacker need to exploit it?

An attacker does not need authentication or user interaction. Exploitation requires sending crafted HTTP query-string parameter names to an affected list endpoint.

3

What should be done if an immediate upgrade is not possible?

Prevent untrusted requests from reaching the affected endpoints where possible, and modify the affected findAll() query construction to whitelist permitted filter column names before using them in SQL conditions. Parameterizing filter values alone does not address injection through parameter names.

4

How can teams identify vulnerable code in a deployment?

Review findAll() methods for HTTP query parameter keys interpolated as TypeORM QueryBuilder column identifiers, such as an article.${key} expression. The advisory identifies the article, comment, file, page, and knowledge service modules as affected locations.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203