Podatność w komponencie HttpTransferCache frameworka Angular powoduje, że powtarzające się parametry żądań HTTP są łączone przecinkami, co może prowadzić do kolizji kluczy cache i zwrócenia nieprawidłowej odpowiedzi backendu innemu żądaniu. Stanowi to zagrożenie dla integralności danych oraz poufności wrażliwych odpowiedzi serwera.
▸ Pokaż oryginał (EN)
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.27, 21.2.19, and 22.0.2, HttpTransferCache comma-joins repeated request parameters, allowing semantically distinct HttpClient requests to use the same transfer-cache key and reuse a wrong backend response. This issue is fixed in versions 20.3.27, 21.2.19, and 22.0.2.
HttpTransferCache w Angular generuje klucz cache na podstawie parametrów żądania HTTP. Gdy żądanie zawiera wielokrotnie powtórzony parametr (np. ?a=1&a=2), mechanizm łączy te wartości przecinkami (a=1,2), tworząc klucz identyczny z kluczem innego, semantycznie odmiennego żądania (np. ?a=1,2). W efekcie dwa różne żądania HttpClient mogą współdzielić ten sam wpis cache, a jedno z nich otrzyma odpowiedź przeznaczoną dla drugiego. Błąd wynika z niewystarczającej weryfikacji unikalności klucza cache (CWE-345 — brak weryfikacji integralności danych).
Atakujący lub złośliwa aplikacja mogą doprowadzić do sytuacji, w której klient otrzyma odpowiedź backendu przeznaczoną dla innego żądania, co może skutkować ujawnieniem wrażliwych danych (np. danych innego użytkownika) lub przetworzeniem przez aplikację błędnych danych.
Należy zaktualizować Angular do wersji 20.3.27, 21.2.19 lub 22.0.2 (w zależności od używanej gałęzi). Patche dostępne są w referencjach producenta (repozytorium GitHub angular/angular).
Angular w wersjach wcześniejszych niż 20.3.27, 21.2.19 oraz 22.0.2 — aplikacje korzystające z komponentu HttpTransferCache.
Podatność dotyczy wyłącznie aplikacji wykorzystujących mechanizm HttpTransferCache (stosowany głównie przy Server-Side Rendering). Poprawki zostały opublikowane w czterech osobnych commitach — szczegóły dostępne w pull requeście #68571 w repozytorium angular/angular.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XAngular
APPAngular≤ 19.2.2520.0.0 – 20.3.27 (bez)21.0.0 – 21.2.19 (bez)22.0.0 – 22.0.2 (bez)
Powiązane podatności
Angular: XSS przez złośliwy plik tłumaczeń i18n (event-handler injection)
XSS w Angular platform-server podczas serializacji elementów fallback
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript...
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript...
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript...