The FreePBX Music on Hold (MoH) module contains a critical security flaw that allows authenticated attackers to execute arbitrary system commands with the privileges of the Asterisk service.
Authentication with an existing FreePBX administrator account is required.
Common Vulnerabilities and Exposures (CVE)
CVE-2026-45562
Provider Urgency (choice of: Not Defined, Clear, Green, Amber, or Red)
A - Amber
Link to Published GitHub Security Advisory (GHSA) with More Details
Highlights
Users that need specific executables not found in the new allowed list of applications may wish to fork and customize this module for their particular environment and/or modify the custom music on hold configuration files generated by the module.
Provider Urgency is set to Amber because this is a potentially breaking change for an extremely small subset of users with custom apps.
AGAIN, THIS IS A POTENTIAL BREAKING CHANGE FOR AN EXTREMELY SMALL SUBSET OF USERS.
Good questions â this is potentially some change afoot for well-versed admins such as yourself
First, regarding MOH specifically: Not every user with permission to change the radio station dial for music on hold via the GUI should also be able to run arbitrary shell commands as the web server.
Config Edit is on another level, but, it still could use a look into ways of helping web admins avoid shooting themselves in the foot â thatâs what SSH is for! And indeed it does try a bit â and has done for a long time â w/r/t stopping edits of FPBX-generated files.
Custom email command setup for voicemail is worth considering some limits, too. What are your thoughts on requiring this be done only via SSH and not the GUI ?
This is a hat on a hat that offers zero security benefits. It doesnât secure anything considering that thereâs zero validation on if they exist, donât exist or havenât been touched.
Say madplay is actually installed at /usr/local/bin/madplay, having /usr/bin/madplay that doesnât exist is pointless. Not only that I can just create my on /usr/bin/madplay with all the bad stuff in it I need to do and it will pass your âsecurityâ check for this part.
All this does is breaks existing usage expectations and current deployments for zero security benefits.
Would have been better just to eliminate the option and include a migration in the install script that will move any custom MOH program definitions to the _custom file so that they donât break.
@penguinpbx it is ok to say âworking as designedâ to security researchers that point out that a field allows for shell scripts⌠that is, in fact, the point of the fieldâŚ
I disagree, would basically break every integration that uses this field, since in probably every case itâs a custom-written script with a name you cannot predict.
The âworking as designedâ AKA âfeature not bugâ response is often not well-received, with a list of CVE rules attached as footnotes in some cases.
Shifting to dangerous mode only available from command line seems more appropriate in most cases. Case in point is this topic â not a lot of feedback here (yet) from negatively affected users of this potentially breaking change, nor is it showing up in GitHub issues AFAICT.
Regarding voicemail, and really any custom command execution, that typically requires shell access to add new commands (or module installation â separate concern there as well). But from the GUI, a safeguard like only allowing letters or digits through as parameters to said commands was more of the direction to take this. FreePBX code canât predict the name but it can (probably) predict the range of characters allowed for the name and the parameters.
The âworking as designedâ claim is accurate since is describes what this feature actually does. This is a documented Asterisk feature not some undiscovered ability. This isnât about being able to run shell commands because thatâs what itâs supposed to do. This is about if an authenticated admin user has the ability to configure any meaningful attack vectors beyond what their permissions and authentication let them do in other areas like _custom.conf, etc..
Sangomaâs own advisory has the CVSS v4.1 published as 0.7/Low, which basically says âgiven real-world deployment scenarios, this barely represents additional risk.â Thatâs a score Sangoma gave this on a advisory with a severity of HIGH. Both cannot be true at the same time.
If this is âmore appropriateâ, then youâre acknowledging the feature itself is legitimate admin functionality that was scoped too aggressively in the fix, not a vulnerability that needed to be closed. Thatâs the âworking as designedâ argument, just with a different dress on.
Plus this âfixâ leaves the _custom.conf file completely open, untouched, unvalidated and completely usable by an admin with the same authentication and permissions. If this was a real RCE that gap would matter. The fact itâs not in the advisory either means Sangoma didnât consider it or Sangoma found it was a legitimate admin function.
These are horrible metric points. This project has a history of things being under reported, not to mention some people may not have updated the module or the best one, they were affected and saw this thread, etc and just moved their MoH configs to musiconhold_custom.conf to fix the issue. You know, the thing they were able to do before the update. So not having feedback or a github issues does not equate âNo one is impacted by thisâ.
Not well-received by whom? The rando new Github account that used an AI scanning tool to raise the low-impact CVE? Iâd say take a pollâŚ
If fields that accept system commands are a concern, then go all-in or all-out. The modules that come to mind are Advanced Settings (a whole bunch of fields specifying paths to executables), Sysadmin (postfix custom config), Voicemail Admin (custom email command), MOH, Config Editor. If I hunted through FreePBX I would probably be able to find more, though my point here is that itâs not a small thing to declare that fields accepting system commands are a CVE-worthy security concern.
Maybe it would be better to offer a finer-grained permissions set for admins. Super-admins can set fields that specify system commands. Normal admins can do everything else an admin can do except manipulate those fields.
Not only that thereâs a 7 point swing in the CVE scores which is highly unusual. It has a severity of HIGH which is the story headline but buried in the story is the 0.7 score which represents the actual real world impact of the issue. Along with keeping all the other gaps open that would allow for this RCE to still happen shows that Sangoma knows this issue isnât as severe as they are making it out to be. The entire CVE is questionable.
Iâm not sure this helps you the way you think it does. You published a CVE with a headline of âSevere:Highâ Score 7.6 / 10 when that was highly incorrect. Itâs over dramatizing this as âHighly Serve RCE in FreePBXâ when itâs not. Itâs just not.
â GitHub gave it a base score of 7.6
â Sangoma applied TES to the base and gave it a 4.9. That 4.9 isnât auto generated, Sangoma gave it that score manually.
â Then you @penguinpbx , as that blog post highlights, to fix what you consider broken CVSS PR apply your own calculations to consider additional factors for PR. The blog post claims âto control more of the final score.â Your own calculations of a better controlled final score was 0.7.
Basically your own TES based scoring reduced it from High to Medium and your own proposed fix calculates this as a 0.7 or Low. You published a CVE with a dramatized and sensationalized headline and score that wasnât accurate and unless you actually review the CVE instead of looking a summary of titles, youâll never know itâs actually a âLow Severity RCE that will probably never happenâ thing. This is my issue with this CVE, itâs filled with contradictions such as a PU of Amber which means âYeah do this when you can, no rush but donât not do itâ but again flagged as a âHighâ which generally should be a PU of Red as in âdo this ASAP, youâre exposed if you donâtâ .
I havenât done a bigger review of the other CVEâs youâve posted but on the surface they didnât stand out like this one. Iâm hoping that stands true when I go through them more.
Please do review the work, thank you. I also recommend you review the scoring tools provided by GitHub in your own module repo security reporting configuration. Then compare that subset with the larger set of knobs available as part of the complete CVSS 4.0. Any of the recent several Blog > Security topics/issues are (conveniently) already open for feedback.