Dwie niewielkie zmiany w kodzie logowania Home Assistanta usuwają problemy z kolejnością operacji, przez które seria jednoczesnych żądań mogła dostać więcej prób, niż przewidują limity. Obie przygotował użytkownik GitHuba zweckj, a Franck Nijhof (frenck) scalił je do gałęzi rozwojowej 19 października 2026 o 9:33 czasu polskiego. Są oznaczone jako poprawki błędów, nie jako biuletyny bezpieczeństwa, i nie dostały numeru CVE. Obie powinny trafić do Home Assistanta 2026.11, który ma się ukazać na początku listopada.
Blokada spóźniona o kilka sekund
Po nieudanym logowaniu Home Assistant zalicza błędną próbę i blokuje adres, z którego przyszła, gdy liczba prób dojdzie do ustawionego limitu. Do tej pory najpierw wykonywał jednak odwrotne zapytanie DNS, żeby wpisać nazwę hosta do dziennika i powiadomienia, a dopiero potem zwiększał licznik. Takie zapytanie potrafi trwać kilka sekund. Przez ten czas kolejne żądania z tego samego adresu przechodziły, chociaż próba, która powinna zakończyć się blokadą, już się odbyła.
Zgłoszenie zmian #187215 odwraca kolejność. Błędna próba jest liczona, a adres blokowany po dojściu do limitu, jeszcze przed zapytaniem DNS. Blokada trafia najpierw do pamięci, a dopiero potem do pliku, więc Home Assistant odrzuci już następne żądanie. Wpisy w dzienniku i powiadomienia wyglądają tak jak wcześniej. Zmiana obejmuje wszystkie miejsca, które zgłaszają nieudane logowanie: warstwę blokowania adresów, odrzucone uwierzytelnienie żądań do API, proces logowania i uwierzytelnianie przez WebSocket.
Dwa żądania w jednym logowaniu
Zgłoszenie #187171 dotyczy samego procesu logowania. Adres POST /auth/login_flow/{flow_id} przyjmował dotąd kilka żądań naraz dla tego samego logowania. Każde z nich wykonywało cały krok na tym samym obiekcie, hasło albo kod MFA sprawdzał osobny wątek, a stan logowania, w tym licznik błędnych prób, zmieniało to żądanie, które skończyło się pierwsze. Ten licznik ma znaczenie, bo po kilku błędnych kodach logowanie jest przerywane. W module TOTP, czyli przy kodach z aplikacji uwierzytelniającej, limit wynosi pięć prób.
Teraz, jeśli logowanie obsługuje już jedno żądanie, każde kolejne dostaje odpowiedź 409 Conflict. Logowanie można kontynuować, gdy tylko pierwsze żądanie się zakończy, nawet jeśli zakończyło się błędem. Interfejs Home Assistanta wysyła żądania pojedynczo, więc zwykłego logowania zmiana nie dotyczy.
Czy Home Assistant w ogóle kogoś blokuje?
Blokowanie adresów IP jest w kodzie domyślnie włączone, ale limit prób domyślnie jest nieograniczony, więc Home Assistant zablokuje adres dopiero wtedy, gdy ustawisz konkretną liczbę. Ustawienie znajdziesz w menu „Ustawienia > System > Sieć”, w sekcji serwera HTTP: wyłącz opcję nieograniczonej liczby prób („Unlimited login attempts”) i w polu „Login attempts before ban” wpisz liczbę od 1 do 1000. Blokady nie wygasają same. Są zapisane w pliku ip_bans.yaml w katalogu konfiguracji, a żeby zdjąć blokadę, usuwasz jej wpis albo cały plik. Jeśli Home Assistant jest dostępny z internetu, a limitu nigdy nie ustawiałeś, pierwsza poprawka nic ci nie da, dopóki tego nie zrobisz.