21 august 2026 / 18 minút čítania
V Citadelo sme otestovali desktopového klienta, mobilnú aplikáciu aj serverovú časť. Najzávažnejší nález sa skrýval v niečom, čo bežný človek nemusí považovať za vstupný vektor od útočníka.
Autogram od Slovensko.Digital a jeho členskej firmy Freevision vznikol z frustrácie zo štátnych nástrojov na elektronický podpis, pri ktorých veľká časť ľudí podpisovanie vzdá skôr, než ho dokončí. Slovensko.Digital je občianske združenie, ktoré už viac ako 10 rokov tlačí na kvalitu štátnych digitálnych služieb, a Autogram je jeden z jeho vlastných nástrojov. Robí jednu vec: podpíše dokument s takou právnou silou ako u notára, a urobí to zrozumiteľne, na počítači aj v mobile. Spolieha sa naň veľa ľudí a Autogram používajú aj ľudia z Citadelo. Dopad bezpečnostnej chyby sa v kybernetickej bezpečnosti obvykle meria v ukradnutých dátach alebo v službe, ktorá prestane fungovať. Tu je iného druhu: spochybní právnu silu podpisu a s ňou dôkaz o tom, kto čo podpísal.
Autogram má pritom výhodu, akú väčšina testovaných aplikácií nemá. Je open source, vyvíja sa na verejnom repozitári a roky si ho pod lupu berie slovenská IT komunita dobrovoľne a bezplatne. To je presne to prostredie, v ktorom by sa chyby mali nájsť samé. Zaujímalo nás, čo v ňom ostane, keď naň nasadíme cielené penetračné testovanie.
"Autogram má približne 9000 aktívnych používateľov a v priemere sa cez aplikáciu Autogram v mobile podpíše 100 dokumentov denne." Marek, programátor Slovensko.Digital
Spolupráca mala dve časti. Najprv sme testovali desktopového klienta, a to podľa metodiky OWASP Thick Client Security. Potom nasledoval penetračný test mobilnej aplikácie a spolu s ňou aj serverovej časti, ktorá ju obsluhuje podľa metoditky OWASP Mobile Top 10.
Serverová časť je webové API, s ktorým mobilná aplikácia komunikuje. Štyri z jedenástich nálezov mobilného testu sú práve v API a nie v aplikácii v telefóne.
Mobilnú časť pritom netvorila jedna aplikácia, ale štyri samostatné celky: verzia určená priamo pre Android, verzia pre iOS, spoločná verzia, ktorá je pre obe platformy rovnaká, a serverové API. Každá z nich má vlastné rozhrania navonok, a preto z mobilného testovania vyšlo podstatne viac nálezov než z desktopového. Testovali sme v polovici mája 2026, na verzii 1.5.0 (build 49), teda na tej, ktorú v tom čase mali ľudia nainštalovanú z Google Play a App Store.
K celému tomuto kódu sme mali prístup ako ktokoľvek iný. Verejná nie je len mobilná aplikácia, ale aj serverová časť, ktorá ju obsluhuje. Kombinovali sme automatizované nástroje s manuálnym testovaním: nástroje ukážu podozrivé miesta, ale až manuálny penetračný test rozhodne, ktoré z nich sú naozaj zneužiteľné. Keďže Autogram robí kryptografické operácie, ktoré majú právne následky, sústredili sme sa na dôvernosť dát, integritu aplikácie počas behu a odolnosť komunikácie medzi službami.
Pri desktopovom klientovi sme prešli lokálne uložené dáta, ochranu pamäte aplikácie, spracovanie a náhľad súborov aj to, či sa dá aplikácii pri štarte podstrčiť cudzia knižnica. Držalo všetko.
Výsledkom bola jedna zraniteľnosť s nízkou závažnosťou. Aby Autogram vedel podpísať dokument, ktorý mu pošle webová stránka, beží na počítači ako malá lokálna služba a takýmto stránkam odpovedá. To je zámer, nie chyba. Že sa jej smie ozvať ktorákoľvek stránka, je vedomé rozhodnutie vývojárov, bez ktorého by prepojenie s inými službami nefungovalo.
Problém bol v tom, na čo všetko tá služba odpovedala. Komukoľvek, kto sa spýtal, prezradila presnú verziu nainštalovaného Autogramu a zoznam ovládačov pre čítačky kariet, ktoré má používateľ v počítači. Útočník si tak vie nepozorovane zistiť, čo presne má obeť nainštalované. Ak zistí, že obeť má neaktualizovanú verziu so známou chybou, môže zaútočiť presne na ňu namiesto strieľania naslepo.
„Natrafili sme na desktop aplikáciu, ktorá bola naozaj bezpečná. Ako sa neskôr ukázalo, veľká časť slovenskej IT komunity ju otestovala dobrovoľne pred nami a ešte viac ľudí ju reálne používa.“ Nazarii, penetračný tester v Citadelo
Verejný kód má hranicu a mobilná aplikácia nám presne ukázala, kde leží. Kód je plán. Z plánu sa dá prečítať, ako je funkcia napísaná. Čo naozaj urobí s dátami od inej aplikácie, sa ukáže až vtedy, keď jej tie dáta naozaj prídu.
Mobilná aplikácia totiž nie je desktopová aplikácia s menším displejom. Má rozhrania, ktoré na počítači neexistujú: intenty, content providery, deep linky a systémové dialógy na výber súborov. Sú to mechanizmy, ktorými si aplikácie v telefóne navzájom podávajú dáta a súbory. Každý z nich je zároveň miesto, kam môže niečo poslať aj aplikácia, ktorú si tam nikto nepozval. Tam sme sa preto pozerali najpozornejšie.
Jednu kritickú zraniteľnosť, jednu s vysokou závažnosťou, jednu strednú, štyri nízke a štyri zistenia na úrovni poznámky, ktoré slúžia ako vylepšenie a pozdvihnutie bezpečnosti aplikácie ako takej.
Takmer všetky vážne nálezy mali jednu spoločnú príčinu: aplikácia neoverovala, čo jej prichádza.
Kritický nález sa týkal práve takého vstupu, konkrétne názvu súboru. Autogram v mobile je navrhnutý tak, aby mu dokumenty mohli posielať iné aplikácie v telefóne, napríklad e-mail alebo správca súborov, alebo cez možnosť „zdieľať“. Spolu so súborom si od nich prevezme aj jeho názov a pod tým názvom si ho uloží medzi svoje dočasné súbory.
Tento názov však nikto nekontroloval, Autogram v mobile mu dôveroval. Škodlivá aplikácia tak namiesto názvu ako „zmluva.pdf“ mohla poslať text, ktorý sa nechová ako názov, ale ako cesta vedúca von z predvoleného adresára pre dočasné súbory. Autogram ho poslušne použil a súbor odložil tam, kam mu názov súboru povedal. Takto sa dal prepísať súbor v privátnom úložisku Autogramu, vrátane toho, v ktorom si aplikácia pamätá nastavenia. Sú v ňom napríklad údaj o tom, či používateľ potvrdil podmienky, aj predvoľby, s ktorými pristupuje k podpisovaniu.
Nález s vysokou závažnosťou išiel opačným smerom, teda von. Autogram v mobile dôveroval odkazom na súbory, ktoré dostal zvonka, a neoveroval, či odkaz smeruje na súbor, ktorý používateľ naozaj má vidieť. Zneužiť sa to dalo viacerými cestami.
Jedna z nich vyzerala takto. Keď v Autograme v mobile kliknete na priloženie dokumentu, telefón vám ponúkne zoznam aplikácií, z ktorých si súbor môžete vybrať. Škodlivá aplikácia sa do toho zoznamu dokáže dostať tak, že vyzerá ako jedna z bežných možností. Ak si ju používateľ vyberie, môže Autogramu namiesto dokumentu vrátiť odkaz na jeho vlastný chránený súbor. Autogram k tomu súboru prístup má, takže ho otvorí a pošle na server, čím súbor opustí chránené úložisko telefónu.
Vyšlo to aj vtedy, keď aplikácia súbor napokon odmietla. Nepodporovaný typ Autogram v mobile zobraziť nedokázal a používateľovi ukázal chybu, ale obsah sme už našli v jeho komunikácii so serverom. Chybové hlásenie na obrazovke teda nezabránilo tomuto úniku dát.
Stredný nález sa týkal logovania. Aplikácia odosielala ladiace záznamy do externej služby na zber chybových hlásení. V logoch sa však ocitli aj citlivé dáta: identifikátor dokumentu a jeho šifrovací kľúč. Von odišli až vtedy, keď aplikácia spadla, pretože záznamy odchádzajú spolu s hlásením o páde. Kto má tieto dva údaje, dostane sa k dokumentu a nič iné na to nepotrebuje. Zapísať ich do logu je to isté ako zapísať tam prihlasovacie údaje.
Na jednom z menej závažných nálezov sa dobre vidí, ako sa z technickej chyby stane sociálny útok. Aplikácia zobrazovala obsah dokumentu tak, ako prišiel, bez akejkoľvek kontroly. Dalo sa doň preto vložiť funkčné HTML (HTML injection), čiže kód, ktorý sa na obrazovke vykreslí ako skutočná časť rozhrania. Útočník tak dokázal priamo nad oficiálnym podpisovým rozhraním vykresliť falošný dialóg, napríklad výzvu na zadanie PIN kódu k eID. Z technickej chyby sa tak stáva pripravená útočná plocha na phishing.
„Dobre napísaný kód, ktorý si prečítalo množstvo ľudí, je veľká výhoda. Neprezradí ale, ako aplikácia spracuje vstup, ktorý nemá tvar, aký čakala. Bezpečnosť sa nedá prečítať. Dá sa len vyskúšať.“ Denis, penetračný tester v Citadelo
Zvyšok nálezov tvorili chýbajúce ochranné opatrenia. Samy o sebe nie sú zraniteľnosťou, fungujú ako prídavné mechanizmy, ktoré útočníkovi sťažujú a spomaľujú prácu. Autogram napríklad nezisťoval, či zariadenie alebo sieť neboli kompromitované. Väčšina ľudí to pozná z bankových aplikácií: na telefóne s odomknutými systémovými právami sa mnohé z nich vôbec neotvoria a keď zistia, že im do komunikácie niekto zasahuje, spojenie samy ukončia. Aplikácia, ktorá tieto mechanizmy má, tak vie na kompromitovanom zariadení odmietnuť podpisovanie.
Výsledok testu nie je len zoznam nálezov. Patrí doň aj to, čo sme skúsili a neprešlo, pretože práve tam je vidieť, čo v aplikácii držalo a čo v nej niekto navrhol správne a bezpečne.
Zápis do ľubovoľného súboru sme neposunuli ďalej. Pri takýchto chybách sa útočník niekedy dostane až k ovládnutiu celého telefónu, musí na to však nájsť knižnicu, ktorú si aplikácia načítava pri štarte a ktorú vie prepísať. Autogram takú knižnicu nemá a inú cestu k získaniu plnej kontroly nad zariadením sme nenašli.
Napriek tomu sme hodnotenie neznižovali. Nález zostal kritický, pretože prepisovať nastavenia aplikácie, ktorou ľudia podpisujú právne záväzné dokumenty, je z nášho pohľadu riziko, ktoré sa akceptovať nedá.
K vnútorným rozhraniam aplikácie sme sa nedostali priamo. Autogram ich má pred ostatnými aplikáciami v telefóne chránené, a to je vedomé rozhodnutie, nie náhoda. Cudzia aplikácia si od nich súbor vyžiadať nemôže. Museli sme ísť obchádzkou a prinútiť vnútornú časť samotného Autogramu, aby si súbor vyžiadala za nás.
Podobne to bolo na serverovej časti. Vstupná kontrola na serveri existuje. Keď sme podstrčili súbor, ktorý nie je dokument, server ho odmietol. Zafungovala presne tak, ako má.
Jeden serverový nález sme nechali ako otvorenú otázku. Server posiela notifikácie na adresu, ktorú mu zariadenie zadá pri registrácii, a tú adresu si nekontroluje. Aspoň teoreticky sa tým otvára cesta poslať požiadavku aj tam, kam nemá. Zneužitie sme ale nepreukázali, a tak nález zostal na najnižšej úrovni s odporúčaním, aby si to vývojári overili interne. Nálezy, ktoré nedokážeme, nenadhodnocujeme.
Oba najzávažnejšie nálezy majú jedno podstatné obmedzenie: nedajú sa spustiť na diaľku. Útočník musí mať v telefóne obete vlastnú aplikáciu, alebo musí obeť otvoriť jeho odkaz. Na závažnosti to neubralo, škodlivé aplikácie sa šíria aj mimo oficiálnych obchodov Google Play a App Store. Zužuje to len okruh útočníkov: nie je to náhodný človek z internetu, ale niekto, kto sa do telefónu už raz dostal.
Je teda podpis Autogramom v poriadku ako celok? Na to náš test odpovedať nemôže. Testovali sme Autogram a server, ktorý ho obsluhuje, nie občiansky preukaz a nie štátne komponenty, ktoré podpis overujú. Tie nie sú systémami Slovensko.Digital a bez zadania od ich správcu sa do nich nesiaha.
Ani jeden z dvoch najzávažnejších nálezov by sám skener nepotvrdil, a to je práve ten rozdiel medzi automatizovaným skenom zraniteľností a manuálnym penetračným testom. Skener prečíta kód a označí podozrivé miesto. Nedokáže preukázať, že sa dá zneužiť, ani čo tým útočník získa.
Aby sme zápis do ľubovoľného súboru dokázali, bolo potrebné vytvorenie vlastnej škodlivej aplikácie, ktorá sa Autogramu predstaví ako zdroj dokumentu a podstrčí mu vopred pripravený názov súboru. Pri unikaní súborov sme si postavili vlastnú aplikáciu na výber súborov a prihlásili ju do systému tak, aby si ju používateľ mohol vybrať namiesto tej pravej. Skener nepostaví protihráča. Práve preto sa pri etickom hackingu útočný nástroj vyrába na mieru konkrétnemu cieľu, inak sa takáto chyba nedá ani potvrdiť, ani vyvrátiť.
Test má hodnotu až vtedy, keď sa podľa neho niečo zmení. Tu sa dá presne ukázať, čo sa zmenilo.
Vďaka verejnému kódu sme sa nezastavili pri prejave problému, ale došli k jeho príčine. To je rozdiel medzi odporúčaním „doplňte validáciu vstupu“ a presným miestom, kde chýba.
Vývojári pripravili opravy, ktoré nami zistené nedostatky odstraňujú. Z tohto dôvodu odporúčame aktualizovať Android aplikáciu Autogram v mobile čo najskôr.
Zaujímavejší než rýchlosť je totiž spôsob. Namiesto záplaty na každom mieste, kde sa problém prejavil, pridali jednu súčasť, ktorá najprv zistí, kam odkaz na súbor naozaj vedie, a až potom overí, či je to miesto na zozname povolených. Opravili tak príčinu, nie jeden jej prejav.
Výhodou otvoreného vývoja je, že toto všetko si vie overiť každý. Nemusíte veriť nám ani im, ten pull request je verejný. https://github.com/slovensko-digital/avm-app-flutter/pull/119

Kritický zápis do súboru, unikanie lokálnych súborov, šifrovací kľúč v logoch aj HTML injection sú opravené v aktuálnej verzii Autogramu v App Store aj Google Play. Ak ho používate, stačí ho mať aktualizovaný.
Jeden nález ale zostáva otvorený a nie je to nedôslednosť. V našej správe má najnižšiu možnú závažnosť, teda len formu odporúčania, a aj tak je z celého testu najzaujímavejší.
Keď človek podpisuje občianskym preukazom, zadáva dva kódy, o ktorých mu celý život hovoria, že ich nesmie nikomu prezradiť: BOK a podpisový PIN ku kvalifikovanému elektronickému podpisu. Aplikácia si ich musí na chvíľu podržať v pamäti, inak by s nimi nemohla pracovať. Nám sa podarilo pamäť bežiacej aplikácie prečítať a oba kódy sme v nej našli v čitateľnej podobe.
Prečo je to teda len poznámka? Pretože útok predpokladá telefón, ktorý útočník už plne ovláda. A hlavne preto, že v jazyku, v ktorom je aplikácia napísaná, sa takto citlivá hodnota z pamäte spoľahlivo vymazať nedá. Systém ju uvoľní, až keď sa mu to hodí, a pokus prepísať ju sa často vôbec nevykoná, lebo ho optimalizácia vyhodí ako zbytočný. Naozaj čisto sa to dá riešiť len v jazykoch, ktoré pracujú s pamäťou priamo.
Nedá sa to teda opraviť mazaním? Čiastočne áno, kódy sa dajú držať v pamäti kratšie a v takej podobe, ktorá sa dá prepísať, ale záruku to nedá. Zvyšok je o tom, aby sa útočník k pamäti vôbec nedostal, o čo sa stará detekcia kompromitovaného zariadenia. Tú aplikácia nemala a bol to v našej správe samostatný nález, takisto na úrovni poznámky. Práve tieto dva najmenej závažné nálezy tak spolu vysvetľujú viac než ten kritický. Hranicu opraviteľnosti tu neurčuje vývojár, ale platforma, na ktorej aplikácia beží.
Ak vyvíjate aplikáciu pre viac platforiem, testujte každú z nich samostatne. Desktopová verzia Autogramu bola v dobrej forme, mobilná mala kritický nález, a nešlo o nedbanlivosť. Boli to jednoducho iné rozhrania.
Druhá vec je konkrétnejšia. Ak vaša aplikácia niečo prijíma od iných aplikácií v telefóne, je útočníkovým vstupom všetko, čo príde, nielen obsah súboru. Aj jeho názov a aj odkaz, ktorý naň ukazuje. Takmer všetky naše nálezy mali túto jednu príčinu.
Tretia vec: každý riadok logu, ktorý obsahuje kľúč alebo token, je prihlasovací údaj a treba s ním tak zaobchádzať.
A tá hlavná: otvorený kód je obrovská výhoda a Autogram ju využil naplno, ale nie je náhradou za test bezpečnosti IT. Kód ukáže, čo aplikácia robí. Útok ukáže, čo sa s ňou dá urobiť.
V Citadelo robíme penetračné testy mobilných aplikácií, penetračný test webovej aplikácie aj infraštruktúry, phishingové simulácie a bezpečnostné previerky na mieru. Ak vyvíjate niečo, čo pracuje s identitou, podpisom alebo platbami, napíšte nám, čo staviate, a ozveme sa s návrhom rozsahu testu.
Všetky články
Prihláste sa k odberu nášho newslettera a získajte všetky dôležité novinky v oblasti kybernetickej bezpečnosti a etického hackovania.