Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain low-privilege app account
-
DeliveryCraft file with image header + PHP payload
-
ExploitBypass getimagesize check in upload_save.php
-
ExecutionStore file in web-accessible path
-
PersistRequest file to execute webshell
-
ImpactCommand execution on server
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V5 - File Handling File type validation, storage isolation
MITRE ATT&CK
2 techniques across 2 tactics: Command and Control, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated account (CVSS PR:L) with access to the file-upload workflow handled by upload_save.php, and the attacker must defeat the getimagesize()-based content check by prepending a valid image header/magic bytes to a malicious file supplied in the uploaded_file/image argument. Realistic impact (code execution versus mere file storage) is LIMITED by whether the upload target directory is web-accessible and configured to execute PHP; if uploads are stored outside the web root or served non-executably, impact stays close to the vendor's low rating. Further limiting factors: valid credentials are needed (no unauthenticated path), and the product itself is a niche project with negligible deployment. |
| Impact | Multiple signals point to a LOW real-world priority. The vendor-supplied CVSS 4.0 score is only 2.1, with the vector CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N and notably LOW vulnerable-system impacts (VC:L/VI:L/VA:L) - VulDB rated the direct consequence of the upload conservatively rather than as full code execution. PR:L confirms authentication is required, which meaningfully limits the attacker population. The 'E:P' (Proof-of-Concept) exploit-maturity metric aligns with the input signal that publicly available exploit code exists (a GitHub issue), but there is NO CISA KEV listing and NO EPSS score provided, so there is no evidence of active or widespread exploitation - this is POC availability, not in-the-wild use. CONFLICT TO NOTE: the weakness class (CWE-434 unrestricted file upload) combined with a getimagesize()-based validation bypass in a PHP application typically enables webshell upload and remote code execution, which would justify HIGH impact - yet the vendor scored impacts only LOW. This discrepancy should be verified against the actual exploit; if the upload directory is web-accessible and executes PHP, real impact is materially higher than the 2.1 score implies. Offsetting all of this, the affected product is an obscure hobby/student project on a rolling release with no responding maintainer, so the practical attack surface across real environments is minimal. |
| Exploit ScenarioDerived | An attacker who holds a low-privilege account on an exposed KusalkaSilva Learning-Management-System instance crafts a malicious file (e.g., a PHP webshell) carrying a valid image header so it passes the getimagesize() check in upload_save.php, then submits it via the uploaded_file/image parameter. If the upload destination is web-reachable and executes PHP, requesting the uploaded file yields remote code execution. A public proof-of-concept exists (published via the project's GitHub issue tracker), lowering the skill barrier. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Authenticated file upload in KusalkaSilva LMS (rolling release commit ffeb873f) allows an attacker with a valid account to bypass the getimagesize() content check and upload arbitrary files via the uploaded_file/image argument to upload_save.php. Publicly available exploit code exists, and while the flaw is rated CVSS 2.1 by the vendor, successful exploitation could lead to remote code execution only if the upload directory is web-accessible and configured to execute PHP; otherwise impact is limited to storing malicious files. The project has not responded to the issue report, and no fixed version is available, but real-world risk is low given the niche deployment and required authentication.
RemediationAI
No vendor-released patch was identified at the time of analysis, and the project has not responded to the issue report; because it is a rolling release, no fixed version number is available. Until a fix is provided, restrict access to the file-upload functionality to trusted, authenticated users and implement server-side validation that re-encodes uploaded images (e.g., using GD or Imagick) to strip potentially malicious payloads, accepting the trade-off of additional processing overhead and possible image-quality changes. Configure the web server to disallow execution of PHP or other scripts in the upload directory-for Apache, add 'php_admin_flag engine off' or use an .htaccess rule; for nginx, use a location block with 'location ~* \.(php|phtml|php5)$ { deny all; }'-with the caveat that this may break legitimate features if uploaded files are meant to be executed. Store uploads outside the web root and serve them via a controlled download script, which prevents direct access but requires application changes. Monitor upload directories for anomalous files and consider replacing the project with a maintained LMS if the issue remains unaddressed. Consult the GitHub issue and VulDB references for any updates.
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
The vulnerability is a classic unrestricted file upload (CWE-434) in the PHP-based KusalkaSilva Learning-Management-System. The upload_save.php script uses getimagesize() to validate that an uploaded file is an image, but this check only inspects the file header for image magic bytes. An authenticated attacker can prepend a valid image header to a malicious payload (e.g., a PHP webshell) supplied via the uploaded_file/image parameter, causing getimagesize() to return a valid image type while the file still contains executable code. The CPE cpe:2.3:a:kusalkasilva:learning-management-system:*:*:*:*:*:*:*:* indicates all versions are potentially affected, but the project uses a rolling release model with no discrete version numbers; the vulnerable commit is up to ffeb873f8803f1e9664384ff75000c7da45466d2. Root cause is insufficient validation of file content and type, allowing attacker-controlled files to be stored on the server.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
Authenticated upload (PR:L) over the network with low complexity; unrestricted PHP file upload realistically yields code execution, so C/I/A:H - higher than the vendor's low impact rating.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
3DescriptionCVE.org
A flaw has been found in KusalkaSilva Learning-Management-System up to ffeb873f8803f1e9664384ff75000c7da45466d2. Affected is the function getimagesize of the file upload_save.php. Executing a manipulation of the argument uploaded_file/image can lead to unrestricted upload. The attack may be launched remotely. The exploit has been published and may be used. This product operates on a rolling release basis, ensuring continuous delivery. Consequently, there are no version details for either affected or updated releases. The project was informed of the problem early through an issue report but has not responded yet.
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
Malicious file upload attacks exploit insufficient validation when web applications accept user-provided files.
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-97780
GHSA-4869-84qq-jcp5
NVD
CVE.org
EPSS
VulDB
Exploit-DB