YesWiki: Unauthenticated SQL Injection
Date: 2026-05
Affected: composer/yeswiki/yeswiki
Attack vector: sql-injection
Category: vulnerability-disclosure
Severity: Critical
CVE: CVE-2026-46670
CWE: CWE-89
CVSS: 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)

### Summary An unauthenticated SQL injection in the Bazar form-import path (`FormManager::create()`) allows any unauthenticated visitor of a default YesWiki install to inject arbitrary SQL into an `INSERT` statement and read the full database, including `yeswiki_users.password` hashes. Present in 4.6.1 / 4.6.2 / current `doryphore-dev`; analyzed against upstream commit `1f485c049db030b94c047ec219e63534ac81142e`. ### Details Sink is at `FormManager::create()` (function at L232), unquoted concatenation of `bn_id_nature` into the `INSERT VALUES` list at https://github.com/YesWiki/yeswiki/blob/1f485c049db030b94c047ec219e63534ac81142e/tools/bazar/services/FormManager.php#L258 Reachability is unauthenticated. ### PoC 1. Clone the repo (test was done on 1f485c049db030b94c047ec219e63534ac81142e) 2. Bring up the service using docker: `cd docker && docker compose build && docker compose up` 3. Go to `https://localhost:8085` 4. Go through the installation 5. Run the POC: [yeswiki_sqli_poc.py](https://github.com/user-attachments/files/27578633/yeswiki_sqli_poc.py) <img width="672" height="54" alt="image" src="https://github.com/user-attachments/assets/fc9a9adf-7d09-442b-bcc1-8edf1bdcf0a1" /> ### Impact Sql injection. An attacker can dump the whole db, including usernames, emails, and hashed passwords. ### More details Sample http request (copied from burp): ``` POST /?BazaR&vue=formulaire HTTP/1.1 Accept-Encoding: gzip, deflate, br Content-Length: 353 Host: localhost:8085 U


Mitigations:

Architectural layers (MAESTRO):