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



GHSA-F58V-P6J9-24C2

GHSA-f58v-p6j9-24c2: Authenticated SQL Injection in YesWiki Bazar Module

Amit Schendel
Amit Schendel
Senior Security Researcher

Apr 20, 2026·5 min read·12 visits

Executive Summary (TL;DR)

YesWiki versions prior to 4.6.1 contain a high-severity SQL Injection vulnerability (CWE-89) in the `EntryManager` service. An authenticated attacker can append raw SQL to the `id_fiche` parameter, enabling data exfiltration and database modification.

An authenticated SQL Injection vulnerability exists in the Bazar module of YesWiki. The flaw allows authenticated attackers to execute arbitrary SQL commands via the `id_fiche` parameter, potentially resulting in full database compromise.

Vulnerability Overview

YesWiki is an open-source wiki software. The Bazar module extends the wiki with structured data entry capabilities. Within this module, the EntryManager service handles the creation and modification of these entries.

The vulnerability is categorized as CWE-89: Improper Neutralization of Special Elements used in an SQL Command. The application fails to sanitize user-supplied input before embedding it within a database query.

An attacker with basic authenticated access (requiring only acl:{\u0022+\u0022} permissions) can leverage this flaw. By targeting the application programming interface (API) endpoints responsible for entry management, the attacker achieves arbitrary SQL execution against the backend database.

Root Cause Analysis

The root cause resides in the handling of HTTP POST requests within the Bazar module's EntryManager service. Specifically, the processing of the id_fiche parameter bypasses standard input sanitization routines.

When an authenticated user submits a request to the /api/entries/{formId} endpoint, the application routes the payload to ApiController::createEntry(). This controller subsequently verifies the entry's existence using the provided id_fiche value.

If the entry is not found, the controller invokes the create() method, which subsequently calls formatDataBeforeSave(). During this formatting phase, the unsanitized id_fiche value is directly concatenated into a raw SQL string.

The resulting query is passed directly to the DbService::loadSingle() method. The backend database executes the concatenated string verbatim, enabling the attacker to alter the query logic.

Code Analysis

The specific failure occurs in tools/bazar/services/EntryManager.php at line 704. The $data['id_fiche'] variable is extracted from the incoming request payload and inserted into a SELECT statement.

$result = $this->dbService->loadSingle(
    'SELECT MIN(time) as firsttime FROM ' . $this->dbService->prefixTable('pages') .
    "WHERE tag='" . $data['id_fiche'] . "'"
);

The DbService class provides an escape() method designed to neutralize SQL metacharacters. However, the developer omitted this call when constructing the WHERE clause for the tag column.

The patched version introduces the required escape() call prior to query construction. This modification ensures that malicious input such as single quotes are properly escaped, neutralizing the injection vector.

// Patched implementation
$tag = $this->dbService->escape($data['id_fiche']);
$result = $this->dbService->loadSingle(
    'SELECT MIN(time) as firsttime FROM ' . $this->dbService->prefixTable('pages') .
    "WHERE tag='" . $tag . "'"
);

This fix completely addresses the vulnerability within this function path by ensuring that any injected SQL syntax is treated strictly as a string literal rather than executable code.

Exploitation Methodology

Exploitation requires the attacker to possess a valid session token corresponding to an account with basic write permissions. The attacker must construct a crafted POST request targeting the affected API endpoint.

A time-based blind SQL injection attack confirms the vulnerability by forcing the database to sleep. The attacker injects a SLEEP() command into the id_fiche parameter, observing the delayed response from the server.

curl -s -X POST 'http://<TARGET_HOST>/?api/entries/1' \
  -H 'Cookie: wikini_session=<VALID_SESSION_ID>' \
  -d "antispam=1&bf_titre=TestTitle&id_fiche=' OR SLEEP(3) OR '"

Alternatively, an error-based vector extracts data directly via verbose database error messages. By using the extractvalue function, the attacker forces the application to return the database version string within an XPath syntax error.

curl -s -X POST 'http://<TARGET_HOST>/?api/entries/1' \
  -H 'Cookie: wikini_session=<VALID_SESSION_ID>' \
  -d "antispam=1&bf_titre=TestTitle&id_fiche=' AND extractvalue(1,concat(0x7e,@@version))-- -"

Automated exploitation tools like sqlmap can readily process this injection point. By specifying the id_fiche parameter and supplying a valid session cookie, an attacker can extract the entire database schema and contents.

Impact Assessment

The vulnerability carries a CVSS 3.1 base score of 8.8, reflecting its high severity. The attack vector is strictly network-based, and exploitation requires low complexity.

The primary impact is the complete loss of database confidentiality. An attacker can systematically extract all records, including user credentials, administrative session tokens, and private wiki content.

Database integrity is equally compromised. The attacker can execute UPDATE or INSERT statements, modifying application data or elevating the privileges of their own account.

Availability is impacted if the attacker utilizes denial-of-service queries. Excessive SLEEP commands or computationally expensive joins can exhaust database connection pools, rendering the wiki inaccessible.

Remediation and Detection

The vulnerability is definitively resolved in YesWiki version 4.6.1. System administrators must update their installations to this version or newer to eliminate the attack vector.

If immediate patching is not feasible, administrators can implement Web Application Firewall (WAF) rules. These rules should inspect the POST body of requests to /api/entries/ and block payloads containing SQL meta-characters like --, ', or common SQL functions.

Security teams should audit web server logs for exploitation attempts. The presence of functions like SLEEP(), extractvalue(), or concat() within the id_fiche parameter serves as a strong indicator of compromise.

Official Patches

YesWikiOfficial YesWiki repository where version 4.6.1 is hosted.

Technical Appendix

CVSS Score
8.8/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Affected Systems

YesWiki (Bazar module) installations prior to version 4.6.1

Affected Versions Detail

Product
Affected Versions
Fixed Version
yeswiki/yeswiki
YesWiki
< 4.6.14.6.1
AttributeDetail
CWE IDCWE-89
Attack VectorNetwork
CVSS Score8.8
Privileges RequiredLow
Exploit StatusPoC Available
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
CWE-89
SQL Injection

Improper Neutralization of Special Elements used in an SQL Command

Known Exploits & Detection

GitHub Security AdvisoryAdvisory documenting the time-based blind and error-based SQL injection vectors.
PoC Evidence ImageImage confirming the SLEEP(3) payload execution.

Vulnerability Timeline

Advisory published via GitHub Security Advisory (GHSA-f58v-p6j9-24c2).
2026-04-18
Vulnerability data added to Google OSV database.
2026-04-18
Fixed version 4.6.1 released.
2026-04-18

References & Sources

  • [1]GitHub Security Advisory: GHSA-f58v-p6j9-24c2
  • [2]OSV Entry for GHSA-f58v-p6j9-24c2
  • [3]YesWiki Source Code Repository

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

•35 minutes ago•CVE-2026-48526
7.4

CVE-2026-48526: Algorithm Confusion Vulnerability in PyJWT

CVE-2026-48526 is an algorithm-confusion vulnerability in PyJWT prior to version 2.13.0. When an application decodes tokens using a raw JSON Web Key (JWK) string while simultaneously supporting mixed algorithm families (symmetric and asymmetric), PyJWT does not validate that the key matches its intended algorithm context. This allows an attacker to sign a forged token using the public JWK string as an HMAC symmetric secret, bypassing authentication controls.

Alon Barad
Alon Barad
2 views•7 min read
•about 2 hours ago•CVE-2026-23479
8.8

CVE-2026-23479: Use-After-Free Vulnerability in Redis Blocking-Client Command Re-Execution

CVE-2026-23479 is a critical Use-After-Free (UAF) vulnerability inside the blocking-client code path of the Redis in-memory data structure server. In affected versions from 7.2.0 until 8.6.3, the unblock client flow fails to handle an error return from processCommandAndResetClient when re-executing a previously blocked command. If a blocked client is evicted due to maxmemory limits or client eviction policies during this command processing flow, its client structure is freed. Because the caller ignores the error return and continues processing, it attempts to read and write properties on the freed client structure, leading to a Use-After-Free condition.

Alon Barad
Alon Barad
8 views•7 min read
•about 8 hours ago•CVE-2026-42211
8.1

CVE-2026-42211: Remote Code Execution via Insecure Deserialization in React Router Framework Mode

A critical vulnerability exists in React Router v7 when running in Framework Mode. The vulnerability arises from insecure deserialization of TYPE_ERROR objects in the internal turbo-stream library, which resolves constructors from the global scope. If an application contains an independent prototype pollution vulnerability, an attacker can trigger unauthenticated Remote Code Execution (RCE) on the server.

Alon Barad
Alon Barad
9 views•5 min read
•about 9 hours ago•CVE-2026-47265
6.6

CVE-2026-47265: Cross-Origin Cookie Leakage in AIOHTTP Client Redirects

AIOHTTP prior to version 3.14.0 fails to clear request-specific cookies when executing cross-origin automatic HTTP redirects. This vulnerability allows remote web servers to harvest sensitive credentials and session cookies originally scoped to an authorized target domain.

Amit Schendel
Amit Schendel
7 views•6 min read
•about 10 hours ago•CVE-2026-49144
7.1

CVE-2026-49144: Unauthenticated Arbitrary File Read via Path Traversal in BrowserStack Runner

An unauthenticated path traversal vulnerability in BrowserStack Runner versions up to and including 0.9.5 allows remote or adjacent network attackers to read arbitrary files from the host system. The flaw exists within the local HTTP test server's fallback and patch file handlers, which fail to sanitize path inputs before passing them to file resolution APIs.

Amit Schendel
Amit Schendel
7 views•7 min read
•about 10 hours ago•CVE-2026-49143
8.8

CVE-2026-49143: Unauthenticated Remote Code Execution in browserstack-runner

An unauthenticated remote code execution (RCE) vulnerability exists in the browserstack-runner npm package (versions up to and including 0.9.5). The flaw lies in the /_log HTTP endpoint handler, which evaluates user-supplied input within a non-secure Node.js VM context combined with dynamic eval() execution. Network-adjacent attackers can exploit this behavior to escape the sandbox and execute arbitrary system commands on the host machine.

Alon Barad
Alon Barad
10 views•6 min read