Неправильная нейтрализация специальных элементов, используемых в SQL-команде («SQL-инъекция»), уязвимость в elixir-ecto postgrex (модуль «Elixir.Postgrex.Notifications») делает возможным SQL-инъекцию. Аргумент канала, передаваемый в команды 'Elixir.Postgrex.Notifications':listen/3 и 'Elixir.Postgrex.Notifications':unlisten/3, интерполируется непосредственно в операторы SQL LISTEN "..." / UNLISTEN "..." без экранирования символа ". Злоумышленник, который может повлиять на имя канала, может ввести ", чтобы вырваться из идентификатора в кавычках и добавить произвольный SQL.
Поскольку соединение для уведомлений использует простой протокол запросов PostgreSQL, принимаются полезные данные с несколькими операторами, что позволяет объединять команды DDL и DML (например, ; DROP TABLE ...; --). Такая же несанкционированная интерполяция также происходит в handle_connect/1 при воспроизведении команд LISTEN после повторного подключения. Эта уязвимость связана с программным файлом lib/postgrex/notifications.ex и программными подпрограммами «Elixir.Postgrex.Notifications»:listen/3, «Elixir.Postgrex.Notifications»:unlisten/3, «Elixir.Postgrex.Notifications»:handle_connect/1.
Эта проблема затрагивает postgrex: с 0.16.0 до 0.22.2.
Показать оригинальное описание (EN)
Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in elixir-ecto postgrex ('Elixir.Postgrex.Notifications' module) allows SQL Injection. The channel argument passed to 'Elixir.Postgrex.Notifications':listen/3 and 'Elixir.Postgrex.Notifications':unlisten/3 is interpolated directly into LISTEN "..." / UNLISTEN "..." SQL statements without escaping the " character. An attacker who can influence the channel name can inject a " to break out of the quoted identifier and append arbitrary SQL. Because the notifications connection uses the PostgreSQL simple query protocol, multi-statement payloads are accepted, allowing DDL and DML commands to be chained (e.g. ; DROP TABLE ...; --). The same unsanitized interpolation also occurs in handle_connect/1 when replaying LISTEN commands after a reconnect. This vulnerability is associated with program file lib/postgrex/notifications.ex and program routines 'Elixir.Postgrex.Notifications':listen/3, 'Elixir.Postgrex.Notifications':unlisten/3, 'Elixir.Postgrex.Notifications':handle_connect/1. This issue affects postgrex: from 0.16.0 before 0.22.2.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Elixir-Ecto Postgrex
cpe:2.3:a:elixir-ecto:postgrex:*:*:*:*:*:*:*:*
|
0.16.0
|
0.22.0
|