miraheze/tsportal · Security
TSPortal: Any user can forge self-deletion requests for any account
- GHSA ID
- GHSA-gfhq-7499-f3f2
- CVE ID
- CVE-2026-29788
- Severity
- high
- Published
- Updated
- CVSS
- 7.5 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
- CVSS v3
- 7.5 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
- CVSS v4
- 8.4 · CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:H/SC:N/SI:L/SA:H
Description
Summary
Conversion of empty strings to null allows disguising DPA reports as genuine self-deletion reports.
Details
Creating a DPA report about another user and leaving the evidence field empty causes that report to look like the reported user self-requested deletion of their data. Ingenuine report is not distinguishable from a genuine one.
This can be prevented by disabling convertEmptyStringsToNull in the middleware, or by validating evidence in Http/Controllers/DPAController::store() to not be empty.
PoC
New DPA report -> Select "...someone who I suspect is under the age of 13" for the "The above username is..." field -> Add nothing to the "Evidence" field -> Submit
Impact
Potential unauthorized deletion of any arbitrary user's data both in the current system (TSPortal) and subsequent systems if actioned.
CWEs
- CWE-283 · Unverified Ownership
- CWE-1287 · Improper Validation of Specified Type of Input
References
- https://github.com/miraheze/TSPortal/security/advisories/GHSA-gfhq-7499-f3f2 ↗
- https://nvd.nist.gov/vuln/detail/CVE-2026-29788 ↗
- https://api.laravel.com/docs/12.x/Illuminate/Foundation/Configuration/Middleware.html#method_convertEmptyStringsToNull ↗
- https://issue-tracker.miraheze.org/T15053 ↗
- https://github.com/advisories/GHSA-gfhq-7499-f3f2 ↗