Biblioteka kryptograficzna Tink podczas weryfikacji kodu MAC przy użyciu obiektu ChunkedMacVerification stosuje porównanie tagów w czasie niezmiennym (non constant time), co otwiera możliwość ataku side-channel opartego na pomiarze czasu odpowiedzi. Błąd może umożliwić atakującemu stopniowe odgadnięcie poprawnego tagu metodą bajt po bajcie.
▸ Pokaż oryginał (EN)
When verifying a mac with a ChunkedMacVerification object, Tink compares the resulting tag with non constant time comparison. This potentially allows an attacker to use timinig information as a side channel in order to get information how many bytes of a given tag match the correct tag. This in turn could allow to find a correct tag bytewise.
Podatność wynika z użycia porównania ciągów (tagów MAC) w sposób zależny od zawartości danych — tzw. non constant time comparison (CWE-208). Czas wykonania porównania różni się w zależności od liczby zgodnych bajtów między tagiem sprawdzanym a poprawnym tagiem. Atakujący może wielokrotnie przesyłać spreparowane tagi i na podstawie różnic w czasie odpowiedzi wnioskować, ile bajtów jego próby jest zgodnych z poprawnym tagiem. Pozwala to na iteracyjne odgadnięcie pełnego prawidłowego tagu bez znajomości klucza.
Atakujący może wykorzystać informacje o czasie weryfikacji jako kanał boczny (side channel) i w efekcie sfałszować prawidłowy tag MAC, co narusza integralność weryfikowanych danych.
Należy zastosować patche dostępne u producenta zgodnie z referencjami (https://github.com/tink-crypto/tink-java/issues/75). Do czasu aktualizacji należy unikać stosowania ChunkedMacVerification w środowiskach narażonych na precyzyjny pomiar czasu odpowiedzi.
Biblioteka Tink (tink-java) — wersje wskazane w referencjach producenta; problem dotyczy komponentu ChunkedMacVerification.
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:H/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:X