Description
YesWiki is a wiki system written in PHP. Prior to version 4.6.6, the recentchanges action (actions/recentchanges.php) accepts a period argument from two disjoint parameter spaces. A whitelist validates only the URL form against ['day','week','month']. The action-argument form takes the else branch with no validation, and the value flows into PageManager::getRecentlyChanged(), where it is interpolated into a WHERE time >= '...' ORDER BY time DESC clause without escaping or parameterization. UNION-based injection succeeds, the leaked rows render into the response page, so any visitor of the trigger page sees the exfiltrated data. The vulnerability provides arbitrary read of the YesWiki database to anyone who can save the trigger page. On a default install (default_write_acl='*'), this includes anonymous users, subject to the hashcash JS check on the page-edit form. Once the trigger page is saved, every subsequent view fires the injection as the SQLi is stored. Stored SQL injection is reachable through the page-edit flow, with arbitrary database read. This issue has been patched in version 4.6.6.
Published: 2026-09-04
Score: 6.5 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

YesWiki’s recentchanges action contains a stored SQL injection flaw. The period argument, supplied through the action‑argument form, bypasses the intended whitelist and is concatenated directly into a SQL WHERE clause. A user who can edit a page endows the database with the malicious payload, which is executed each time the page is viewed. This allows an attacker to read any table in the YesWiki database. The weakness stems from improper input validation (CWE‑1287) and a lack of query parameterization (CWE‑89).

Affected Systems

All YesWiki installations running a version older than 4.6.6, particularly default installations that grant anonymous users write access and enable the recentchanges action, are affected.

Risk and Exploitability

The CVSS score of 6.5 signals moderate severity. The EPSS score is not available, so the prevalence of exploitation is unknown, and the vulnerability is not listed in CISA’s KEV catalog. Attacking the flaw requires the ability to save a page, which on a default configuration is possible for anonymous users after passing a hashcash check. When the payload is stored, any subsequent visitor to the page causes the injection to run, enabling arbitrary database reads through a client‑side web interface. The attack vector is web‑based, and the impact is potential data disclosure.

Generated by OpenCVE AI on September 5, 2026 at 00:24 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade YesWiki to version 4.6.6 or later.
  • Restrict anonymous write permissions or disable page editing for unauthenticated users.
  • If upgrading is not immediately possible, enforce strict validation on the period parameter, allowing only the preset values, and replace the query with a parameterized statement.

Generated by OpenCVE AI on September 5, 2026 at 00:24 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-89v6-j5x6-cmj3 YesWiki: SQL injection via the `recentchanges` action `period` argument leads to arbitrary DB read
History

Fri, 04 Sep 2026 23:45:00 +0000

Type Values Removed Values Added
Description YesWiki is a wiki system written in PHP. Prior to version 4.6.6, the recentchanges action (actions/recentchanges.php) accepts a period argument from two disjoint parameter spaces. A whitelist validates only the URL form against ['day','week','month']. The action-argument form takes the else branch with no validation, and the value flows into PageManager::getRecentlyChanged(), where it is interpolated into a WHERE time >= '...' ORDER BY time DESC clause without escaping or parameterization. UNION-based injection succeeds, the leaked rows render into the response page, so any visitor of the trigger page sees the exfiltrated data. The vulnerability provides arbitrary read of the YesWiki database to anyone who can save the trigger page. On a default install (default_write_acl='*'), this includes anonymous users, subject to the hashcash JS check on the page-edit form. Once the trigger page is saved, every subsequent view fires the injection as the SQLi is stored. Stored SQL injection is reachable through the page-edit flow, with arbitrary database read. This issue has been patched in version 4.6.6.
Title YesWiki: SQL injection via the `recentchanges` action `period` argument leading to arbitrary DB read
Weaknesses CWE-1287
CWE-89
References
Metrics cvssV3_1

{'score': 6.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-04T23:39:53.622Z

Reserved: 2026-06-08T17:13:43.064Z

Link: CVE-2026-52763

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-05T00:17:19.257

Modified: 2026-09-05T00:17:19.257

Link: CVE-2026-52763

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-05T00:30:18Z

Weaknesses
  • CWE-1287

    Improper Validation of Specified Type of Input

  • CWE-89

    Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')