{"id":"CVE-2026-111046","kind":"vulnerability","aliases":["CVE-2026-111046"],"related":[],"title":"FOSSBilling: staff account reads and overwrites deactivated module secrets","description":"FOSSBilling is an open source billing and client-management platform. From 0.8.4 until 0.8.6, hasManagePermission fails open for inactive non-core modules because its early return on !isExtensionActive skips the module-access and manage_settings checks. A low-privileged staff account with module-level extension access targets a deactivated non-core module through extension/config_get or extension/config_save. The account can call api/admin/extension/config_get or api/admin/extension/config_save for a deactivated non-core module to read decrypted retained extension secrets and overwrite stored extension configuration. The getConfig function returns the decrypted stored configuration despite the module's inactive state. This residual path remained after the earlier CVE-2026-62962 authorization fix. This issue is fixed in version 0.8.6.","summary":"FOSSBilling versions 0.8.4 through 0.8.5 skip permission checks for deactivated non-core extensions. A low-privileged staff account with module access can read decrypted stored extension secrets and overwrite extension configuration.","severity":"low","cvss":2.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["fossbilling","package","php","self-hosted"],"not_affected_if":["fossbilling-0.8.6-or-later","no-staff-with-extension-access"],"how_to_check":"- Check the installed FOSSBilling version in the admin panel or its composer/package metadata; versions `0.8.4` and `0.8.5` are affected.\n- Review staff accounts that have module-level extension access.","fix":"- Upgrade FOSSBilling to `0.8.6`.\n- Until upgraded, restrict staff accounts' extension access to trusted users only.","status":"open","published_at":"2026-10-19T16:17:03+00:00","first_seen_at":"2026-10-23T21:57:18+00:00","triaged_at":"2026-10-25T04:49:50+00:00","updated_at":"2026-10-25T04:49:50+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-25T04:49:50Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade FOSSBilling to `0.8.6`.\n- Until upgraded, restrict staff accounts' extension access to trusted users only.","reach":"network","title":"FOSSBilling: staff account reads and overwrites deactivated module secrets","impact":"medium","summary":"FOSSBilling versions 0.8.4 through 0.8.5 skip permission checks for deactivated non-core extensions. A low-privileged staff account with module access can read decrypted stored extension secrets and overwrite extension configuration.","category":"package","nicknames":[],"who_cares":["fossbilling","self-hosted","php"],"confidence":0.8,"needs_auth":"yes","worst_case":"Staff account reads decrypted extension secrets and overwrites module configuration.","analyst_note":"","how_to_check":"- Check the installed FOSSBilling version in the admin panel or its composer/package metadata; versions `0.8.4` and `0.8.5` are affected.\n- Review staff accounts that have module-level extension access.","needs_analyst":false,"not_affected_if":["fossbilling-0.8.6-or-later","no-staff-with-extension-access"],"who_is_affected":"Self-hosted FOSSBilling installs from 0.8.4 through 0.8.5 that have staff accounts with module-level extension access. Exposure needs a staff account with that access; installs with no such staff accounts are at lower risk.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.000608,"input_tokens":3457,"output_tokens":525,"severity_before":"low"},"analyst_status":null,"analyst_note":null,"search":"'-111046':12A,15A '-2026':11A,14A,164C '-62962':165C '0.8.4':24B,67C '0.8.5':26B '0.8.6':69C,174C 'access':44B,89C,105C 'account':3A,41B,99C,118C 'api/admin/extension/config_get':121C 'api/admin/extension/config_save':123C 'author':166C 'bill':60C 'call':120C 'check':29B,93C 'client':63C 'client-manag':62C 'configur':54B,141C,149C 'core':34B,77C,111C,129C 'cve':10A,13A,163C 'deactiv':7A,31B,108C,126C 'decrypt':47B,133C,147C 'despit':150C 'earli':81C 'earlier':162C 'extens':35B,49B,53B,104C,135C,140C 'extension/config_get':114C 'extension/config_save':116C 'fail':71C 'fix':167C,171C 'fossbil':1A,16B,22B,55C 'function':144C 'getconfig':143C 'hasmanagepermiss':70C 'host':21B 'inact':74C,154C 'isextensionact':84C 'issu':169C 'level':103C 'low':38B,96C 'low-privileg':37B,95C 'manag':64C,91C 'modul':8A,43B,78C,88C,102C,112C,130C,152C 'module-access':87C 'module-level':101C 'non':33B,76C,110C,128C 'non-cor':32B,75C,109C,127C 'open':58C,72C 'overwrit':6A,52B,138C 'packag':17B 'path':158C 'permiss':28B 'php':18B 'platform':65C 'privileg':39B,97C 'read':4A,46B,132C 'remain':159C 'residu':157C 'retain':134C 'return':82C,145C 'secret':9A,50B,136C 'self':20B 'self-host':19B 'set':92C 'skip':27B,85C 'sourc':59C 'staff':2A,40B,98C 'state':155C 'store':48B,139C,148C 'target':106C 'version':23B,173C","nicknames":[],"mitigations":[],"who_affected":"Self-hosted FOSSBilling installs from 0.8.4 through 0.8.5 that have staff accounts with module-level extension access. Exposure needs a staff account with that access; installs with no such staff accounts are at lower risk.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-19T16:17:03+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-111046","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111046","severity":null,"published_at":"2026-10-19T16:17:03+00:00","modified_at":"2026-10-19T17:17:02+00:00","first_seen_at":"2026-10-23T21:57:18+00:00","fetched_at":"2026-10-23T22:28:57+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}