Parse Server — это серверная часть с открытым исходным кодом, которую можно развернуть в любой инфраструктуре, поддерживающей Node.js. До версий 9.6.0-alpha.10 и 8.6.36 злоумышленник, имеющий доступ к главному ключу, мог внедрить вредоносный SQL-код через созданные имена полей, используемые в ограничениях запроса, когда сервер Parse настроен с использованием PostgreSQL в качестве базы данных. Имя поля в операторе запроса $regex передается в PostgreSQL с использованием непараметризованной строковой интерполяции, что позволяет злоумышленнику манипулировать SQL-запросом.
Хотя главный ключ контролирует то, что можно сделать через уровень абстракции сервера синтаксического анализа, эта SQL-инъекция полностью обходит сервер синтаксического анализа и работает на уровне базы данных. Эта уязвимость затрагивает только развертывания Parse Server с использованием PostgreSQL. Эта уязвимость исправлена в версиях 9.6.0-alpha.10 и 8.6.36.
Показать оригинальное описание (EN)
Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to 9.6.0-alpha.10 and 8.6.36, an attacker with access to the master key can inject malicious SQL via crafted field names used in query constraints when Parse Server is configured with PostgreSQL as the database. The field name in a $regex query operator is passed to PostgreSQL using unparameterized string interpolation, allowing the attacker to manipulate the SQL query. While the master key controls what can be done through the Parse Server abstraction layer, this SQL injection bypasses Parse Server entirely and operates at the database level. This vulnerability only affects Parse Server deployments using PostgreSQL. This vulnerability is fixed in 9.6.0-alpha.10 and 8.6.36.
Характеристики атаки
Последствия
Строка CVSS v4.0