Apache Tapestry zawiera podatność polegającą na porównywaniu sygnatur HMAC za pomocą metody String.equals(), która jest podatna na atak czasowy (timing side channel). Błąd ten może umożliwić zdalnemu atakującemu odtworzenie prawidłowej sygnatury i wykonanie dowolnego kodu na serwerze (RCE).
▸ Pokaż oryginał (EN)
The code which checks HMAC in form submissions used String.equals() for comparisons, which results in a timing side channel for the comparison of the HMAC signatures. This could lead to remote code execution if an attacker is able to determine the correct signature for their payload. The comparison should be done with a constant time algorithm instead.
Podczas przetwarzania formularzy aplikacja weryfikuje podpis HMAC używając standardowej metody String.equals(), która kończy porównywanie łańcuchów znaków przy pierwszej różnicy — czas odpowiedzi jest zatem uzależniony od liczby pasujących bajtów. Atakujący może wielokrotnie wysyłać żądania z różnymi wariantami sygnatury i mierząc czas odpowiedzi metodycznie odtworzyć prawidłową wartość HMAC bajt po bajcie. Po ustaleniu poprawnej sygnatury atakujący może spreparować złośliwy payload, który zostanie przez aplikację potraktowany jako zaufany, co prowadzi do zdalnego wykonania kodu. Prawidłowym rozwiązaniem jest zastąpienie porównania algorytmem działającym w stałym czasie (constant-time comparison).
Atakujący bez żadnego uwierzytelnienia może uzyskać zdalną kontrolę nad serwerem (RCE), co oznacza pełne naruszenie poufności, integralności oraz dostępności systemu.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Producent wskazuje konieczność zastąpienia metody String.equals() algorytmem porównywania sygnatur działającym w stałym czasie.
Apache Tapestry — wersje wskazane w referencjach producenta
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HApache Tapestry
APPApache5.4.0 – 5.4.3
Powiązane podatności
Apache Tapestry 3.x — RCE przez deserializację niezaufanych danych
Apache Tapestry — RCE przez bypass filtra pobierania plików klasowych
Apache Tapestry 4 — deserializacja parametru 'sp' bez uwierzytelnienia
Apache Tapestry — RCE przez deserialization po wycieku klucza HMAC
Vulnerability in tapestry-core in Apache Tapestry 5.5.0+ on all platforms allows attackers to download clsspat...