Biblioteka TypeORM przed wersją 0.3.0 jest podatna na SQL injection poprzez funkcję findOne(), gdy przyjmuje ona kontrolowane przez użytkownika dane JSON. Podatność ma krytyczny charakter (CVSS 9.8) i nie wymaga uwierzytelnienia ani interakcji użytkownika.
▸ Pokaż oryginał (EN)
The findOne function in TypeORM before 0.3.0 can either be supplied with a string or a FindOneOptions object. When input to the function is a user-controlled parsed JSON object, supplying a crafted FindOneOptions instead of an id string leads to SQL injection. NOTE: the vendor's position is that the user's application is responsible for input validation
Funkcja findOne() akceptuje jako argument albo ciąg znaków (identyfikator), albo obiekt typu FindOneOptions. Jeśli dane wejściowe pochodzą z parsowanego JSON kontrolowanego przez użytkownika, atakujący może zamiast oczekiwanego identyfikatora przekazać spreparowany obiekt FindOneOptions zawierający złośliwy payload SQL. Biblioteka TypeORM nie waliduje samodzielnie tego wejścia, co prowadzi do wykonania niezamierzonych zapytań SQL w bazie danych.
Atakujący może uzyskać nieautoryzowany dostęp do poufnych danych, zmodyfikować lub usunąć zawartość bazy danych, a potencjalnie przejąć kontrolę nad całym systemem bazodanowym — co odpowiada pełnemu naruszeniu poufności, integralności i dostępności.
Należy zaktualizować TypeORM do wersji 0.3.0 lub nowszej. Producent stoi na stanowisku, że walidacja danych wejściowych leży po stronie aplikacji użytkownika, dlatego niezależnie od wersji biblioteki należy wdrożyć po stronie aplikacji rygorystyczną weryfikację i sanityzację danych JSON przekazywanych do funkcji findOne() — w szczególności odrzucać obiekty tam, gdzie oczekiwany jest wyłącznie identyfikator.
TypeORM w wersjach przed 0.3.0
Producent (vendor) oficjalnie stwierdził, że odpowiedzialność za walidację danych wejściowych spoczywa na aplikacji korzystającej z biblioteki, nie na samej bibliotece TypeORM. Publicznie dostępne jest opracowanie exploita opisujące podatność jako 'Information Disclosure' (PacketStorm, seclists.org).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HTypeorm
APPTypeorm< 0.3.0