CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-30857

CVE-2026-30857: Unauthorized Cross-Tenant Knowledge Base Cloning in WeKnora

Alon Barad
Alon Barad
Software Engineer

Mar 9, 2026·7 min read·24 visits

Executive Summary (TL;DR)

An IDOR/BOLA vulnerability in WeKnora < 0.3.0 allows authenticated attackers to clone and exfiltrate other tenants' knowledge bases by providing a known or guessed UUID to the copy endpoint.

WeKnora versions prior to 0.3.0 suffer from a Broken Object Level Authorization (BOLA) vulnerability in the knowledge base duplication endpoint. The vulnerability allows authenticated users to exfiltrate arbitrary knowledge bases across tenant boundaries by exploiting an insecure direct object reference during asynchronous cloning tasks.

Vulnerability Overview

WeKnora is an LLM-powered framework designed for deep document understanding and semantic retrieval. Within its architecture, the application relies on strict tenant isolation to partition knowledge bases, documents, and frequently asked questions across different organizational users. A structural flaw in the authorization model affects versions prior to 0.3.0, specifically within the asynchronous knowledge base duplication functionality.

This vulnerability is classified as a Broken Object Level Authorization (BOLA) or Insecure Direct Object Reference (IDOR) weakness under CWE-639. The application exposes an API endpoint that accepts a target knowledge base identifier but fails to validate whether the authenticated requester possesses explicit access rights to that object. Consequently, the system processes the request solely based on the presence of a valid UUID.

Exploitation allows an authenticated user to initiate a background task that systematically clones a knowledge base belonging to another tenant. The cloned data is entirely transferred into the attacker's administrative domain, exposing sensitive organizational information. The attack requires no specialized privileges beyond standard application access within any tenant workspace.

The primary impact is a full loss of confidentiality for the targeted knowledge base. Because the operation is a non-destructive copy, the integrity and availability of the original data remain entirely unaffected, rendering the attack silent from the perspective of the victim. System administrators must rely on secondary audit logs to detect unauthorized cloning operations.

Root Cause Analysis

The root cause of the vulnerability resides in the data access pattern utilized by the asynchronous task worker. When a user sends a request to the POST /api/v1/knowledge-bases/copy endpoint, the API handler enqueues a ProcessKBClone task. This task operates independently of the initial HTTP request context, receiving only the source and target identifiers as parameters.

The task worker subsequently invokes the CopyKnowledgeBase service method, which must retrieve the complete configuration and metadata of the source knowledge base. To achieve this, the service calls the GetKnowledgeBaseByID method within the application's repository layer. This repository function is responsible for executing the underlying database query via the GORM library.

The critical failure occurs within this database query, which applies a filter strictly on the primary key id without incorporating the tenant_id associated with the execution context. In multi-tenant systems, isolating data access requires appending a tenant constraint to every read and write operation. The absence of this constraint allows the application to retrieve records globally across the entire database.

By relying entirely on the statistical unguessability of UUIDs as a substitute for explicit access control, the system violates fundamental secure design principles. If an attacker discovers, predicts, or leaks a valid UUID belonging to another tenant, the application provides no secondary defense mechanism to prevent unauthorized data retrieval.

Code Analysis

Analyzing the source code reveals the precise nature of the authorization failure at the database level. In WeKnora versions up to 0.2.14, the repository layer implements retrieval operations assuming that the calling service has already performed necessary authorization checks. However, the service layer delegates this responsibility downward, resulting in a gap where no checks occur.

The vulnerable implementation of GetKnowledgeBaseByID queries the database using a simple Where("id = ?", id) clause. This structure instructs the Object-Relational Mapper (ORM) to return the first matching record regardless of the logical boundaries established by the application's multi-tenant architecture.

// internal/application/repository/knowledgebase.go
// Vulnerable Implementation
func (r *knowledgeBaseRepository) GetKnowledgeBaseByID(ctx context.Context, id string) (*types.KnowledgeBase, error) {
	var kb types.KnowledgeBase
	// Only filters by ID, ignoring the tenant context
	if err := r.db.WithContext(ctx).Where("id = ?", id).First(&kb).Error; err != nil {
		if errors.Is(err, gorm.ErrRecordNotFound) {
			return nil, ErrKnowledgeBaseNotFound
		}
		return nil, err
	}
	return &kb, nil
}

The patch introduced in version 0.3.0 correctly enforces tenant isolation directly within the SQL query construction. The remediated code extracts the tenant_id from the provided context and appends it to the Where clause. This structural change guarantees that the database engine itself rejects access attempts where the record's ownership does not match the requester's context.

// internal/application/repository/knowledgebase.go
// Patched Implementation
func (r *knowledgeBaseRepository) GetKnowledgeBaseByID(ctx context.Context, id string) (*types.KnowledgeBase, error) {
	var kb types.KnowledgeBase
	// Extract tenantID from context
	tenantID := ctx.Value(types.TenantIDContextKey).(uint64)
	
	// Enforce tenant scoping in the query
	if err := r.db.WithContext(ctx).Where("id = ? AND tenant_id = ?", id, tenantID).First(&kb).Error; err != nil {
		if errors.Is(err, gorm.ErrRecordNotFound) {
			return nil, ErrKnowledgeBaseNotFound
		}
		return nil, err
	}
	return &kb, nil
}

Exploitation Methodology

Exploiting CVE-2026-30857 requires the attacker to fulfill two specific preconditions. First, the attacker must possess a valid, authenticated session within any tenant workspace on the vulnerable WeKnora instance. Second, the attacker must acquire the exact UUID of the target knowledge base they intend to clone, which represents the primary barrier to exploitation.

The attack sequence begins with the generation of an HTTP POST request directed at the knowledge base duplication endpoint. The attacker structures the JSON payload to include the victim's UUID in the source_id field. Because the endpoint does not mandate a specific target_id, the system will automatically allocate a new identifier within the attacker's environment.

curl -X POST http://<weknora-host>/api/v1/knowledge-bases/copy \
  -H "Authorization: Bearer <ATTACKER_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"source_id":"<VICTIM_KB_UUID>","target_id":""}'

Upon receiving the request, the server responds immediately with an HTTP 200 OK status, confirming that the duplication task has entered the asynchronous processing queue. This decoupling of the request and the execution means the exploit does not require maintaining an active connection while the data transfer occurs in the background.

Once the background worker completes the execution cycle, the application materializes a comprehensive duplicate of the victim's knowledge base within the attacker's administrative dashboard. The attacker gains unrestricted read access to all cloned documents, semantic vectors, and internal FAQ structures, completing the exfiltration process.

Impact Assessment & Remediation

The security impact of this vulnerability is strictly confined to data confidentiality, but the severity within that domain is high. An attacker successfully executing this technique extracts entire repositories of processed organizational intelligence. For enterprises utilizing WeKnora to parse proprietary documentation, financial records, or internal policies, this represents a complete compromise of sensitive informational assets.

The CVSS 3.1 base score of 5.3 accurately reflects the technical parameters of the flaw. The Attack Complexity is rated as High specifically because the vulnerability relies on the attacker acquiring a 128-bit UUID prior to exploitation. Since the application does not naturally expose external tenant UUIDs through normal operation, the attacker must rely on secondary information disclosure vectors, social engineering, or side-channel leakage to obtain the requisite identifier.

Remediation requires upgrading the WeKnora deployment to version 0.3.0 or later. The update introduces systemic tenant boundary enforcement at the database abstraction layer, permanently neutralizing the authorization bypass. Organizations running affected versions should apply the patch immediately to secure multi-tenant deployments against cross-tenant data access.

For environments where immediate patching is not feasible, administrators can detect active exploitation by implementing targeted log analysis. Security operations teams should correlate asynchronous task creation events, specifically searching for instances where the authenticated user initiating a knowledge base copy does not match the canonical owner of the source_id specified in the task parameters.

Technical Appendix

CVSS Score
5.3/ 10
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
EPSS Probability
0.03%
Top 92% most exploited

Affected Systems

WeKnora Knowledge Base Module (<= 0.2.14)

Affected Versions Detail

Product
Affected Versions
Fixed Version
WeKnora
Tencent
< 0.3.00.3.0
AttributeDetail
CWE IDCWE-639
Attack VectorNetwork (Authenticated)
CVSS v3.1 Score5.3
EPSS Score0.00028
Exploit StatusProof of Concept
CISA KEVNot Listed

MITRE ATT&CK Mapping

T1213.003Data from Information Repositories: Knowledge Bases
Collection
T1048Exfiltration Over Alternative Protocol
Exfiltration
CWE-639
Authorization Bypass Through User-Controlled Key

The system does not properly authorize a user's request to access a specific object via its identifier.

Vulnerability Timeline

Advisory published on GitHub
2026-03-06
CVE-2026-30857 published in NVD and CVE.org
2026-03-07
Issue officially reported as fixed in version 0.3.0
2026-03-07

References & Sources

  • [1]NVD Record
  • [2]CVE Record
  • [3]GitHub Security Advisory

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•1 day ago•GHSA-G72G-R7M4-9X4G
6.3

GHSA-G72G-R7M4-9X4G: Insufficient Session Expiration of OAuth Tokens in NocoDB

NocoDB is subject to an insufficient session expiration vulnerability where OAuth access and refresh tokens are not invalidated or revoked during security-sensitive actions such as password changes, forgot-password requests, or password resets. This allows an attacker possessing an active OAuth token to maintain unauthorized persistence.

Amit Schendel
Amit Schendel
8 views•6 min read
•1 day ago•GHSA-FGMC-2HQJ-86V4
6.9

GHSA-FGMC-2HQJ-86V4: Default Administrative Credentials in vantage6-server

A vulnerability in the vantage6 federated learning framework allows unauthenticated remote attackers to gain administrative control of the server via hardcoded default credentials (root/root) when deployed under default configurations in versions 4.2.3 and below.

Amit Schendel
Amit Schendel
8 views•5 min read
•1 day ago•GHSA-X9F6-9RVM-MMRG
6.9

GHSA-X9F6-9RVM-MMRG: Improper Access Control and Volume Mount Isolation Bypass in vantage6 Node

An improper access control vulnerability in the vantage6 node component allows concurrently running algorithm containers to read and modify sensitive input and output files of other tasks. The lack of strict workspace directory isolation exposes a significant attack surface in multi-tenant or federated environments where untrusted algorithms are executed.

Amit Schendel
Amit Schendel
3 views•4 min read
•1 day ago•CVE-2026-47760
8.7

CVE-2026-47760: Cross-Site Scripting (XSS) via SVG Namespace Sanitizer Bypass in TinyMCE

TinyMCE versions 6.8.0 through 7.0.1 contain a high-severity Cross-Site Scripting (XSS) vulnerability. The flaw exists in the custom HTML parser and sanitizer module, which incorrectly manages SVG namespace scopes when parsing nested elements. A low-privileged or unauthenticated attacker can submit a crafted HTML payload containing nested SVG structures to bypass sanitization filters, leading to arbitrary JavaScript execution in the context of the victim's browser session.

Alon Barad
Alon Barad
14 views•7 min read
•2 days ago•CVE-2026-47759
8.7

CVE-2026-47759: Stored Cross-Site Scripting (XSS) via Unsanitized data-mce-* Serialization Bypass in TinyMCE

CVE-2026-47759 is a critical stored Cross-Site Scripting (XSS) vulnerability affecting multiple active branches of the TinyMCE rich text editor. The flaw resides in the editor's handling of user-controlled, prefixed internal attributes, such as data-mce-href, data-mce-src, and data-mce-style. When processing raw HTML inputs, TinyMCE's internal validation schema neglects to inspect these custom prefixed attributes. During HTML serialization, the editor's engine extracts these unsanitized values and copies them back into standard executable attributes, overwriting any previously sanitized standard values and leading to execution of arbitrary code.

Amit Schendel
Amit Schendel
9 views•7 min read
•2 days ago•CVE-2026-47762
8.7

CVE-2026-47762: Stored Cross-Site Scripting (XSS) in TinyMCE Protect Pattern Restoration

A high-severity stored Cross-Site Scripting (XSS) vulnerability was identified in the TinyMCE rich text editor. The flaw exists in the handling of the 'protect' configuration option, where forged placeholder comments containing malicious payloads bypass the editor's sanitization routines and execute arbitrary JavaScript during serialization and content restoration.

Amit Schendel
Amit Schendel
7 views•8 min read