e-Kasa hack

 

Všetko o hacku e-Kasa, čo sa nikdy nedozviete od Finančnej správy

Čo je e-Kasa?

  • Online registračná pokladnica pozostávajúca z PPEKK (môže byť software alebo hardware) a CHDÚ modulu masívne používaná na celom Slovensku
  • 16 mil EUR prispeli daňoví poplatníci a 60-80 mil EUR podnikatelia
  • Takmer polovica e-Kasa riešení používa CHDÚ modul od spoločnosti CHDU s.r.o. (zdroj https://www.financnasprava.sk/_img/pfsedit/Dokumenty_PFS/Podnikatelia/eKasa/2019/2019.11.27_eKasa_cert.pdf )
  • e-Kasa komunikuje s CHDÚ modulom cez seriovú linku (RS232)
  • Podľa špecifikácie e-Kasa:
    • "Podpisový certifikát podnikateľa (súčasť autentifikačných údajov) musí byť pri podpisovaní dátových správ vyžiadaný len z CHDÚ, ak CHDÚ nebude prístupné, PPEKK nesmie podpísať dátovú správu."

Čo je CHDÚ

  • Špeciálna SD pamäť, do ktorej sa dáta môžu len zapisovať, v žiadnom prípade sa nesmie dať čokoľvek už zapísané pozmeniť, prípadne odstrániť.
  • Zapisujú sa sem všetky vystavené doklady (dátové správy zaslané na server FS), ako aj všetky dáta, ktoré sú zaslané na tlačiareň a následne vytlačené.
  • V prípade výpadku internetu sa pokladničný doklad vo forme dátovej správy (XML) uloží do CHDÚ (tzv. off-line doklad). Po odstránení problémov s pripojením k serveru FS ich následne pokladňa automaticky odošle (prípadne na pokyn obsluhy)
  • CHDÚ primárne slúži na ochranu ešte neodoslaných dokladov – zabraňuje ich dodatočnej úprave, prípadne úplného vymazania ešte pred odoslaním. Pri vystavení dokladu sa do CHDÚ najskôr ukladá dátová správa (zhodná s tou, ktorá sa posiela na server FS), následne sa ukladá aj tlačová úloha – vygenerovaný pokladničný doklad aj s QR kódom.

Proces certifikácie

  • Na FS sú odovzdané kompletné zdrojové kódy programu PPEKK, elektronicky sa podpisuje (podpis slúži na overenie, či sa v pokladni používa softvér, ktorý bol certifikovaný).
  • Túto požiadavku musí splňovať aj samotný výrobca CHDÚ – nesmie existovať nástroj, pomocou ktorého by sa dalo niečo pozmeniť alebo vymazať.
  • PPEKK a CHDÚ z hľadiska certifikácie vždy predstavujú jeden celok, ktorý sa certifikuje spoločne.
  • FS dlhodobo spôsobovalo a spôsobuje problémy výrobcov e-Kasa o certifikáciu ich vlastných CHDÚ modulov - ICJK disponuje kópiou emailu o tom, že FS odporúča výrobcom namiesto ich vlastného riešenia použiť riešenie od spoločnosti CHDU s.r.o.

Hack e-Kasa

  • Analýza bezpečnosti riešenia e-Kasa s CHDÚ modulom bola vykonaná na základe žiadosti od ICJK (Investigatívne Centrum Jána Kuciaka)
  • Použili sme tzv. čiastočné "Full disclosure" zverejnenie (zdrojový kód emulátora sme nezverejnili) a to z nasledujúcich dôvodov:
    • Vysoké riziko predžalobných výziev (ktoré sme v minulosti obdržali od DP Praha)
    • Vysoké riziko žaloby za ohováranie (FS doteraz túto zraniteľnosť neakceptovala, aj keď je proti nej celá technická komunita)
    • FS o tejto zraniteľnosti vedeli (a sami ju zaviedli tým, že pre riešenie od spoločnosti CHDÚ s.r.o. dali výnimku šifrovania)

Štandardné pripojenie CHDÚ k počítaču

Pripojenie CHDÚ s použitím emulátora

Emulátor CHDÚ

  • Ide o tzv. "null-modem" emulátor - softvérová dvojica portov (je možné použiť voľne dostupné com0com alebo komerčné, napríklad od firmy Eltima)
  • V PPEKK sa nastaví prvý z dvojice, v emulátore CHDÚ druhý port - vďaka tomu, že všetky dáta sa z PPEKK budú posielať len do emulátora
  • Najskôr je potrebné vyklonovať obsah reálneho CHDÚ,následne je sériová komunikácia softvérového CHDÚ odemulovaná
  • Emulátor sa tvári ako skutočný CHDÚ - zapisuje do svojho virtuálneho CHDÚ (súbor na disku počítača) jednotlivé dátové pakety
  • Tlač dokladu neprebieha cez fyzické CHDÚ (tlačiareň je z neho odpojená), ale priamo emulátor zasiela dáta do tlačiarne, ktorá je pripojená k počítaču cez RS-232

Prečo treba klonovať obsah CHDÚ?

  • Výrobca si môže CHDÚ "chrániť" zapísaním určitého zašifrovaného dátového bloku, ktorý si následne kontroluje - skopírovaní týchto údajov dosiahne emulátor práve to, že mu PPEKK dôveruje. To isté platí o zápise autentifikačných údajov podnikateľa - ak ich PPEKK ukladá zašifrované, emulátor vráti tieto zašifrované údaje.

Čo ak si PPEKK kontroluje výrobné číslo CHDÚ?

  • Emulátor musí PPEKK taktiež vrátiť korektné výrobné číslo fyzického CHDU, preto si ho pri klonovaní ukladá do samostatného súboru.

Nastavenie emulátora

Ďalšie funkcie emulátora CHDÚ

  • Opätovná tlač originál dokladov (ktoré je možné opakované použiť v účtovníctve - odhalí to len krížová kontrola)

Zhrnutie

  • Ak nie je komunikácia medzi PPEKK a CHDÚ šifrovaná (teda autenticita CHDÚ overovaná zo strany PPEEK), tak celé CHDÚ z bezpečnostného hľadiska nedáva zmysel (maximálne z funkčného ako úložisko dát)
  • Celý hack je možné realizovať na neupravených pokladničných systémoch a certifikovaných eKasa riešeniach! (stačí odpojiť kábel a prepojiť tlačiareň)
  • Výrobcovia PPEKK nedokážu detegovať, že nekomunikujú so skutočným, ale emulovaným CHDÚ
  • Prípadná digitálna forenzná analýza nemusí nič odhaliť, lebo "falošné dáta" v emulovanom CHDÚ môžu byť uložené len v RAM
  • A kedže proces rozširovanie eKasa s CHDÚ modulom bude podľa FS pokračovať, všetci podnikatelia si naďalej pod hrozbou zákona budú musieť kupovať CHDÚ modul, ktorý z bezpečnostného hľadiska nedáva za súčasných okolností zmysel.

Reakcia FS: Chránené dátové úložisko nemá žiaden podstatný vplyv na bezpečnosť e-Kasa systému!

  • CHDÚ modul bol zavedený kvôli tomu, aby podnikatelia nedokázali podvádzať v offline režime a jednotlivé doklady sa tam naďalej ukladali a následne po obnovení spojenia preposlali na server Finančnej správy. Emulátor CHDÚ realizovanie tohto podvodu ale umožňuje. CHDÚ obsahuje identifikačné a autentifikačné údaje podnikateľa, ktoré musí PPEKK pri vystavovaní (generovaní) dokladu použiť.
  • „Podpisový certifikát podnikateľa (súčasť autentifikačných údajov) musí byť PPEKK pri každom podpísaní dátovej správy vyžadovaný len z CHDÚ, ak CHDÚ nebude prístupné, PPEKK nesmie podpísať dátovú správu.“

Pri použití emulátoru napriek tomu plne certifikované riešenie doklad vytvorí!
 

Finančná správa dokáže detegovať odpojenie CHDÚ modulu a emulátor CHDÚ podľa prerušeného číselného radu dokladov

  • Pokladničný program PPEKK (a teda ani Finančná správa) nedokáže detegovať odpojenie CHDÚ modulu, kedže CHDÚ emulátor ho kompletne emuluje.
  • V CHDÚ je posledný doklad číslo 6 (a doklad bol zaslaný na server e-Kasa). V tejto chvíli urobíme kópiu CHDÚ a to následne odpojíme. V režime off-line na emulátore bude PPEKK pokračovať v číselnom rade a to 7,8,9 … Keď sa rozhodneme, že ideme vystavovať originálne doklady, opäť pripojíme CHDÚ. PPEKK si pri spustení pokladne zisťuje posledne vystavený doklad uložený v CHDÚ – tu zistí, že posledný doklad bol 6 a ďalšiemu priradí 7, 8, 9 atď … Server finančnej správy bude evidovať posledný doklad 6 a potom mu budú postupne pribúdať 7,8,9. V žiadnom prípade sa nepodarí skontrolovať doklady podľa čísla, pretože to bude pokračovať v číselnom rade.

FS dokáže detegovať neplatný doklad, ktorý nebol do 48 hodín (a viac) zaslaný na server FS

Toto je pravda. Potrebné si uvedomiť, že zo samotného falošného dokladu FS nedokáže priamo zistiť, ktorý predajca tento doklad vyhotovil (predajca má totiž nad jeho obsahom plnú kontrolu). Na to, aby FS dokázala identifikovať predajcu, ktorý vystavuje falošné doklady využitím CHDÚ emulátora, musia byť splnené:

  1. Zákazník musí uvedený doklad overiť minimálne až po 48 hodinách, kedy sa dozvie, že doklad nebol zavedený na Finančnej správy a je teda neplatný (väčšina zákazníkov toto nikdy nespraví).
  2. Zákazník po tom ako sa dozvie, že jeho doklad je neplatný, tak musí explicitne kontaktovať FS a informovať ich, ktorý presne predajca mu daný falošný doklad vyhotovil. Až potom dokáže FS vykonať jeho kontrolu. Aj v tejto situácii je veľmi ťažké dokázať danému predajcovi, že daný falošný doklad mu vydal on (obvykle stačí keď to poprie).

FS tvrdí, že šifrovanie medzi e-Kasa a CHDÚ nebolo povinné a nedávali žiadne výnimky

 

Reakcia FS: Hackeri urobili zásah do e-Kasa riešenia nejakého výrobcu, takže to už nie je ďalej certifikované riešenie, ale čierna upravená pokladnica

  • V tomto sa Finančná správa zásadne mýli - my sme neurobili žiadny zásah do certifikovanej časti, všetko, čo sme spravili, bolo, že sme prehodili kábel tlačiarne z CHDÚ do počítača - triviálnu vec, ktorú dokáže spraviť úplne každý.
  • Ďalej by sme chceli zdôrazniť, že uvedená zraniteľnosť sa netýka jedného konkrétneho výrobcu, ale všetkých výrobcov pokladníc, ktorých PPEKK je spustený na počítači (máme k dispozícii verziu pre Windows, tento princíp sa môže uplatniť aj pre Linux) a používajú nešifrovanú komunikáciu s CHDU (v tomto prípade CHDU firmy CHDU, s.r.o.).

Reakcia FS: Analytika všetko odhalí!

  • Analytika je síce pekná vec a určite pre Finančnú správu užitočná, avšak keď občas niekto nedá doklad, tak neodhalí nič.
  • Finančná správa očividne predpokladá, že každá e-Kasa pokladňa je pripojená na ich servery nonstop. To ale nie je pravda, posielanie dokladov na ich servery je realizované cez API, ktoré funguje tak, že e-Kasa sa tam pripojí, pošle bloček a zase odpojí.
  • Väčšina e-Kasa pokladní je za NATom a na dané API sa pripája cez TCP spojenie, len keď vystavuje bloček - FS teda nedokáže odhaliť, či je e-Kasa odpojená kvôli tomu, že nemá akurát žiadneho zákazníka alebo používa práve emulátor CHDÚ

Zástupcovia FS tvrdia, že to, čo zistili etickí hackeri, nie je žiadny hackerský útok:

  • Išlo o zásah do hardvérového komponentu pokladnice, ktorá už neobsahuje komponenty, na ktoré bola udelená certifikácia.
  • Vytvorili teda úplne novú pokladnicu, ktorá s eKasou nemá nič spoločné, pretože nie je certifikovaná.
  • FS ubezpečili, že systém finančnej správy napadnutý v žiadnom prípade nebol a v popisovanom príklade išlo len o príklad individuálnej pokladnice, ktorá neobsahovala všetky prvky, na ktoré bola udelená certifikácia. Takúto pokladnicu už nie je možné považovať za pokladnicu eKasa.

Toto vyjadrenie je podobné, ako keď budete mať vážnu nehodu v hacknutom aute a výrobca na to zareaguje slovami:

Hackeri vám cez chybu v aute pozmenili vaše auto na niečo, čo už nie je naše certifikované auto, ale je to vlastne už úplne nové auto. A keďže ste mali nehodu v novom necertifikovanom aute, tak my za nič neručíme a stojíme si za tým, že naše certifikované auto nehodu nespôsobilo.

FS naďalej žije v "paralelnom vesmíre":

Zverejní tlačovú správu, kde chýba, že

  • samotný problém v bezpečnosti architektúry e-Kasa a CHDÚ, o ktorom sme hovorili, si uvedomili a akceptovali aj samotní technickí ľudia na FS
  • za otvorením API a zrušením CHDÚ modulu stojí technická verejnosť (zastupovana okrem iného Slovensko.Digital) ako aj množstvo výrobcov e-Kasy a zástupcov podnikateľov, ktorí boli reálne na stretnutí na našej strane
  • tí, ktorí boli za zachovanie CHDÚ modulu, tak vyzdvihovali jeho funkčný, nie bezpečnostný význam (ktorý tam reálne nie je)
  • akceptovanie a ospravedlnenie sa zo strany FS, že sme demonštrovali reálnu zraniteľnosť, ktorá z celého eKasa + CHDÚ robí paškvil a jeho bezpečnosť degraduje na úroven českého EET (Chránené dátové úložisko nemá reálne žiadny bezpečnostný význam)

Bonus zraniteľnost

  • Pri posielaní bločka do tlačiarne napríklad káblom, je možné jeho klon poslať do tlačiarne napríklad cez bluetooth a dať ho ďalšiemu klientovi. Bude mať všetky parametre, ako ten predchádzajúci, takže bude bez problémov overiteľný Finančnou správou. Čas bude tiež sedieť.
  • Toto sa dá špeciálne zneužiť hlavne v reštauráciách, kde sú na bločku napísané opakované a generické informácie ako menu1, menu2, pivo 0.5l apod. Predajca dokáže vypustiť reálny blok každých 15-20 minút a zvyšným ľuďom rozdávať klon bločku, ktorý je plne validný. 
  • V emulátore, ktorý some vytvorili, je možné robiť kópie originál dokladov prakticky neobmedzene.
  • A Finančná správa toto nedokáže bez fyzického kontrolného nákupu nijako jednoducho odhaliť. Obzvlášť preto, lebo všetky bločky budú 100% validné.

 

 

Ďakujem za pozornosť!
 

info@nethemba.com