Skip to content

Formwork improperly validates input of User role preventing site and panel availability

High severity GitHub Reviewed Published Feb 28, 2025 in getformwork/formwork • Updated Mar 1, 2025

Package

composer getformwork/formwork (Composer)

Affected versions

<= 2.0.0-beta.3

Patched versions

None

Description

Summary

Improper validation of select fields allows attackers to craft an input that crashes the system, resulting in a 500 status and making the entire site and administration panel unavailable.
This clearly impacts the Availability aspect of the CIA triad (confidentiality, integrity, and availability), although the attack still has certain limitations.

Details

The attack involves injecting any invalid user role value (e.g. ">") into the Role=User parameter in the /panel/users/{name}/profile page, which is the user profile update page.
Doing this will change the users data in a way that prevents users and then the entire site from loading. Even though the actual data change is minimal, the error is unrecoverable until a valid role parameter is restored by direct modification of the user account file.
Proper validation of select fields will prevent extraneous valid from being accepted and making the entire site and administration panel unavailable.

Patches

Impact

The condition for this attack is having high privileges or Admin access, which means it could be exploited by an Insider Threat. Alternatively, if an attacker gains access to a privileged user account, they can execute the attack as well.
Overall, the attack is relatively difficult to carry out, but if successful, the impact and damage would be significant.

PoC

2025-02-27_10-25

  1. Intercept the request and inject an input that will trigger an error.

2025-02-27_10-25_1

image

2.After that, it will be observed that the system is shut down or completely broken. Even changing the browser or resetting the server will not be able to restore it.

References

@giuscris giuscris published to getformwork/formwork Feb 28, 2025
Published to the GitHub Advisory Database Mar 1, 2025
Reviewed Mar 1, 2025
Last updated Mar 1, 2025

Severity

High

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
High
User interaction
None
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
High

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:H

EPSS score

CVE ID

No known CVE

GHSA ID

GHSA-c85w-x26q-ch87

Source code

Credits

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.