Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSelf-register wildcard username (___ or %%%)
-
DeliveryAuthenticate as low-privileged user
-
ExploitQuery public Bazar listing API
-
ExecutionACL LIKE predicate over-matches tokens
-
ImpactRead other users' restricted entries
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires YesWiki self-registration to be enabled, which is the default (noSignupButton=false); the attacker registers an account whose username is composed of LIKE metacharacters ('___' matches any ACL token of length >= 3; '%%%' reduces the predicate to LIKE "%", matching every ACL-protected row), which the UserController::PATTERN_USER_NAME validator accepts because it excludes neither _ nor %. Exploitation then requires calling the public Bazar entry-listing API (e.g. /?api/entries/bazarlist or /?api/forms/{formId}/entries/json) with filterOnReadACL in effect as a non-administrator. Limiting factors: exploitation yields confidentiality loss only of ACL-restricted Bazar/wiki content (no write or availability impact), depends on self-registration being enabled, and requires that Bazar entries with restrictive read ACLs actually exist to be exposed. Per-version note: at or below 4.6.6 the identity is not escaped at all, additionally permitting classic SQL breakout; the 5.0.0-alpha line uses parameterized LIKE ? ESCAPE and is not affected. Vendor interim mitigation is to disable the signup button and audit existing usernames for _ or % characters. |
| Impact | Signals point to a real but moderate-urgency confidentiality issue rather than a drop-everything emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H) yields 7.1 and reflects network-reachable, low-complexity exploitation requiring only a low-privileged account - and since self-registration is enabled by default (noSignupButton=false), that PR:L barrier is trivially met by any anonymous visitor. Impact is confidentiality-only (VC:H, VI:N, VA:N): no write or availability effect was demonstrated. Countervailing signals temper urgency: EPSS is 0.28% (20th percentile), there is no CISA KEV listing, and no active exploitation is reported - VulnCheck authored the advisory. A detailed public reproduction (register '___' or '%%%', hit the Bazar listing API) exists in the GHSA advisory, so exploitation is technically straightforward, but it is a PoC description, not packaged weaponized code. The vuln.today decision label is 'this_week', consistent with a serious access-control break that is not under active mass exploitation. One material conflict must be flagged: the input metadata and EUVD say this is fixed in 4.7.0, yet the referenced patch commit f3b0dd09 only modifies SearchManager numeric-filter handling (the fix for the separate CVE-2026-52770) and does not touch AclService where this flaw lives - verify the actual fix version with the vendor before treating 4.7.0 as remediated. |
| Exploit ScenarioDerived | An attacker self-registers on a default YesWiki install with a username made of SQL LIKE wildcards (e.g. '___' or '%%%'), which the username validator accepts. Logging in and calling the public Bazar entry-listing API, the attacker's name is interpolated unescaped into the ACL predicate 'list LIKE "%<name>%"', causing it to over-match ACL tokens and return pages and Bazar entries restricted to other users or groups (including admin-restricted content). A public proof-of-concept with step-by-step reproduction exists in the GHSA advisory, though it is not verified as packaged working exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
YesWiki releases up to and including 4.6.7 let a self-registered, low-privileged account read wiki pages and Bazar entries whose read ACLs are restricted to other users or groups. The flaw is a read-ACL bypass: AclService builds its access filter with a SQL LIKE pattern built from the account name, and the escaping applied (mysqli_real_escape_string) neutralises quotes but not the LIKE metacharacters _ and %, so a name such as '___' or '%%%' over-matches ACL tokens it was never granted. Exploitation is confirmed to require only self-registration (on by default) plus a call to the public Bazar listing API; the upstream advisory includes reproduction steps but no independently verified working exploit code is referenced, EPSS is low at 0.28% (20th percentile), and there is no CISA KEV entry. Impact is confidentiality-only - no write or availability effect was demonstrated, and the practical exposure depends on access-restricted Bazar entries actually existing on the target.
RemediationAI
Vendor-released patch: upgrade to YesWiki 4.7.0, the version in which yeswiki/yeswiki is fixed. There is no separate code-level workaround short of the vendor release, so the interim mitigation published upstream is to disable self-registration (turn the signup button off / set noSignupButton so new accounts cannot be created) and to audit existing account names for the characters _ and %, since a wildcard-only name such as '___' or '%%%' is the exploitation primitive; the trade-off is that closing registration blocks legitimate new users and the audit only removes existing exposure, leaving existing ACL-restricted content readable by any already-registered wildcard account until the code is fixed. Patching is the only complete fix and should also cover the more severe pre-4.6.7 condition, where an unescaped identity allows classic SQL breakout via a double quote in a username. Applying only commit f3b0dd093a7ace47dc29a515faeb02635baceae2 does not remediate this issue because it modifies Bazar numeric-filter handling in SearchManager.php and leaves the LIKE-based ACL construction intact. Confirm the fixed build by verifying the deployed version is 4.7.0 or later; the 5.0.0-alpha line already neutralises the over-match via parameterised LIKE ESCAPE clauses but is a pre-release and not a supported upgrade target. Advisory details and version confirmation are at https://github.com/YesWiki/yeswiki/security/advisories/GHSA-q5j6-79p7-mp94.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
YesWiki enforces read access to Bazar entries by storing a delimited list of identity tokens (usernames, group names, or '*') in a list ACL column, and requiring that a user only receive rows whose tokens include their own identity. AclService::updateRequestWithACL() (includes/services/AclService.php, LIKE construction around lines 414 and 420) implements that check as list LIKE "%<identity>%". The identity value is passed through DbService::escape(), a thin wrapper over mysqli_real_escape_string, which handles NUL, newline, carriage return, backslash, single and double quotes and \x1a - but leaves _ (single-character wildcard) and % (any-sequence wildcard) untouched. This is CWE-89, improper neutralisation of special elements in SQL, manifesting specifically as LIKE-pattern injection rather than classic quote breakout: the user's own username becomes part of the pattern. The username validator UserController::PATTERN_USER_NAME (^[^!#@<>\\\/][^<>\\\/]{2,}$) excludes neither character, and self-registration is on by default (noSignupButton=false), so the attacker fully controls the wildcard content of the pattern. The post-query guard Guard::checkAcls() only blanks individual field values inside entries that were returned; it does not discard over-matched rows, and the exact-match AclService::check() used by the text-search action is not invoked on the Bazar listing path. A secondary owner = _utf8'<name>' branch uses SQL equality, where wildcards have no meaning, so it grants nothing extra. Version nuance: at or below 4.6.6 the identity is not escaped at all, which additionally permits classic SQL breakout via a double quote in a username (strictly more severe, same root location), one release later escape() blocked breakout but not wildcard over-matching, and the 5.0.0-alpha1 through alpha3 pre-release line is not affected because it moved to parameterised LIKE ? ESCAPE '!' clauses whose bound values are pre-escaped for %, _ and the escape character.
Know when Yeswiki gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Network API reachable (AV:N) with a trivially self-registered low-privilege account (PR:L), no user interaction; confidentiality-only exposure of restricted content so C:H, I:N, A:N, scope unchanged.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
YesWiki before 4.7.0 contains a read-ACL bypass in AclService::updateRequestWithACL, which interpolates usernames into SQL LIKE patterns without escaping the _ and % wildcards. Self-registered attackers can use usernames such as ___ or %%% that over-match ACL tokens, reading pages and Bazar entries restricted to other users or groups via the public Bazar listing API.
Executive ViewAI
CVE-2026-116821 affects YesWiki, allowing any self-registered user to bypass read access controls and view restricted wiki pages and Bazar entries. This confidentiality breach could expose sensitive organizational information to unauthorized parties, undermining trust in the platform's access control mechanisms and potentially leading to data leakage or compliance issues.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
YesWiki is a wiki system written in PHP. Rated high severity (CVSS 8.6), this vulnerability is remotely exploitable, no
YesWiki is a wiki system written in PHP. Rated critical severity (CVSS 10.0), this vulnerability is remotely exploitable
Remote code execution in YesWiki prior to 4.6.6 allows unauthenticated attackers to inject arbitrary PHP via the Bazar C
YesWiki is a wiki system written in PHP. Rated critical severity (CVSS 9.1), this vulnerability is remotely exploitable,
YesWiki is a wiki system written in PHP. Rated high severity (CVSS 7.6), this vulnerability is remotely exploitable, no
Unauthenticated server-side request forgery in YesWiki before 4.7.0 lets any remote visitor make the wiki server issue H
YesWiki is a wiki system written in PHP. Rated medium severity (CVSS 5.8), this vulnerability is remotely exploitable, n
YesWiki is a wiki system written in PHP. Rated medium severity (CVSS 6.3), this vulnerability is remotely exploitable, n
Cross Site Scripting vulnerability in YesWiki v.4.54 allows a remote attacker to execute arbitrary code via a crafted pa
YesWiki version <= cercopitheque beta 1 contains a PHP Object Injection vulnerability in Unserialising user entered para
Authorization bypass in YesWiki before 4.6.7 lets unauthenticated remote attackers call admin-only API routes when the i
Unauthenticated attackers can delete or overwrite federated entries in YesWiki instances before 4.6.7 that have Activity
EUVD-2026-110528
GHSA-h5hg-vmvh-92x7
NVD
CVE.org
EPSS
Exploit-DB