Jak “prawie” złamałem księgowość w mBanku [aktualizacja (błąd ludzki)]

…czyli jak nie robić systemów informatycznych (na przykładzie prawdziwego zgłoszenia serwisowego do systemu superksiegowa.pl i mBanku)

Aktualizacja:

Po akcji z opublikowaniem artykułu na wykop.pl udało się zwrócić uwagę zespołu “Super księgowej”. Powodem zablokowania konta miał być błąd ludzki. System zostanie w najbliższym czasie uszczelniony i przynajmniej część zgłoszonych tutaj rzeczy zostanie poprawiona.


Prowadzenie biznesu w Polsce jest trudne. Wiedzą o tym wszyscy przedsiębiorcy. Od 2018 roku prowadzenie samodzielnej księgowości bez komputera jest praktycznie niemożliwe (ze względu na konieczność komputerowego wysyłania deklaracji VAT7 i JPK_VAT). Oprogramowanie dostarczane przez Ministerstwo Finansów działa tylko na komputerach z systemem Windows i na niektórych Linuxach. Co mają zrobić przedsiębiorcy z Mac OS X? Pocałować klamkę Urzędu Skarbowego lub prowadzić swoją księgowość w internecie. I tutaj właśnie zaczyna się cała historia…

Rynek “księgowych online” w Polsce kwitnie. Musiałem szybko znaleźć coś co wygeneruje za mnie JPK_VAT zanim dojedzie mnie Urząd Skarbowy. Sprawdziłem kilka ofert (iFirma, wFirma, inFakt, księgowość 360, super księgowa itp., itd.). O intuicyjności tych systemów nie chciałbym się wypowiadać… żaden z tych produktów nie poprowadzi cię za rękę i musisz liczyć na siebie. Jak już stwierdziłem, że kurs “jak zostać księgowym przez internet” mam zaliczony padło ostatecznie na księgowość w mBanku (a tak naprawdę na produkt “Super księgowa”, który sprytnie został upchnięty w zakładki mBankowego systemu obsługi konta). Najpierw otworzyłem konto testowe w “Super księgowej” na przyszły NIP swojej działalności, żeby sprawdzić jak to działa, a następnie otworzyłem konto w mBanku (z tym samym numerem NIP).

Na początku było nieźle, aż tu nagle…

Minęło pół roku… księgowanie faktur i zamykanie miesiąca zajmuje mi już tylko godzinę zamiast początkowych 10-ciu. Były małe zgrzyty i pewnie cała historia skończyłaby się dobrze, gdyby nie fakt że z niewiadomego powodu mój dostęp do księgowości w mBanku został nagle zablokowany.

Jakakolwiek próba uruchomienia księgowości przez mBank kończyła się komunikatem: Firma została zablokowana, albo Konto zostało zablokowane.


Nie jest fajnie prowadzić biznes z zablokowaną księgowością. Urząd Skarbowy ma to gdzieś. Musisz wystawiać faktury dla swoich kontrahentów bez względu na wszystko. Więc przez kilka dni wystawiałem faktury w Excelu (a dokładniej w jego Mac’owym odpowiedniku: Numbers), a w międzyczasie próbowałem wyjaśnić sprawę w banku.


Pierwszy rozmowa z pracownikiem infolinii w mBanku postawiła sprawę jasno:

System księgowości jest zarządzany przez podmiot trzeci. Z naszej strony wszystko wygląda w porządku.

Jednym słowem: my ten system tylko sprzedajemy z naszym kontem i kasujemy za konta biznes. Proszę sobie radzić samemu i cieszyć się naszymi lokatami 0,5%. No nic… pewno chłopy w banku siedzą i myślą jak to powiedzieć swoim klientom że następne lokaty będą w promilach :)

Pracownik z infolinii “Super księgowej” też nie starał się zrozumieć mojego problemu:

Proszę zgłosić sprawę w dziale technicznym.

Wtedy w mojej głowie zaświtało: moje konto testowe było otwarte na ten sam numer NIP, co konto w mBanku.


Kolejne maile z losowymi osobami z działu obsługi klienta potwierdziły moje obawy: konto testowe w “Super księgowej” zostało zamknięte razem z kontem księgowym w mBanku. Wystarczył ten sam numer NIP, aby moja księgowość poszła do piachu. To taki “mały” błąd w systemie.

Mijają kolejne godziny i interwencje aż w końcu ktoś ręcznie zdejmuje blokadę z mojego konta.

W czym problem?

Otóż problemów jest kilka. To nie jest jeden błachy błąd, który nie ma żadnych konsekwencji… cała sprawa to seria nieporozumień, braku chęci współpracy, oszczędzania na programistach, sprzedawania niezabezpieczonego produktu i walki o bezpieczeństwo własnych danych osobowych. Ale po kolei…

Możemy zablokować dostęp każdej osobie do księgowości w mBanku znając tylko jej numer NIP?

Systemów informatycznych nie powinno się projektować tak, żeby jedno konto użytkownika wpływało na inne. Jest to olbrzymi błąd spójności danych. Wystarczy założyć konto testowe na dowolny numer NIP który chcemy zablokować. Po kilku miesiącach “Super księgowa” zablokuje to konto i wszystkie inne produkty powiązane z danym numerem NIP (w tym księgowość w mBanku)!

Nikt nie sprawdzał mojej tożsamości na infolinii “Super księgowej”

Wykonałem kilka telefonów do działu obsługi klienta. Wystarczało, że tylko podawałem numer NIP. W którymś mailu pojawiły sięnawet załączone faktury ze wszystkimi danymi i kwotami za nieopłacone konto testowe. Mógł to robić każdy po ściągnięciu mojego NIPu z CEiDG.

Regulamin serwisu czasem znika

Jeżeli chcemy założyć konto jesteśmy przekierowywani na nieistniejący link: http://www.superksiegowa.pl/o-serwisie/regulamin/. Generalnie trzeba wiedzieć gdzie kliknąć, żeby znaleźć prawidłowy link. Jak już się doklikacie do regulaminu to jest on dynamiczny. Nie podpisujemy regulaminu przy zakładaniu konta, a musimy się na niego zgodzić. W dowolnym momencie administrator serwisu może zmienić jego treść.

Regulamin serwisu ma błędy prawne

Regulamin jest napisany pod przedsiębiorców. Zakładając konto testowe byłem jeszcze osobą fizyczną. Nikt tego nie sprawdził. Czy cokolwiek z tego regulaminu ma w takim przypadku zastosowanie?

Nikt nie weryfikuje tworzonych kont

Możemy utworzyć konto na dowolny numer NIP. Nikt nie sprawdzi naszej tożsamości. Nikt nie zażąda skanu dowodu. Nie zostanie wysłane pismo z kodem weryfikującym na nasz adres pocztowy. Jak to ładnie skwitował mój znajomy:

przecież podanie NIPu to jak podpis cyfowy i zgoda na zawarcie umowy, nie wiedziałeś? ;)

Weryfikacja adresu e-mail ma “dziury”

Możemy tworzyć konta korzystając z publicznych adresów email do których każdy ma dostęp (t.zw. “anty-spamów” lub “adresów testowych”). Przykładami takich stron są np. mailinator.com lub disposable.com. “Super księgowa” pozwala na rejestrację konta mailem z obu serwisów. Ułatwia to automatyzację całego procesu “blokowania” numerów NIP. Nie musimy ręcznie tworzyć kont email do ataku, wystarczy że wpiszemy “cokolwiek@mailinator.com” i już na stronie http://mailinator.com możemy publicznie oglądać całą pocztę wysyłaną na ten adres.

Automaty mogą tworzyć dowolną ilość kont na dowolną ilość numerów NIP

Wszystkie ważniejsze formularze (tworzenie konta, “zapomniałem hasła”, logowanie) powinny być zabezpieczone przed botami. Służy do tego t. zw. captcha — np. taka: https://www.google.com/recaptcha/intro/v3.html.

Captcha musi być mocna, inaczej boty nie będą miały problemów z jej złamaniem. Captcha z “Super księgowej” może zostać złamana najprostszym algorytmem typu OCR do pisma odręcznego.

Tak wygląda łamanie formularzy “Super księgowej” prostą aplikacją androidową.
…a tak wygląda łamanie captcha programem Google Lens.

Sam zapewnie bym użył czegoś z ML Kit’a od Google, np. tego: https://firebase.google.com/docs/ml-kit/android/recognize-text

Aż strach pomyśleć, co by było gdyby ten artykuł trafił na strony typu “niebezpiecznik.pl”, gdzie ludzie łamali by tą captchę dla zabawy.

Formularz “zapomniałem hasła” pozwala sprawdzić, czy dany email jest zarejestrowany w “Super księgowej”, czy nie

To bardzo zła praktyka. Mając bazę danych adresów email, możemy łatwo wytypować konta do następnych ataków. Oczywiście musimy dalej łamać captchę, ale jest ona taka sama jak ta z rejestracji (czyli tak, jakby jej nie było).

mBank nie widzi problemu: to nie my, to nasz partner

Złapałem się za głowę jak uświadomiłem sobie jak niewiele trzeba, żeby rozłożyć ten system na łopatki. Skonsultowałem się ze znajomym programistą-wymiataczem Markiem (pozdrowienia Marku), który potwierdził moje obawy. Dziura jest tak duża, że trzeba zawiadomić bank.

Z samego rana zadzwoniłem do mBanku. Poinformowałem o błędach, przedstawiłem scenariusz ataku i wspomniałem o 5-ciu problemach z bezpieczeństwem (2-krytyczne i 3-średnie). Do dzisiaj nie dostałem odpowiedzi…

Księgowość w mBanku jest wkomponowana w system płatności właśnie po to, żebyśmy myśleli że korzystamy z “konta z księgowością”. Czemu teraz umywać ręce?

“Super księgowa” każe płacić i nie widzi problemów z zablokowaniem innego konta (opłacanego przez mBank) klientowi

W “Super księgowej” kilkukrotnie wspominałem o błędzie, ale osoby z infolinii nie były zainteresowane genezą całego zamieszania, tylko faktem czemu moje faktury za konto testowe nie zostały opłacone! Jak ban to na całego. Byłem traktowany jak koleś, który miga się od spłaty. Przynajmniej dowiedziałem się, że mam jakieś zaległe faktury w ich systemie.

Jesteśmy księgowymi, a nie technicznymi…

Najwidoczniej ich programiści nie popełniają błędów, a moje drugie konto zostało zablokowane z jakichś tajemnych powodów… może krasnoludki nasikały na dyski twarde w serwerowni, albo zabłąkany elektron zmienił flagę na moim koncie na “nieaktywne”. Po prostu magia, gusła i efekt halloween (w tym przypadku “psikus”, bo cukierki kupi się za pieniądze z faktur :P).

Na szczęście gdzieś po drodze ruszyło ich sumienie i za nieużywane konto testowe nie każą mi dalej płacić. Chyba do nich dotarło, że nie można komuś zablokować księgowości bez powodu. Zamienienie konta testowego w konto płatne też nie było miłym zagraniem (zwłaszcza, że strona z regulaminem nie istnieje i mógł założyć je każdy znając tylko mój numer NIP!). Moje konto było zablokowane od 26-go października do 6-go listopada 2018 roku.

To kto w takim razie za to zapłaci?

No jak to kto? Pan płaci… Pani płaci… Państwo płacicie :)