Skip to content
Heist/ feed
Back to feed
Medium

MantisBT is Vulnerable to Stored XSS through Custom Field Textarea Values

Type: advisorySources: OSV

Mantis Bug Tracker (MantisBT) is an open source issue tracker. Versions 2.28.1 and below contain flawed logic that causes improper escaping of a textarea custom field's contents in the Update Issue page, (bug_update_page.php) allowing an attacker to inject HTML and, if CSP settings permit, execute arbitrary JavaScript when the page is loaded. This facilitates session theft, leading to admin account takeover, full project data access. In order to exploit this issue, a textarea-type custom field must be configured for the project, the attack must be carried out by an authenticated user with bug report permission (low privilege). This can affect any user viewing the bug edit form, including administrators. The issue has been fixed in version 2.28.2. If users cannot immediately upgrade, they can work around the issue by using the default Content-Security Policy, which blocks script execution.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-39960
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 13:55 UTC · Revision 1

Source evidence

MantisBT is Vulnerable to Stored XSS through Custom Field Textarea Values

core-osv · Original source

Published 20 May 2026, 21:11 UTC

Mantis Bug Tracker (MantisBT) is an open source issue tracker. Versions 2.28.1 and below contain flawed logic that causes improper escaping of a textarea custom field's contents in the Update Issue page, (bug_update_page.php) allowing an attacker to inject HTML and, if CSP settings permit, execute arbitrary JavaScript when the page is loaded. This facilitates session theft, leading to admin account takeover, full project data access. In order to exploit this issue, a textarea-type custom field must be configured for the project, the attack must be carried out by an authenticated user with bug report permission (low privilege). This can affect any user viewing the bug edit form, including administrators. The issue has been fixed in version 2.28.2. If users cannot immediately upgrade, they can work around the issue by using the default Content-Security Policy, which blocks script execution.

osv:CVE-2026-39960
Complete source record
{
  "id": "df4ce2714a18520ec8a732b8059818899bb670eeeb42cb6d02cccb88102453eb",
  "url": "https://osv.dev/vulnerability/CVE-2026-39960",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "MantisBT is Vulnerable to Stored XSS through Custom Field Textarea Values",
    "summary": "Mantis Bug Tracker (MantisBT) is an open source issue tracker. Versions 2.28.1 and below contain flawed logic that causes improper escaping of a textarea custom field's contents in the Update Issue page, (bug_update_page.php) allowing an attacker to inject HTML and, if CSP settings permit, execute arbitrary JavaScript when the page is loaded. This facilitates session theft, leading to admin account takeover, full project data access. In order to exploit this issue, a textarea-type custom field must be configured for the project, the attack must be carried out by an authenticated user with bug report permission (low privilege). This can affect any user viewing the bug edit form, including administrators. The issue has been fixed in version 2.28.2. If users cannot immediately upgrade, they can work around the issue by using the default Content-Security Policy, which blocks script execution.",
    "evidence": "osv:CVE-2026-39960",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-39960",
      "aliases": [
        "CVE-2026-39960",
        "GHSA-qj6w-v29q-4rgx"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/mantisbt/mantisbt",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "399605af5f5c7640a2cf6b551409d9e37c5b4b7b"
                },
                {
                  "fixed": "5fec0f448b7a7d7d539a6adb6dccceac4e4e4ab7"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.28.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "5fec0f448b7a7d7d539a6adb6dccceac4e4e4ab7"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "release-2.28.1",
            "release-2.28.0",
            "release-2.27.0",
            "release-2.26.0",
            "release-2.25.0",
            "release-2.24.0",
            "release-2.23.0",
            "release-2.22.0",
            "release-2.21.0",
            "release-2.20.0",
            "release-2.19.0",
            "release-2.18.0",
            "release-2.17.0",
            "release-2.16.0",
            "release-2.15.0",
            "release-2.14.0",
            "release-2.13.0",
            "release-2.12.0",
            "release-2.11.0",
            "release-2.10.0",
            "release-2.9.0",
            "release-2.8.0",
            "release-2.7.0",
            "release-2.6.0",
            "release-2.5.0",
            "release-2.4.0",
            "release-2.3.0",
            "release-2.2.0",
            "release-2.1.0",
            "release-2.0.0",
            "release-2.0.0-rc.2",
            "release-2.0.0-rc.1",
            "release-2.0.0-beta.3",
            "release-2.0.0-beta.2",
            "release-2.0.0-beta.1",
            "release-1.3.0-rc.2",
            "release-1.3.0-rc.1",
            "release-1.3.0-beta.3",
            "release-1.3.0-beta.2",
            "release-1.3.0-beta.1",
            "release-1.2.0rc1",
            "release-1.2.0a3",
            "release-1.2.0a2",
            "release-1.2.0a1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-39960.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:36.304008816Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39960.json",
        "https://github.com/mantisbt/mantisbt/security/advisories/GHSA-qj6w-v29q-4rgx",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-39960",
        "https://github.com/mantisbt/mantisbt/commit/5fec0f448b7a7d7d539a6adb6dccceac4e4e4ab7"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-79"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39960.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-39960",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 503356,
  "published_at": "2026-05-20T21:11:02.341+00:00"
}