Dominic Griesel (AlCalzone), opiekun Z-Wave JS, scalił 23 października 2026 dwie poprawki, które ograniczają przychodzące żądania podatne na nadużycia ze strony urządzenia w sieci. Pierwsze mogło na długo zająć radio kontrolera, drugie całkowicie zawiesić sterownik. Obie zmiany trafiły do kodu po wydaniu Z-Wave JS 15.31.2 z 22 października, więc pojawią się w następnej wersji, a potem w aplikacji Z-Wave JS dla Home Assistanta i w Z-Wave JS UI.
Testy radiowe bez ograniczeń
Z-Wave ma klasę poleceń Powerlevel do sprawdzania jakości połączeń. Jeden węzeł prosi drugi, żeby wysłał do trzeciego serię ramek testowych z wybraną mocą nadawania i podał, ile z nich dotarło. Do tej pory Z-Wave JS przyjmował takie żądanie od każdego węzła i z dowolnymi wartościami. Urządzenie mogło kazać kontrolerowi wysłać do 65 535 testowych ramek NOP pod dowolny numer węzła, także nieistniejący, i w każdej chwili zacząć test od nowa. Przez cały ten czas radio kontrolera było zajęte.
Po zmianie #9374 celem musi być znany węzeł inny niż sam kontroler, liczba ramek nie przekracza 1000, a nowe żądanie jest ignorowane, dopóki trwa poprzedni test. Wydanie 15.31.2 zawierało już pokrewną zmianę, która odrzuca nieprawidłowe stany w raporcie z testu.
Zawieszony sterownik przy S0
Druga poprawka dotyczy S0, starszego schematu zabezpieczeń Z-Wave. Przed każdą zaszyfrowaną wiadomością nadawca prosi odbiorcę o jednorazową liczbę, czyli nonce. Z-Wave JS nie ograniczał liczby wydanych i jeszcze niewykorzystanych nonce. Gdy zajęte były wszystkie 256 identyfikatory, funkcja tworząca nowy nonce bez końca szukała wolnego, a sterownik się zawieszał. Według opisu zmiany wystarczał do tego zalew poleceń S0 Nonce Get, na przykład z kilku węzłów naraz albo w trakcie dołączania urządzenia, szybszy niż wygasanie starych nonce.
Zmiana #9375 ogranicza tabelę oczekujących nonce do 128, tak jak przewiduje specyfikacja Z-Wave SDS10865. Gdy tabela jest pełna, prośba o kolejny nonce kończy się niepowodzeniem, a istniejący kod obsługuje już taki przypadek.
Nic do ustawiania
Obie zmiany chronią kontroler przed wadliwym albo złośliwym urządzeniem, które wysyła takie polecenia. Wystarczy zaktualizować oprogramowanie, gdy pojawi się nowe wydanie. To kolejne poprawki po tej z 22 października, dzięki której Z-Wave JS ignoruje alarmy wysłane przez jeden węzeł w imieniu innego.