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.
// impactAn 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
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
- Whitelist allowed filter column names before interpolating into SQL.
- Upgrade to @fecommunity/reactpress >= 3.7.0.
Reported by lsr365400.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Attack vector
- Network
- Attack complexity
- Low
- Privileges required
- None
- User interaction
- None
- Scope
- Unchanged
- Confidentiality
- High
- Integrity
- None
- Availability
- None