RUS-CERT обнаружил, что несколько модулей авторизации Apache, которые используют базы данных SQL, чтобы
сохранять опознавательную информацию, уязвимы к
удаленному нападению, введению SQL кода.
В случае модулей PostgreSQL нападающий может выполнять произвольные SQL инструкции или
заставить запрос базы данных для пароля возвращать произвольные данные. В результате возможен несанкционированный доступ на Web сервер. С модулем
Oracle нападавший может вызывать сохраненные процедуры и
заставить запрос базы данных для пароля возвращать произвольные данные. Воздействие с MySQL в настоящее время невыяснено, но с появлением сохраненных процедур вредные побочные эффекты также возможны.
В течение опознавательного процесса хеш пароля нужно искать в базе данных, так что должна быть сформирована инструкция SQL SELECT. В уязвимых модулях это сделано
при помощи кода:
Query := Sprintf ("SELECT %s FROM %s WHERE %s = '%s'",
Password_Column, User_Table, User_Column,
User);
Позже возвращенный хеш пароля сравнивается с введенным пользователем, пробующим подтвердить подлинность. Однако значение USER было получено по сети. Предположим, что нападающий выбирает строку (обратите внимание на отдельную кавычку вначале):
'; SELECT 'wA8aGH92dPQnIDD
Теперь заканчивающаяся строка содержит две SQL инструкции:
SELECT password_column FROM user_table WHERE user_column = '';
SELECT 'wA8aGH92dPQnIDD'
PostgreSQL's клиентская библиотека Libpq передаст обе инструкции на сервер PostgreSQL. Сервер выполнит обе инструкции и возвратит результат второй клиенту. Этим путем
нападающий может заставить обмануть опознавательный код, который будет считать, что база данных содержит надлежащий хеш для пароля. Возможны другие формы нападений
при помощи инструкций INSERT или DELETE, по существу, тем же самым способом.
В случае Oracle воздействие уязвимости другое.
Oracle не позволяет использовать многократные SQL
операторы в запросе, но использование пункта UNION, чтобы добавить дополнительные данные, возможно.
Следовательно, нападение, приведенное для PostgreSQL может быть дублировано. Кроме того,
хакер может выполнять сохраненные процедуры
и тем самым совершать потенциально опасные
действия на сервере.
Уязвимость работает в:
* AuthPG 1.2b2 by Min S. Kim
* mod_auth_mysql 1.9 by Vivek Khera
* mod_auth_oracle 0.5.1 by Serg Oskin
* mod_auth_pgsql 0.9.5 by Guiseppe Tanzilli and Matthias Eckermann
* mod_auth_pgsql_sys 0.9.4.