phpMyFAQ до 4.1.7, если он настроен на использование PostgreSQL через собственное PHP-расширение pgsql, объявляет неправильный символ LIKE ESCAPE ('=') в бэкэнде Search/Database/Pgsql.php, а escapeLikeWildcards() экранирует пользовательский ввод с помощью '|' префикс. В результате экранирование подстановочных знаков не выполняется, а введенные пользователем символы % и _ остаются активными, КАК подстановочные знаки. Злоумышленник, не прошедший проверку подлинности, может ввести такие символы в общедоступную форму поиска часто задаваемых вопросов, чтобы обеспечить максимально широкое совпадение шаблонов и дорогостоящее последовательное сканирование, что приведет к отказу в обслуживании.
Серверная часть PDO PostgreSQL не затрагивается, а кавычки остаются экранированными, поэтому это не позволяет осуществлять SQL-инъекцию с нарушением кавычек или эксфильтрацию данных.
Показать оригинальное описание (EN)
phpMyFAQ before 4.1.7, when configured to use PostgreSQL via the native pgsql PHP extension, declares an incorrect LIKE ESCAPE character ('=') in the Search/Database/Pgsql.php backend while escapeLikeWildcards() escapes user input with the '|' prefix. As a result, wildcard escaping is a no-op and user-supplied % and _ characters remain active LIKE wildcards. An unauthenticated attacker can submit such characters in the public FAQ search form to force maximally broad pattern matches and expensive sequential scans, resulting in a denial of service. The PDO PostgreSQL backend is not affected, and quotes remain escaped so this does not enable quote-breaking SQL injection or data exfiltration.
Характеристики атаки
Последствия
Строка CVSS v4.0