GHSA-jfwg-rxf3-p7r9 json
Authorizer: CQL/N1QL Injection in Cassandra and Couchbase Backends via fmt.Sprintf String Interpolation
published 7mo ago modified 4mo ago also GO-2026-5467
- cvss
- 7.3
- version 3.1, GitHub
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
## Vulnerability Details
**CWE:** CWE-943 - Improper Neutralization of Special Elements in Data Query Logic
All 66+ CQL queries in `internal/storage/db/cassandradb/` use `fmt.Sprintf` to interpolate user-controlled values directly into CQL query strings without parameterization.
Unauthenticated endpoints (`signup`, `login`, `forgot_password`, `magic_link_login`) pass user input directly into CQL query strings.
**Note:** This advisory covers the Cassandra CQL injection only. The Couchbase N1QL injection is tracked in a separate advisory per CVE rule 4.2.11.
## Affected Code Pattern
```go // Before (VULNERABLE) - e.g. cassandradb/user.go query := fmt.Sprintf("SELECT ... FROM %s WHERE email = '%s'", table, email) err := p.db.Query(query).Scan(...) ```
## Steps to Reproduce
1. Deploy Authorizer <= 2.0.0 with Cassandra backend 2. Send a signup request with a CQL injection payload in the email field:
```bash curl -X POST http://localhost:8080/graphql \ -H 'Content-Type: application/json' \ -d '{"query":"mutation { signup(params: { email: \"test'\" }) { message } }"}' ```
3. The single quote breaks out of the CQL string literal, causing a CQL parse error that leaks internal schema information 4. Crafted payloads can manipulate query logic to bypass authentication or extract data
## Affected Files (10 Cassandra files)
| Package | File | Queries Fixed | |---------|------|--------------| | cassandradb | user.go | 7 | | cassandradb | otp.go | 4 | | cassandradb | session_token.go | 19 | | cassandradb | verification_requests.go | 4 | | cassandradb | authenticator.go | 3 | | cassandradb | email_template.go | 5 | | cassandradb | webhook.go | 5 | | cassandradb | webhook_log.go | 2 | | cassandradb | session.go | 1 | | cassandradb | env.go | 2 |
## Impact
An unauthenticated attacker can inject arbitrary CQL operators through the email, phone, or token parameters on public-facing endpoints (signup, login, forgot_password, magic_link_login). This enables authentication bypass and data exfiltration from the Cassandra keyspace.
## Proposed Fix
Use parameterized queries:
```go // After (FIXED) query := fmt.Sprintf("SELECT ... FROM %s WHERE email = ?", table) err := p.db.Query(query, email).Scan(...) ```
Fixed in https://github.com/authorizerdev/authorizer/pull/500 (merged 2026-03-27).
Patch / fix
- go github.com/authorizerdev/authorizer 0.0.0-20260327055742-73679faa53cd
Is GHSA-jfwg-rxf3-p7r9 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerCVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| GitHub | 3.1 | 7.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| go | github.com/authorizerdev/authorizer | <0.0.0-20260327055742-73679faa53cd |
0.0.0-20260327055742-73679faa53cd |
Classification
References
-
github.com
/authorizerdev/authorizer/pull/500
web, patch
-
github.com
/authorizerdev/authorizer/commit/73679faa53cd215c7524d651046e402c43809786
web, patch
-
github.com
/authorizerdev/authorizer/security/advisories/GHSA-jfwg-rxf3-p7r9
web, advisory
-
github.com
/authorizerdev/authorizer
package
-
github.com
/authorizerdev/authorizer/releases/tag/2.0.1
web
Sources
- GitHub Advisory GHSA-jfwg-rxf3-p7r9
- OSV GO-2026-5467
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.