Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister or use any account
-
ExploitAuthenticate to HustOJ
-
ExecutionSend crafted threadadmin.php request
-
ImpactDelete, lock, or sticky target thread
Vulnerability Assessment
| Exploitation Conditions | Requires a valid authenticated session on the HustOJ instance (PR:L) - any registered user, with no authorship or administrator role needed, which is the entire defect. The attacker invokes the thread-management actions in threadadmin.php (delete/lock/sticky) against an arbitrary thread ID. No non-default configuration, user interaction, or special platform is required beyond having an account; the main limiting factor is how account registration is controlled - on instances with open self-registration this is effectively unauthenticated-adjacent, whereas instances that gate account creation raise the bar. Affected versions are HustOJ >=24.09.10 through <=26.08.19. |
| Impact | This is a genuine, moderately serious authorization flaw rather than an inflated high-CVSS score. The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L, 7.1) is internally consistent with the description and with the fix: PR:L reflects that any authenticated account is sufficient, AC:L reflects that no special timing or configuration is needed, and I:H reflects that an attacker can destroy or lock any thread, including administrators' announcements. The practical severity hinges on how accounts are provisioned - on public online-judge deployments self-registration is typically open, which effectively lowers the authentication barrier toward trivial. The source-code evidence (PR #1192) directly confirms the mechanism: the pre-patch check passed whenever a user_id OR administrator session existed, so any logged-in user reached the admin action; the patch adds an author/owner check against the topic table. No EPSS score and no KEV listing were supplied, so widespread or confirmed active exploitation cannot be asserted; the vuln.today decision label is 'this_week' (not act_now/emergency). A third-party repository (MX-Qulin/CVE-2026-106991) is referenced and appears to be a PoC, but the input does not confirm it as working exploit code. Net: a real, promptly-fixable priority for anyone running an affected HustOJ instance, but not an emergency on the supplied signals. |
| Exploit ScenarioDerived | An attacker registers an ordinary account on a HustOJ instance (or uses any existing low-privilege login) and issues a request to threadadmin.php targeting a thread ID - for example an administrator's pinned announcement - to delete, lock, or sticky it. Because the thread branch only checks that a session is logged in and never verifies authorship or admin rights, the action succeeds. A public PoC reference exists (MX-Qulin/CVE-2026-106991); it is not verified as working exploit code in the available data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Any registered user on HustOJ (versions 24.09.10 through 26.08.19) can delete, lock, or sticky any forum thread - including administrator announcements - because the thread-handling branch of threadadmin.php verifies only that a session exists, never thread authorship or administrative role. Successful abuse yields high integrity impact and partial availability impact on forum content (CVSS 7.1, I:H/A:L, C:N), requires no user interaction, and needs nothing more than a self-registered account on instances that allow open registration. There is no KEV listing and no confirmed working exploit code at time of analysis, though a public reference repository named for this CVE exists and is not verified as functional exploit code; an upstream fix is available in pull request #1192.
RemediationAI
Apply the upstream fix in pull request https://github.com/zhblue/hustoj/pull/1192 (or upgrade to a HustOJ release that contains it - no tagged patched version is independently confirmed in the available data, so verify the commit is present in the release you deploy before treating it as fixed). The patch replaces the login-only gate in trunk/web/threadadmin.php with a two-stage check that first requires a user_id session and then, for accounts lacking the administrator session flag, looks up author_id in the topic table for the supplied tid and returns 'Permission denied.' unless the session user is the thread author; it also adds the missing global declarations and switches errmsg to err_msg in trunk/web/discuss_func.inc.php. Until the commit is deployed, the practical exposure limiter noted in the assessment is account-registration control: closing self-registration or requiring administrative approval reduces the pool of users who can reach the vulnerable branch, at the cost of restricting legitimate contestant and student onboarding, and it does not help on instances where untrusted users already hold accounts.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
HustOJ is a PHP/MySQL online judge platform widely deployed for programming contests and coursework; its forum subsystem lives in trunk/web/discuss_func.inc.php and trunk/web/threadadmin.php. The vulnerable code path is a classic missing-authorization / direct object reference defect: the thread branch of threadadmin.php gates the delete, lock and sticky actions on session presence alone (isset($_SESSION[$OJ_NAME.'_'.'user_id'])) and never compares the supplied thread identifier against the topic's author or against the administrator session flag, so the object identifier is fully attacker-controlled and any logged-in account is treated as authorized. No CWE identifier is supplied in the available data, so the root-cause class is described from the referenced patch rather than from an assigned CWE. The fix in PR #1192 restructures the check into two stages - first requiring a user_id session, then, for non-administrators, querying SELECT author_id FROM topic WHERE tid=? and rejecting the request when the row is empty or the session user does not match the author. The same PR also adds a global declaration for $OJ_TEMPLATE, $OJ_NAME, $OJ_LANG, $OJ_ADMIN, $OJ_MEMCACHE, $OJ_CDN_URL, $DOMAIN, $domain, $path_fix, $OJ_BEIAN, $MSG_ERROR_INFO and $MSG_BACK in discuss_func.inc.php alongside the errmsg-to-err_msg call rename, which is supporting plumbing for the corrected authorization error path rather than a separate defect.
Know when PHP 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
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L
Any logged-in user can act (PR:L) remotely over HTTP (AV:N) with no special conditions (AC:L); arbitrary thread deletion is high integrity impact, thread locking yields low availability, and no data is disclosed (C:N).
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
DescriptionCVE.org
hustoj >=24.09.10 and <=26.08.19 is vulnerable to Incorrect Access Control. Any registered user can delete, lock, or sticky any forum thread (including admins' announcements) via threadadmin.php. The thread branch only verifies login, never authorship or admin rights.
Executive ViewAI
A high-severity authorization flaw in HustOJ's forum module allows any self-registered user to delete, lock, or sticky any discussion thread, including administrator announcements, across versions 24.09.10 through 26.08.19. This undermines the integrity of institutional communications and could disrupt academic or operational workflows on open-registration instances. Leadership should prioritize remediation because the vulnerability requires only a basic user account and no special privileges, exposing the platform to reputational and operational risk.
No vendor-released patch identified at time of analysis; interim mitigations include restricting access to threadadmin.php via server configuration (e.g., IP allowlisting), disabling open user registration, and monitoring forum logs for suspicious thread modifications.
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
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
EUVD-2026-115851
GHSA-w3wm-r8gq-mq7w
NVD
CVE.org
Exploit-DB