PHPNuxBill through 2025.3.20 Account Takeover via Brute-Forceable Password Reset Code
PHPNuxBill through 2025.3.20 contains an account takeover vulnerability in the customer password reset flow in system/controllers/forgot.php that allows unauthenticated attackers to brute-force the 6-digit otp_code. Attackers knowing a customer username can guess the code without attempt limits or lockout, then read the newly set password from the HTTP response to hijack the account.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-108109
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 21:15 UTC · Revision 1
Source evidence
PHPNuxBill through 2025.3.20 Account Takeover via Brute-Forceable Password Reset Code
core-osv · Original sourcePublished 9 Oct 2026, 14:33 UTC
PHPNuxBill through 2025.3.20 contains an account takeover vulnerability in the customer password reset flow in system/controllers/forgot.php that allows unauthenticated attackers to brute-force the 6-digit otp_code. Attackers knowing a customer username can guess the code without attempt limits or lockout, then read the newly set password from the HTTP response to hijack the account.
osv:CVE-2026-108109
Complete source record
{
"id": "ce4e97dff89acd26a893e3c94a8627225904783a41450c3021817efafac4ed05",
"url": "https://osv.dev/vulnerability/CVE-2026-108109",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "PHPNuxBill through 2025.3.20 Account Takeover via Brute-Forceable Password Reset Code",
"summary": "PHPNuxBill through 2025.3.20 contains an account takeover vulnerability in the customer password reset flow in system/controllers/forgot.php that allows unauthenticated attackers to brute-force the 6-digit otp_code. Attackers knowing a customer username can guess the code without attempt limits or lockout, then read the newly set password from the HTTP response to hijack the account.",
"evidence": "osv:CVE-2026-108109",
"products": [],
"severity": "critical",
"structured": {
"id": "CVE-2026-108109",
"aliases": [
"CVE-2026-108109",
"GHSA-337r-rrrc-r559"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/hotspotbilling/phpnuxbill",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "c3c2a92d468af91136d747b75142ed72f10320cc"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"fixed": "c3c2a92d468af91136d747b75142ed72f10320cc"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
}
],
"versions": [
"2025.3.13",
"2025.3.10",
"2025.2.3",
"2025.1.16",
"2024.9.13",
"2024.8.28",
"2024.8.2",
"2024.7.25",
"2024.7.24",
"2024.7.15",
"2024.6.21",
"2024.5.21",
"2024.5.14",
"2024.4.23",
"2024.4.15",
"2024.4.3",
"2024.3.22",
"2024.3.18",
"2024.3.15",
"2024.3.14",
"2024.3.6",
"2024.3.3.1",
"2024.3.3",
"2024.2.29",
"2024.2.27",
"2024.2.26.1",
"2024.2.26",
"2024.2.23.1",
"2024.2.23",
"2024.2.21",
"2024.2.20",
"2024.2.19",
"2024.2.7",
"2024.2.5",
"2024.1.19",
"2024.1.17",
"2024.1.16",
"2024.1.11",
"2023.12.21",
"2023.12.19",
"2023.12.14",
"2023.10.27.1",
"2023.11.17",
"2023.10.27",
"2023.10.25",
"2023.10.20",
"2023.10.17",
"6.0.0",
"5.5",
"5.4",
"5.3",
"5.2.2",
"5.2.1",
"5.2",
"v5.1.14",
"v5.1.13",
"v5.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-108109.json"
}
}
],
"modified": "2026-10-28T02:30:39.614871033Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/108xxx/CVE-2026-108109.json",
"https://github.com/hotspotbilling/phpnuxbill/security/advisories/GHSA-337r-rrrc-r559",
"https://nvd.nist.gov/vuln/detail/CVE-2026-108109",
"https://www.vulncheck.com/advisories/phpnuxbill-through-2025.3.20-account-takeover-via-brute-forceable-password-reset-code",
"https://github.com/hotspotbilling/phpnuxbill/commit/c3c2a92d468af91136d747b75142ed72f10320cc",
"https://github.com/hotspotbilling/phpnuxbill",
"https://github.com/hotspotbilling/phpnuxbill/blob/2025.3.13/system/controllers/forgot.php#L41"
],
"provider_metadata": {
"cwe_ids": [
"CWE-307"
],
"cna_assigner": "VulnCheck",
"unresolved_ranges": [
{
"extracted_events": [
{
"range": [
{
"last_affected": "2025.3.20"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
}
]
},
{
"extracted_events": [
{
"range": [
{
"last_affected": "2025.3.20"
}
],
"source": "DESCRIPTION"
}
]
}
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/108xxx/CVE-2026-108109.json"
}
},
"related_cves": [
{
"value": "CVE-2026-108109",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 507114,
"published_at": "2026-10-09T14:33:32.201+00:00"
}