Biblioteka websocket-driver w wersjach przed 0.7.5 jest podatna na błąd parsowania nagłówka długości ramki w przestarzałym protokole WebSocket (wersje draft). Atakujący bez uwierzytelnienia może doprowadzić do nieprawidłowego przetwarzania danych przez serwer, co zagraża integralności przetwarzanych wiadomości.
▸ Pokaż oryginał (EN)
websocket-driver is a WebSocket protocol handler with pluggable I/O. Prior to 0.7.5, the frame format in draft versions of the WebSocket protocol includes a length header that allows an arbitrarily large integer to be encoded as a sequence of bytes with the high bit set. By sending an indefinite sequence of bytes with values 0x80 or above, a client can make the server parse these bytes into an ever-growing integer in lib/websocket/driver/draft75.js; because JavaScript numbers are 64-bit floating point values, this number will eventually lose precision and lead to the subsequent payload being parsed incorrectly. This issue is fixed in version 0.7.5.
Format ramki w wersji draft protokołu WebSocket pozwala na kodowanie długości payloadu jako sekwencji bajtów z ustawionym najwyższym bitem. Wysyłając nieograniczoną sekwencję bajtów o wartościach 0x80 lub wyższych, klient zmusza serwer do parsowania ich jako coraz większej liczby całkowitej w pliku lib/websocket/driver/draft75.js. Ponieważ liczby w JavaScript są 64-bitowymi wartościami zmiennoprzecinkowymi, po przekroczeniu pewnej wielkości następuje utrata precyzji. W konsekwencji kolejny payload jest parsowany nieprawidłowo, co prowadzi do błędnej interpretacji danych przez serwer.
Atakujący może spowodować nieprawidłowe parsowanie i przetwarzanie danych po stronie serwera, naruszając integralność obsługiwanych wiadomości WebSocket, zarówno lokalnie, jak i w systemach powiązanych.
Należy zaktualizować bibliotekę websocket-driver do wersji 0.7.5 lub nowszej. Patch dostępny jest w repozytorium projektu na GitHub (commit 5b197ca874dab58e96cacad8a3c256797d804680).
Biblioteka websocket-driver (pakiet npm: websocket-driver) w wersjach przed 0.7.5, projekt faye/websocket-driver-node
Podatność dotyczy obsługi przestarzałych wersji draft protokołu WebSocket (implementacja draft75). Podatność została naprawiona w wersji 0.7.5 zgodnie z oficjalnym security advisory projektu (GHSA-xv26-6w52-cph6). CWE-130 odnosi się do nieprawidłowej obsługi wartości długości przy parsowaniu danych.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/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:XFaye Websocket Driver
APPFaye< 0.7.5
Powiązane podatności
websocket-driver to obsługiwacz protokołu WebSocket z wtyczką I/O. W wersjach wcześniejszych niż 0.8.1, wersje...
websocket-driver to handler protokołu WebSocket z konfigurowalnym I/O. Przed wersją 0.8.1, gdy websocket-drive...