GHSA-jfwg-rxf3-p7r9: Authorizer CQL/N1QL Injection Vulnerability
HIGHGHSA-jfwg-rxf3-p7r9 is a HIGH (CVSS 7.3) cql/n1ql injection vulnerability (CWE-209: Generation of Error Message Containing Sensitive Information) affecting Authorizer libraries in the Go ecosystem. The issue involves cql/n1ql injection in cassandra and couchbase backends via fmt.sprintf string interpolation. Remediation is available by upgrading affected packages to version 0.0.0-20260327055742-73679faa53cd.
GHSA-jfwg-rxf3-p7r9 at a Glance
Security Impact
CVSS: 7.3
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L).
How to Fix GHSA-jfwg-rxf3-p7r9
To remediate this vulnerability, upgrade all affected Authorizer dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade github.com/authorizerdev/authorizer to 0.0.0-20260327055742-73679faa53cd
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for github.com/authorizerdev/authorizer
How to Check if You Are Affected
To determine whether your application is affected by GHSA-jfwg-rxf3-p7r9, inspect your project dependencies for Authorizer:
inspect dependencies for github.com/authorizerdev/authorizer
Analyze the terminal output to locate any version of Authorizer in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 0.0.0-20260327055742-73679faa53cd), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-209: Generation of Error Message Containing Sensitive Information, where the product generates an error message that includes sensitive information about its environment, users, or associated data. In Authorizer, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
GHSA-jfwg-rxf3-p7r9 Affected Authorizer Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
github.com/authorizerdev/authorizer
|
Go |
< 0.0.0-20260327055742-73679faa53cd
|
0.0.0-20260327055742-73679faa53cd
|
References
Frequently Asked Questions
What is GHSA-jfwg-rxf3-p7r9?
Which Authorizer versions are affected?
What version fixes GHSA-jfwg-rxf3-p7r9?
Is github.com/authorizerdev/authorizer affected?
What is the CVSS score of GHSA-jfwg-rxf3-p7r9?
What CWE is associated with GHSA-jfwg-rxf3-p7r9?
How can I check Go dependencies for GHSA-jfwg-rxf3-p7r9?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-jfwg-rxf3-p7r9",
"modified" : "2026-04-06T17:56:31Z",
"published" : "2026-04-06T17:56:31Z",
"aliases" : [ ],
"summary" : "Authorizer: CQL/N1QL Injection in Cassandra and Couchbase Backends via fmt.Sprintf String Interpolation",
"details" : "## Vulnerability Details\n\n**CWE:** CWE-943 - Improper Neutralization of Special Elements in Data Query Logic\n\nAll 66+ CQL queries in `internal/storage/db/cassandradb/` use `fmt.Sprintf` to interpolate user-controlled values directly into CQL query strings without parameterization.\n\nUnauthenticated endpoints (`signup`, `login`, `forgot_password`, `magic_link_login`) pass user input directly into CQL query strings.\n\n**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.\n\n## Affected Code Pattern\n\n```go\n// Before (VULNERABLE) - e.g. cassandradb/user.go\nquery := fmt.Sprintf(\"SELECT ... FROM %s WHERE email = '%s'\", table, email)\nerr := p.db.Query(query).Scan(...)\n```\n\n## Steps to Reproduce\n\n1. Deploy Authorizer <= 2.0.0 with Cassandra backend\n2. Send a signup request with a CQL injection payload in the email field:\n\n```bash\ncurl -X POST http://localhost:8080/graphql \\\n -H 'Content-Type: application/json' \\\n -d '{\"query\":\"mutation { signup(params: { email: \\\"test'\\\" }) { message } }\"}'\n```\n\n3. The single quote breaks out of the CQL string literal, causing a CQL parse error that leaks internal schema information\n4. Crafted payloads can manipulate query logic to bypass authentication or extract data\n\n## Affected Files (10 Cassandra files)\n\n| Package | File | Queries Fixed |\n|---------|------|--------------|\n| cassandradb | user.go | 7 |\n| cassandradb | otp.go | 4 |\n| cassandradb | session_token.go | 19 |\n| cassandradb | verification_requests.go | 4 |\n| cassandradb | authenticator.go | 3 |\n| cassandradb | email_template.go | 5 |\n| cassandradb | webhook.go | 5 |\n| cassandradb | webhook_log.go | 2 |\n| cassandradb | session.go | 1 |\n| cassandradb | env.go | 2 |\n\n## Impact\n\nAn 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.\n\n## Proposed Fix\n\nUse parameterized queries:\n\n```go\n// After (FIXED)\nquery := fmt.Sprintf(\"SELECT ... FROM %s WHERE email = ?\", table)\nerr := p.db.Query(query, email).Scan(...)\n```\n\nFixed in https://github.com/authorizerdev/authorizer/pull/500 (merged 2026-03-27).",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/authorizerdev/authorizer"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "0.0.0-20260327055742-73679faa53cd"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/authorizerdev/authorizer/security/advisories/GHSA-jfwg-rxf3-p7r9"
}, {
"type" : "WEB",
"url" : "https://github.com/authorizerdev/authorizer/pull/500"
}, {
"type" : "WEB",
"url" : "https://github.com/authorizerdev/authorizer/commit/73679faa53cd215c7524d651046e402c43809786"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/authorizerdev/authorizer"
}, {
"type" : "WEB",
"url" : "https://github.com/authorizerdev/authorizer/releases/tag/2.0.1"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-209", "CWE-943" ],
"severity" : "HIGH",
"github_reviewed" : true,
"github_reviewed_at" : "2026-04-06T17:56:31Z",
"nvd_published_at" : null
}
}