Недавние исследования выявили уязвимость среднего уровня в расширении PHP pgsql, что заставило разработчиков и системных администраторов обратить особое внимание на безопасность своих приложений. Проблема заключается в том, что расширение неверно обрабатывает ошибки во время экранирования ввода, что может привести к
Проблемы с экранированием в PHP pgsql
В результате ошибки параметры ошибок не передаются в функцию PQescapeStringConn(), что препятствует правильному учету ошибок кодировки. Кроме того, функция PQescapeIdentifier() часто не проверяет возвращаемое значение на равенство NULL, которое сигнализирует об ошибке. Эти пропуски в реализации открывают дверь для SQL injection атак и сбоев приложения из-за обращения к нулевым указателям.
Уязвимость затрагивает версии PHP до 8.1.33, 8.2.29, 8.3.23 и 8.4.10. Уже были выпущены обновления, и разработчики настоятельно призываются к незамедлительному переходу на новые версии. Основная причина проблемы связана с недавней уязвимостью в PostgreSQL, которая включает в себя некорректные многобайтные символы, используемые для обхода механизма экранирования.
Риски и рекомендации
При наличии этой уязвимости злоумышленники могут вводить вредоносные данные, содержащие некорректные символы, чтобы обойти экранирование, что может привести к выполнению команд в базе данных и подрыву конфиденциальности, целостности и доступности данных. Неправильная обработка ошибок может также вызвать сбои приложений и DoS атаки.
Эксперты по безопасности подчеркивают необходимость строгой валидации ввода, регулярных проверок, применения новейших версий PHP и PostgreSQL, а также соблюдения безопасных практик программирования для минимизации риска.