Joomla this week resolved a High severity vulnerability that allowed an attacker to modify other user accounts by resetting their usernames and passwords.
Version 3.6.5 of the popular Content Management System (CMS) was released to address three security issues, but only one was considered High risk, while the remaining two had a Low severity rating. In addition to these fixes, the update came with additional security hardening mechanisms, as well as with other bug fixes.
Tracked as CVE-2016-9838, the High severity vulnerability was found to affect all Joomla iterations from 1.6.0 through 3.6.4. This elevated privilege exploit relied on the incorrect use of unfiltered data stored to the session on a form validation failure.
By exploiting this vulnerability, an attacker could modify existing user accounts, Joomla says, including changing usernames, passwords, and user group assignments. All sites running a vulnerable Joomla installation should update to version 3.6.5 of the CMS as soon as possible.
Joomla 3.6.5 also resolves a shell upload bug (CVE-2016-9836), which allowed for files with alternative PHP file extensions to be uploaded, mainly because of inadequate filesystem checks. A third issue was an information disclosure flaw (CVE-2016-9837), which resulted in users viewing restricted content, because of inadequate ACL checks in the Beez3 com_content article layout override.
Both of these vulnerabilities were considered Low severity and were found to affect Joomla CMS versions 3.0.0 through 3.6.4, while being addressed in the new release. Furthermore, Joomla 3.6.5 brings additional security hardening mechanisms prepared by the JSST, meant to limit users’ ability to make potentially damaging configuration changes.
Thus, starting with this CMS version, the ability to set the “New User Registration Group” and “Guest User Group” to a group with Super User permissions has been restricted, along with the ability for a lesser privileged user to make user group assignment changes to users in a Super User group.
Further, JUser::authorise() was modified to only return a Boolean value. Previously, it would return either a Boolean value or null, because the underlying call to JAccess::check() can also return a null value. After the change, developers who require the previous behavior of a null return value should use JAccess::check() instead.