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);