WeKnora has Unauthorized Cross‑Tenant Knowledge Base Cloning
Published Mar 7, 2026 · Updated Nov 3, 2026
Original summary
Normalized public record · Updated Nov 3, 2026
WeKnora has Unauthorized Cross‑Tenant Knowledge Base Cloning
Publisher and source text is retained separately from QFinch interpretation.
QFinch assessment
A cross-tenant authorization bypass in the knowledge base copy endpoint allows any authenticated user to clone (duplicate) another tenant’s knowledge base into their own tenant by knowing/guessing the source knowledge base ID. This enables bulk data exfiltration (document/FAQ content) across tenants, making the impact critical.
Potential impact
This is a Broken Access Control (BOLA/IDOR) vulnerability enabling cross-tenant data exfiltration: - Any authenticated user can trigger a clone of a victim tenant’s knowledge base into their own tenant. - Results in bulk disclosure/duplication of knowledge base contents (documents/FAQ entries/chunks), plus associated configuration.
Technical context
The POST /api/v1/knowledge-bases/copy endpoint enqueues an asynchronous KB clone task using the caller-supplied sourceid without verifying ownership (see internal/handler/knowledgebase.go). Then, the asynq task handler (ProcessKBClone) invokes the CopyKnowledgeBase service method to perform the clone operation (see internal/application/service/knowledge.go): After that, the CopyKnowledgeBase method calls the repository method to load the source knowledge base (see internal/application/service/knowledgebase.go): However, the repository method GetKnowledgeBaseByID loads knowledge bases by id only, allowing cross-tenant reads (see internal/application/repository/knowledgebase.go). The data access layer fails to enforce tenant isolation because GetKnowledgeBaseByID only filters by ID and ignores the tenantid present in the context. A secure implementation should enforce a tenant-scoped lookup (e.g., WHERE id = ? AND tenantid = ?) or use a tenant-aware repository API to prevent cross-tenant access. Service shallow-copies the KB configuration by calling GetKnowledgeBaseByID(ctx, srcKB) for the source KB, then creates a new KB under the attacker’s tenant while copying fields from the victim KB (internal/application/service/knowledgebase.go):
Evidence: public source recordsAffected products
| Affected package, product or range | Fix status |
|---|---|
| Consult the referenced vendor advisory for affected versions. | Consult source advisory |
Matching a version is only one part of assessing exposure. QFinch has not assessed your environment on this public page.
Remediation
Apply the vendor-supported fixed release or mitigation, then verify the affected component is no longer reachable.
- Confirm the affected product and reachable code path exist in your environment.
- Apply the vendor-supported patch or mitigation from the primary advisory.
- Rescan the exact deployed revision and retain verification evidence.
Evidence coverage
- SSVC priority
- LOW
- Confidence
- Not available
- Aliases
- None reported
Scores appear only when corresponding evidence exists. Missing data is never interpreted as zero risk.
Sources and record history
Record history
Published Mar 7, 2026 · Last refreshed Nov 3, 2026