Sequelize, popularny ORM dla Node.js, w wersjach poprzedzających 6.19.1 zawiera krytyczną podatność SQL injection związaną z mechanizmem replacements. Brak właściwego escapowania parametrów przekazywanych przez replacements umożliwia atakującemu wykonanie dowolnych zapytań SQL.
▸ Pokaż oryginał (EN)
Sequelize is a Node.js ORM tool. In versions prior to 6.19.1 a SQL injection exploit exists related to replacements. Parameters which are passed through replacements are not properly escaped which can lead to arbitrary SQL injection depending on the specific queries in use. The issue has been fixed in Sequelize 6.19.1. Users are advised to upgrade. Users unable to upgrade should not use the `replacements` and the `where` option in the same query.
Podatność polega na tym, że parametry przekazywane do zapytań SQL za pośrednictwem mechanizmu replacements nie są odpowiednio sanityzowane ani escapowane przed użyciem w zapytaniu. Gdy w tym samym zapytaniu używana jest jednocześnie opcja `replacements` oraz opcja `where`, możliwe jest wstrzyknięcie złośliwego kodu SQL. Atakujący może spreparować dane wejściowe w taki sposób, aby zmodyfikować logikę wykonywanego zapytania bazodanowego.
Atakujący może uzyskać nieautoryzowany dostęp do danych w bazie, modyfikować lub usuwać dane, a w zależności od konfiguracji serwera bazy danych potencjalnie przejąć kontrolę nad systemem. Podatność ma wynik CVSS 10.0, co oznacza pełne zagrożenie poufności, integralności i dostępności systemu.
Należy zaktualizować Sequelize do wersji 6.19.1 lub nowszej. Użytkownicy, którzy nie mogą przeprowadzić aktualizacji, powinni unikać jednoczesnego stosowania opcji `replacements` i `where` w tym samym zapytaniu jako tymczasowego obejścia.
Sequelize (Node.js ORM) — wszystkie wersje przed 6.19.1
Poprawka dostępna w commicie ccaa3996047fe00048d5993ab2dd43ebadd4f78b w repozytorium GitHub projektu Sequelize. Podatność była śledzona również jako issue #14519.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:HSequelizejs Sequelize
APPSequelizejs< 6.19.1
Powiązane podatności
Sequelize.js — injection przez nieprawidłowe filtrowanie parametrów
SQL Injection w bibliotece Sequelize (brak filtrowania atrybutów)
SQL Injection w bibliotece Sequelize — brak sanityzacji kluczy JSON path (PostgreSQL)
SQL Injection w Sequelize przez nieprawidłowe eskejpowanie kluczy JSON path
SQL Injection w Sequelize przez funkcję pomocniczą sequelize.json()