veinito.
PLENDE
Kontakt

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.