Błąd w specyfikacji oraz implementacjach HMAC w XML Signature

2009-07-14 00:00:00 +0100


W3C opublikowało poprawkę do specyfikacji XML Signature naprawiając błąd, który w dosłownej implementacji metody HMAC umożliwiał poprawną weryfikację fałszywych podpisów. W XML Signature parametr ds:HMACOutputLength określa długość w bitach, do której skrócony został wynik funkcji HMAC z oryginalnej wiadomości. Ponieważ w poprzednich wersjach specyfikacji nie określono żadnych dodatkowych ograniczeń odnośnie tego parametru możliwa była sytuacja, w której w pełni zgodna ze specyfikacją implementacja akceptuje podpis złożony skrótem o długości np. 1 bitu.

Oczywiści atakującym byłby w tym przypadku składający podpis, zaś ofiarą - osoba go weryfikująca za pomocą aplikacji mogącej posiadać np. deklarację zgodności ze standardem (wymienionym przecież wprost w polskim rozporządzeniu).

Problem nie jest wyłącznie teoretyczny i wydumany. Informacja W3C została przekazana organizacjom CERT, które po zweryfikowaniu wśród producentów opublikowały ostrzeżenia (US CERT VU#466161). Rezultatem tej akcji było np. wypuszczenie poprawionej wersji jednej z najpopularniejszych darmowych bibliotek xmlsec.

Ciekawe, które polskie implementacje XML Signature lub/i XAdES zweryfikują taki podpis?