PMASA-2013-15 Announcement-ID: PMASA-2013-15 Date: 2013-07-28 Updated: 2013-07-30 Summary SQL injection vulnerabilities, producing a privilege escalation (control user). Description Due to a missing validation of parameters passed to schema_export.php and pmd_pdf.php, it was possible to inject SQL statements that would run with the privileges of the control user. This gives read and write access to the tables of the configuration storage database, and if the control user has the necessary privileges, read access to some tables of the mysql database. Severity We consider these vulnerabilities to be serious. Mitigation factor These vulnerabilities can be triggered only by someone who logged in to phpMyAdmin, as the usual token protection prevents non-logged-in users from accessing the required form. Moreover, a control user must have been created and configured as part of the phpMyAdmin configuration storage installation. Affected Versions Versions 3.5.x (prior to 3.5.8.2) and 4.0.x (prior to 4.0.4.2) are affected. Solution Upgrade to phpMyAdmin 3.5.8.2 or 4.0.4.2 or apply the patches below. pmd_pdf.php @@ -9,6 +9,13 @@ require_once 'libraries/pmd_common.php'; /** + * Validate vulnerable POST parameters + */ +if (isset($_POST['scale']) && ! PMA_isValid($_POST['scale'], 'numeric')) { + die('Attack stopped'); +} + +/** * Sets globals from $_POST */ $post_params = array( schema_export.php @@ -2362,7 +2362,7 @@ function PMA_displayTable(&$dt_result, &$the_disp_mode, $analyzed_sql) } $message = PMA_Message::success(__('Showing rows')); - $message->addMessage($first_shown_rec); + $message->addMessage(htmlspecialchars($first_shown_rec)); if ($message_view_warning) { $message->addMessage('...', ' - '); $message->addMessage($message_view_warning);