NetSendo
Platform Updates

NetSendo v2.8.6: Zabezpieczone webhooki Telegrama dla Brain

NetSendo Team7 min czytania

Gdy łączysz AI do marketingu z komunikatorem, czat staje się sposobem sterowania Twoim kontem. Brain połączony z Telegramem pozwala z telefonu przełączyć agenta w tryb autonomiczny, aktualizować jego bazę wiedzy oraz zatwierdzać lub odrzucać plany kampanii. To wygodne. Oznacza też, że każdy, kto może rozmawiać z webhookiem, może zrobić to samo.

NetSendo v2.8.6 to wydanie bezpieczeństwa skupione na integracji z Telegramem. Zamyka trzy powiązane problemy, a wszystkie są najgroźniejsze na współdzielonych instancjach z wieloma kontami. Jeśli używasz Brain z Telegramem, zaktualizuj od razu.

TL;DR: NetSendo v2.8.6 zabezpiecza POST /api/telegram/webhook sekretnym tokenem Telegrama, czyli HMAC tokenu bota z kluczem APP_KEY. Aktualizacje bez tokenu dostają 403. Przyciski zatwierdzania działają tylko na oczekujących planach własnego konta i nie mogą dodać planu do kolejki dwa razy. Webhook wspólnego bota zawsze wskazuje na APP_URL. Harmonogram automatycznie zabezpiecza istniejące webhooki w ciągu pięciu minut.

🔐 Co nowego w v2.8.6

🛡️

Uwierzytelniony webhook

Aktualizacje może dostarczać tylko Telegram z poprawnym sekretnym tokenem.

✅

Zatwierdzenia w obrębie konta

Przyciski Zatwierdź/Odrzuć działają tylko na Twoich oczekujących planach.

📌

Przypięty wspólny bot

Bot całej instancji zawsze wskazuje na Twój APP_URL.

1. Webhook Telegrama przyjmuje tylko aktualizacje od Telegrama

Przed tym wydaniem POST /api/telegram/webhook był publicznym endpointem, który traktował każdy JSON jak prawdziwą aktualizację z Telegrama. Kto znał ID czatu połączonego konta, mógł podszyć się pod ten czat. Mógł wysyłać komendy takie jak /mode autonomous, /knowledge czy /disconnect, rozmawiać z Brain i naciskać jego przyciski zatwierdzania.

To trochę jak skrzynka pocztowa, która przyjmowała każdy list z Twoim nazwiskiem. Teraz każdy list musi mieć też lakową pieczęć, którą może nałożyć tylko Telegram.

Jak to teraz działa? Przy wywołaniu setWebhook NetSendo przekazuje Telegramowi sekretny token, czyli HMAC tokenu bota z kluczem APP_KEY. Telegram wysyła ten token z każdą aktualizacją w nagłówku X-Telegram-Bot-Api-Secret-Token. Jeśli nagłówka brakuje albo jest błędny, webhook zwraca 403.

POST /api/telegram/webhook HTTP/1.1
Host: netsendo.example.com
Content-Type: application/json
X-Telegram-Bot-Api-Secret-Token: <HMAC(bot_token, APP_KEY)>

{ "update_id": 123456, "message": { "chat": { "id": 987654 }, "text": "/mode autonomous" } }

Tokeny są też przypisane do botów, a nie tylko do instancji:

  • Połączony czat jest przyjmowany tylko przez bota własnego konta. Właściciel jednego bota nie może użyć jego ważnego tokenu, żeby wysyłać aktualizacje jako czat innego konta.
  • Czat, który nie jest jeszcze połączony (/start, /connect), może przyjść przez dowolnego bota skonfigurowanego na instancji, więc podłączanie nowych kont działa bez zmian.
ℹ️ Podziękowania: Problem zgłosił w odpowiedzialny sposób realtasty. Dziękujemy!

2. Przyciski zatwierdzania decydują tylko o planach własnego konta

Przyciski Zatwierdź i Odrzuć wyszukiwały zatwierdzenie wyłącznie po numerze. Przez to czat mógł zatwierdzić lub anulować plan należący do innego konta.

Teraz przycisk działa tylko na planie, który należy do konta połączonego z danym czatem i wciąż czeka na decyzję. W każdym innym przypadku pojawia się odpowiedź „Ten plan nie czeka już na Twoje zatwierdzenie”. Dodatkowo podwójne kliknięcie Zatwierdź nie dodaje już planu do kolejki dwa razy, więc przypadkowe dwa stuknięcia nie oznaczają podwójnych wysyłek.

3. Pojedyncze konto nie może już przekierować wspólnego bota

Instancja może mieć wspólnego bota ustawionego przez TELEGRAM_BOT_TOKEN. Wcześniej Setup Webhook wysyłał do Telegrama dowolny adres podany w żądaniu. Każde konto korzystające ze wspólnego bota mogło więc skierować webhook na własny serwer i odbierać aktualizacje wszystkich pozostałych kont.

Webhook wspólnego bota jest teraz zawsze ustawiany na APP_URL/api/telegram/webhook. Jeśli konto ma własnego bota, jego właściciel nadal może kierować go, gdzie chce.

💼 Dlaczego to ważne: realne scenariusze

🏢

Agencje z instancjami wielodostępnymi

Jeśli jedna instancja NetSendo obsługuje wielu klientów przez wspólnego bota, v2.8.6 nie pozwala jednemu klientowi:

  • przechwytywać rozmów Brain innych klientów przez przekierowanie bota,
  • zatwierdzać ani anulować planów kampanii innego klienta,
  • wysyłać komend do czatu innego klienta.
🛒

Zespoły e-commerce zatwierdzające kampanie na telefonie

Właściciele sklepów często zatwierdzają w Telegramie plany Brain dotyczące porzuconych koszyków czy sekwencji po zakupie. Dzięki podpisanym aktualizacjom i przyciskom ograniczonym do konta nikt obcy nie przemyci zatwierdzenia ani anulowania. Podwójne kliknięcie nie oznacza już podwójnej kampanii.

🚀

Zespoły SaaS w trybie autonomicznym

Tryb autonomiczny pozwala Brain prowadzić onboarding i sekwencje przeciw odejściom klientów przy minimalnym nadzorze. Teraz włączyć go może tylko prawdziwy, połączony czat, więc nikt z zewnątrz nie przełączy go zdalnie.

🛠️ Aktualizacja krok po kroku

  1. Zrób kopię zapasową i zaktualizuj

    Najpierw zrób kopię bazy danych, potem pobierz nowe wydanie. W Dockerze:

    docker compose pull
    docker compose up -d
  2. Sprawdź, czy działa harmonogram

    Zadanie brain:secure-telegram-webhooks w ciągu pięciu minut dodaje sekretny token do każdego bota, którego webhook wskazuje na tę instancję. Aktualizacje wysłane w tym czasie Telegram zatrzymuje i ponawia, więc żadne wiadomości nie przepadną.

  3. W razie potrzeby uruchom polecenie ręcznie

    Jeśli harmonogram nie działa, przejdź do Brain → Ustawienia → Telegram → Setup Webhook albo uruchom poniższe polecenie. Nazwa Twojego kontenera może być inna.

    docker compose exec app php artisan brain:secure-telegram-webhooks
  4. Ustaw ponownie webhooki na innych hostach

    Polecenie pomija webhooki wskazujące na inny host niż host z APP_URL. Ustaw je ponownie z panelu, żeby dostały sekretny token.

  5. Sprawdź wynik

    Sprawdź stan webhooka przez API Telegrama:

    curl https://api.telegram.org/bot<TWOJ_TOKEN_BOTA>/getWebhookInfo

    Upewnij się, że url kończy się na /api/telegram/webhook w Twojej domenie, a last_error_message nie zgłasza błędów 403. Potem wyślij botowi /start i sprawdź, czy odpowiada.

⚠️ Częsty problem: Jeśli po aktualizacji bot nagle przestał odpowiadać, webhook prawdopodobnie nie został jeszcze zarejestrowany z sekretem. Telegram dostaje wtedy odpowiedź 403. Kliknij Setup Webhook lub uruchom polecenie artisan, a zaległe aktualizacje dotrą.
⚠️ Ważne: Sekret jest wyliczany z APP_KEY. Jeśli zmienisz APP_KEY, ustaw webhooki ponownie. Inaczej Telegram będzie wysyłał stary token i dostawał 403.

🎯 Wskazówki eksperta

1
Dbaj o harmonogram

Upewnij się, że php artisan schedule:run uruchamia się co minutę przez cron lub kontener harmonogramu. Poprawki bezpieczeństwa takie jak ta na nim polegają.

2
Chroń APP_KEY jak skarb

Trzymaj go w menedżerze sekretów lub w chronionym pliku .env. Nigdy nie commituj go do repozytorium i ogranicz dostęp do niego na serwerze.

3
Daj ważnym kontom własnego bota

W agencjach osobny bot dla każdego klienta jeszcze lepiej rozdziela ruch i pozwala klientowi samemu wybrać adres webhooka.

4
Obserwuj skoki błędów 403

Loguj odpowiedzi 403 z /api/telegram/webhook albo ustaw na nie alerty. Nagły wzrost może oznaczać, że ktoś sonduje Twoją instancję.

5
Uruchamiaj testy w CI

Poprawkę pokrywa tests/Feature/TelegramWebhookSecurityTest.php. Jeśli utrzymujesz fork, trzymaj ten test w pipeline, żeby zabezpieczenie nie wróciło do starego stanu.

🌍 Również w tym wydaniu

  • ✅ Nowe komunikaty (np. odpowiedź o stanie zatwierdzenia) przetłumaczone na angielski, polski, niemiecki i hiszpański
  • ✅ Testy funkcjonalne obejmują zabezpieczenia webhooka
  • ✅ W większości instalacji nie trzeba zmieniać bazy danych ani ręcznie edytować konfiguracji

🏁 Podsumowanie

Self-hosting oznacza, że Twoje dane należą do Ciebie, ale też to, że sam odpowiadasz za ich ochronę. NetSendo v2.8.6 sprawia, że z webhookiem Brain rozmawia tylko Telegram, a każdy czat steruje wyłącznie własnym kontem. Wspólnego bota nie da się też już przekierować. W większości instalacji aktualizacja to jedno docker compose pull.

Szczegóły znajdziesz w informacjach o wydaniu v2.8.6 i w dokumentacji. Zobacz też inne integracje.

Zabezpiecz swoją instancję już dziś

Zaktualizuj NetSendo do v2.8.6, aby Twoja automatyzacja przez Telegram była bezpieczna.

#security#telegram#webhooks#netsendo-brain#self-hosted#release
Udostępnij