MantisBT SOAP API has an authentication bypass vulnerability on MySQL
Description
Mantis Bug Tracker (MantisBT) is an open source issue tracker. Versions prior to 2.28.1 running on MySQL family databases are affected by an authentication bypass vulnerability in the SOAP API, as a result of an improper type checking on the password parameter. Other database backends are not affected, as they do not perform implicit type conversion from string to integer. Using a crafted SOAP envelope, an attacker knowing the victim's username is able to login to the SOAP API with their account without knowledge of the actual password, and execute any API function they have access to. Version 2.28.1 contains a patch. Disabling the SOAP API significantly reduces the risk, but still allows the attacker to retrieve user account information including email address and real name.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
MantisBT SOAP API authentication bypass via improper type checking on MySQL; attackers with a username can login without a password.
Root
Cause Versions of MantisBT prior to 2.28.1 running on MySQL family databases are vulnerable to an authentication bypass in the SOAP API. The issue stems from improper type checking on the password parameter in the mci_check_login() function [1]. MySQL performs implicit type conversion from string to integer, allowing crafted inputs to bypass authentication checks [4]. Other databases are unaffected as they do not perform such conversion.
Exploitation
An attacker who knows a victim's username can craft a malicious SOAP envelope to exploit the type conversion. By sending a specially crafted password value (e.g., a numeric string or empty string), the attacker can authenticate as the victim without knowing the actual password [1][4]. The attack requires access to the SOAP API endpoint; no other prerequisites are needed.
Impact
Successful exploitation allows the attacker to log in as any known user and execute any SOAP API function that the victim's account has access to. This includes the ability to retrieve sensitive user account information such as email addresses and real names [1][4]. The vulnerability can lead to unauthorized access to issue tracker data and functionality.
Mitigation
Version 2.28.1 contains a patch that adds proper type declarations to the mci_check_login() parameters, preventing the bypass [3]. As a workaround, disabling the SOAP API reduces the risk, but does not fully prevent the attacker from retrieving user account information via the SOAP API [4]. Users are strongly advised to upgrade to the patched version.
AI Insight generated on May 18, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
mantisbt/mantisbtPackagist | < 2.28.1 | 2.28.1 |
Affected products
2Patches
1b349e5c890eeAdd type definition to mci_check_login()'s params
1 file changed · +8 −6
api/soap/mc_api.php+8 −6 modified@@ -449,13 +449,13 @@ function mci_is_mantis_offline() { /** * Handle a soap API login. * - * @param string $p_username Login username. - * @param string $p_password Login password. + * @param string|null $p_username Login username. + * @param string|null $p_password Login password. * * @return int|false return user_id if successful, otherwise false. * @throws ClientException */ -function mci_check_login( $p_username, $p_password ) { +function mci_check_login( ?string $p_username, ?string $p_password ) { static $s_already_called = false; if( $s_already_called === true ) { @@ -468,11 +468,13 @@ function mci_check_login( $p_username, $p_password ) { return false; } + $p_username ??= ''; + # Must not pass in null password, otherwise, authentication will be by-passed # by auth_attempt_script_login(). - $t_password = ( $p_password === null ) ? '' : $p_password; + $p_password ??= ''; - if( api_token_validate( $p_username, $t_password ) ) { + if( api_token_validate( $p_username, $p_password ) ) { # Token is valid, then login the user without worrying about a password. if( auth_attempt_script_login( $p_username ) === false ) { return false; @@ -487,7 +489,7 @@ function mci_check_login( $p_username, $p_password ) { } } else { # Use regular passwords - if( auth_attempt_script_login( $p_username, $t_password ) === false ) { + if( auth_attempt_script_login( $p_username, $p_password ) === false ) { return false; } }
Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
4- github.com/advisories/GHSA-phrq-pc6r-f6ghghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2026-30849ghsaADVISORY
- github.com/mantisbt/mantisbt/commit/b349e5c890eeda9bd82e7c7e14479853f8a30d9fghsax_refsource_MISCWEB
- github.com/mantisbt/mantisbt/security/advisories/GHSA-phrq-pc6r-f6ghghsax_refsource_CONFIRMWEB
News mentions
0No linked articles in our index yet.