Jak grupa veinito. dba o bezpieczeństwo
ClassKasa, CzynszOK, Kasandro i ta strona to jedna grupa, a bank łączy się w nich w ten sam sposób. Piszemy tu tylko to, co możemy pokazać: każde zdanie ma źródło w kodzie aplikacji albo na stronie dostawcy.
Stan na
Logujesz się w banku, nie u nas
Gdy łączysz konto, przechodzisz do swojego banku i logujesz się tam własnymi danymi, tak jak zawsze. Połączenie obsługuje Enable Banking Oy, licencjonowany dostawca usługi dostępu do informacji o rachunku (AIS), nadzorowany przez fiński urząd FIN-FSA. Hasła do banku nie widzą ani aplikacje grupy, ani my.
- Tylko odczyt. Aplikacje grupy korzystają wyłącznie z usługi AIS: nie mogą zlecić przelewu ani zmienić niczego na koncie.
- Zgodę potwierdzasz w swoim banku. Długość zgody ustala bank, a gdy minie, odnawiasz ją.
- Zgodę możesz cofnąć w każdej chwili w swoim banku. Co dokładnie dzieje się w aplikacji, opisujemy niżej osobno dla każdej.
Jak to wygląda w każdej aplikacji
- ClassKasa
- Połączenie konta klasy to funkcja Premium. Włącza je skarbnik i tylko skarbnik może je odłączyć, jednym przyciskiem „Odłącz bank”. Historia przelewów zostaje; skarbnik może ją potem usunąć razem z zapisaną zgodą. ClassKasa prosi o zgodę na 90 dni, a faktyczny termin podaje bank przez Enable Banking.
- CzynszOK
- To jednorazowy odczyt, bez stałego dostępu do konta: bank odczytujemy przy wystawianiu certyfikatu. Surowe dane z banku usuwamy w tej samej operacji, w której zapisujemy wynik, zanim zobaczysz ekran z wynikiem. Przy wspólnym certyfikacie zaszyfrowane dane potrzebne do obliczeń trzymamy najdłużej 72 godziny, co opisuje polityka prywatności. Zgodę na odczyt możesz cofnąć w każdej chwili.
- Kasandro
- Kasandro ma status „Wkrótce”. Jego strona opisuje te same zasady: tylko odczyt, logowanie w banku, zgoda do cofnięcia w banku i jedno dotknięcie, które usuwa wszystkie dane.
Łańcuch zaufania: na kim polegamy
Korzystamy z dostawców, którzy sami publikują, jak dbają o bezpieczeństwo. Poniżej to, co każdy pisze o sobie, z linkiem do źródła. To certyfikaty i raporty tych firm, nie nasze.
- Enable Banking Oy, połączenie z bankiem. Zarejestrowany dostawca usługi AIS pod nadzorem FIN-FSA, wpisany do rejestru EBA. Publikuje swoją politykę bezpieczeństwa informacji i pisze w niej, że w systemie zarządzania bezpieczeństwem informacji stosuje normę ISO/IEC 27001:2022. Strona dostawcy ↗
- Netlify, hosting wszystkich aplikacji grupy i tej strony. Na swojej stronie o bezpieczeństwie podaje raport SOC 2 Type 2 i certyfikat ISO 27001. Strona dostawcy ↗
- Neon, baza danych Postgres aplikacji. Na stronie o zgodności wymienia raporty SOC 2 (Type 1 i Type 2) oraz certyfikaty ISO 27001 i ISO 27701. Strona dostawcy ↗
- Stripe, płatności w ClassKasie i CzynszOK. Pisze, że został certyfikowany na poziom PCI Service Provider Level 1 i że co roku powstają jego raporty SOC 1 i SOC 2 Type II. Strona dostawcy ↗
Co robimy my
Tylko to, co da się sprawdzić w repozytoriach. Skan, który znajdzie coś nowego, przerywa build, a zmiana jest scalana dopiero po zielonym wyniku. Gdzie piszemy „w każdym pull requeście”, chodzi o pull requesty ze zmianą kodu; zmiany tylko w dokumentacji i treściach przechodzą skróconą ścieżkę. Szczegóły techniczne, które pomagałyby atakującemu, zostawiamy poza tą stroną.
ClassKasa Działa
- W każdym pull requeście przerywają build przy nowych ustaleniach: analiza statyczna (Semgrep, poziom ERROR), skany zależności (npm audit, poziom krytyczny; OSV-Scanner), wyszukiwanie sekretów (gitleaks, TruffleHog) i pasywny skan działającej aplikacji narzędziem OWASP ZAP (Baseline).
- Punkty dostępu API są wpisane w macierz uprawnień (sprawdza to CI), a testy sprawdzają, że jedna klasa nie dosięgnie danych drugiej.
- Nagłówki bezpieczeństwa HTTP, między innymi HSTS, są ustawione w konfiguracji aplikacji.
CzynszOK Beta
- W każdym pull requeście przerywają build przy nowych ustaleniach: analiza statyczna (Semgrep, poziom ERROR), skany zależności (npm audit, poziom krytyczny; OSV-Scanner), wyszukiwanie sekretów (gitleaks, TruffleHog) i pasywny skan ZAP (Baseline) stron dostępnych bez logowania.
- Model zagrożeń z 6 października 2026 (diagram przepływów danych, STRIDE, LINDDUN; status „propozycja”) i macierz uprawnień opisane w repozytorium.
- Nagłówki bezpieczeństwa HTTP (CSP, HSTS, zakaz osadzania w ramkach) są ustawione w kodzie aplikacji.
Kasandro Wkrótce
- W każdym pull requeście przerywają build przy nowych ustaleniach: analiza statyczna (Semgrep, poziom ERROR), skany zależności (npm audit, poziom krytyczny; OSV-Scanner uruchamia się przy zmianie zależności, na main i co tydzień), wyszukiwanie sekretów (gitleaks, TruffleHog) i pasywny skan ZAP (Baseline) zbudowanej strony (marketing, blog i strony prawne; przepływu z bankiem jeszcze nie ma).
- Model zagrożeń z 10 października 2026 opisuje projektowany system i ma status „propozycja”, bo produkt jeszcze nie działa publicznie.
- Nagłówki bezpieczeństwa HTTP (CSP, HSTS, zakaz osadzania w ramkach) są ustawione w kodzie aplikacji.
veinito.com
- Ta strona jest statyczna: bez bazy danych i bez zewnętrznych skryptów. Test w CI przerywa build przy nowych ustaleniach, także przy zewnętrznym skrypcie. Strona działa ze ścisłą polityką CSP i HSTS.
W ClassKasie, CzynszOK i Kasandro co tydzień Dependabot otwiera zgrupowane pull requesty z aktualizacjami zależności. Każdy przechodzi przez ten sam CI, który przerywa build. W CzynszOK i Kasandro scala je człowiek. W ClassKasie poprawki typu patch i aktualizacje z alertów bezpieczeństwa scalają się same dopiero po przejściu wymaganych sprawdzeń, a większe zmiany (major) zawsze czekają na człowieka. Cotygodniowa rutyna zbiera otwarte pull requesty w jeden i pracuje nad nim, aż przejdą wymagane sprawdzenia.
Znalazłeś lukę? Napisz do nas
Adres do zgłoszeń to ten z pliku security.txt tej strony: hello@veinito.com. Napisz, co znalazłeś i jak to odtworzyć.
Każda aplikacja ma własny plik security.txt (linki niżej). Prosimy, żeby nie testować na cudzych danych: opis kroków do odtworzenia w zupełności wystarczy.
Testy bezpieczeństwa: stan na dziś
Pasywny skan OWASP ZAP (Baseline) uruchamia się w każdym pull requeście w ClassKasie, CzynszOK i Kasandro i przerywa build przy nowych ustaleniach. Skan się nie loguje, więc ekranów po zalogowaniu nie obejmuje. Czym jest ZAP i co sprawdza, opisujemy w osobnym artykule.
ClassKasa: 29 maja 2026 (wersja 3.27.0) trafiły do niej poprawki z autoryzowanej rundy testów penetracyjnych, którą przeprowadził właściciel z Claude Code i otwartoźródłowym zestawem pentest-ai-agents (strona w katalogu): 8 poprawek, w tym 3 o wysokiej wadze (kontrola ról po stronie serwera, oczyszczanie treści czatu, ograniczenie kwot w uzgadnianiu płatności). Tego samego dnia (3.27.1) powtórzono wszystkie ataki: poprawki wytrzymały, znaleziono i zamknięto 3 podobne luki tych samych klas, każdą z testem regresji, który najpierw był czerwony, a potem zielony. Dotyczy to tylko ClassKasy, a przebieg opisujemy w osobnym artykule.
Nie mamy certyfikatu ISO 27001 ani raportu SOC 2 dla grupy. Certyfikaty dostawców z listy wyżej należą do nich, nie do nas.
Strony bezpieczeństwa aplikacji
Każda aplikacja opisuje bezpieczeństwo po swojemu, bo robi co innego z Twoimi danymi.