V uplynulých dvou týdnech jsem si prošel celý zdrojový kód EduLocky řádek po řádku — a zaplatil jsem si nezávislý audit. Našli jsme 13 problémů různé závažnosti, z nichž tři byly natolik vážné, že by je člověk se zlými úmysly mohl zneužít. Všechny jsou opravené. Tenhle text je o tom, proč o tom otevřeně píšu, místo abych to ticho přešel.
Krátká odpověď: protože je to o vašich dětech
EduLocky není fitness aplikace ani fotomontážní studio. Je to software, který běží na rodinném počítači a má jednu hlavní úlohu: nepustit dítě ven, dokud nesplní úlohu, kterou rodič definoval. Když takový software selže nebo má v sobě chybu, kterou kid najde, ztratíte:
- důvěru, že pravidla, která jste si jako rodina dohodli, opravdu platí,
- čas — protože dítě, které jednou kioskový režim obejde, ho bude zkoušet pokaždé,
- peníze — protože ze zoufalství zrušíte předplatné a investujete do něčeho jiného.
Pokud tedy v kódu EduLocky najdu chybu, máte právo o tom vědět. Ne „protože GDPR to vyžaduje“ (i když u některých problémů ano), ale prostě proto, že ekonomicky jste si u mě objednali službu a já vám dlužím poctivý report.
Co je code review a proč jsme ho dělali
Code review je proces, kdy někdo (já, kolega, najatý auditor, nebo specializovaný AI) projde řádek po řádku napsaný kód a hledá chyby. Není to test funkčnosti — to děláme jindy. Je to hledání skrytých zranitelností, které se neukáží při běžném používání. Auditor nehraje uživatele; auditor hraje útočníka.
Code review po uvolnění verze není luxus, ale standard v softwarovém oboru. Z mého pohledu byla naše verze 0.3.20 (poslední před květnovou revizí) dostatečně stabilní, abychom ji vydávali na trh. Ale „dostatečně stabilní“ je v každé chvíli úspěšného produktu nesprávná laťka. Pro něco, co máte v 78 rodinách, je laťka „auditovaný kód“.
Co jsme našli (bez detailů, které byste mohli zneužít)
Třída A — kritické (3 nálezy)
Tři chyby, které by kid s technickou zručností mohl zneužít k tomu, aby EduLocky obešel. Jeden se týkal nouzového PIN ukončení (validace odpovědi byla příliš permisivní). Druhý se týkal vnitřního debug nástroje (jeho aktivace neměla dostatečnou ochranu). Třetí se týkal serverové komponenty, která za určitých podmínek udělila dětem 1 minutu času navíc, kterou neměly mít.
Detaily neuvádím, protože EduLocky je k dnešnímu dni nainstalovaný na cca 90 PC a aktualizace se distribuje postupně. Až bude verze 0.4.1 ověřeně na všech, mohu detaily zveřejnit v technickém postu. Pro nyní stačí říct, že všechny tři jsou opravené a žádná z nich nebyla v reálu zneužita (Sentry telemetrie potvrzuje, že žádné dítě se k těmto útokům nedostalo).
Třída B — středně závažné (4 nálezy)
Čtyři chyby týkající se uživatelského zážitku v okrajových situacích. Příklad: pokud rodina nainstalovala EduLocky verzi 0.3.5 v lednu a postupně upgradovala až na 0.3.20, mohla narazit na situaci, kdy se po splnění úlohy aplikace na sekundu odemkla, ale následně sama uzavřela. Bug, který způsobil „blikání“, nebyl bezpečnostní — byl to data-race uvnitř kódu, ale rodině zhoršoval zážitek. Opraveno ve verzi 0.4.1.
Třída C — drobné nedostatky (6 nálezů)
Šest věcí, které nikdo nemohl zneužít a které nikoho neomezovaly v používání, ale ze strany kódu vypadaly špatně. Příklad: jeden text na stránce s impressem byl napsán starým způsobem, který v ČR od minulého roku už není zcela přesný. Drobnost, ale stojí za opravu.
Co jsme s tím udělali
- Verze 0.4.1 vyšla 25. května 2026 jako bezpečnostní hotfix. Distribuuje se automaticky všem 78 rodinám během následujících 48 hodin (auto-update v desktopovém klientovi).
- Sentry monitoring teď sleduje konkrétní vzorce chování, které by ukázaly, že někdo nějakou z chyb zkouší. Pokud k tomu dojde, dostanu push notifikaci do hodiny.
- Regression testy jsou doplněny tak, aby žádná z těchto konkrétních chyb se nedala náhodně vrátit při budoucích změnách. Každý pokus o úpravu kódu, který by porušil oprávnění, je nyní automaticky odmítnut.
- Zakázán DevTools v produkčních buildech klienta (přes konfiguraci v Tauri buildu). Plus klávesové zkratky F12, Ctrl+Shift+I a podobné, které DevTools otevírají, jsou zablokované na úrovni webview. Belt-and-suspenders — kid ani v ručně otevřeném profilu nedostane do nástrojů pro inspekci.
- HMAC podpis kritických údajů v lokálním úložišti. Pokud kid edituje localStorage soubor přímo (např. po bootu do Safe Modu), aplikace to okamžitě pozná a vrátí se do uzamčeného stavu — místo aby naletěla na upravený údaj.
Co tahle epizoda říká o EduLocky a o mně
Mohl jsem o tom všem mlčet. Verze 0.3.20 fungovala. Žádný zákazník si nestěžoval (žádný kid nevyzkoušel ty konkrétní triky, podle telemetrie). Kdyby se mě banka v příštím týdnu zeptala „jak víte, že vaše software je bezpečný?“, mohl bych říct „netestoval jsem to“ — a věřit, že se nikdy nikdo nezeptá.
Místo toho jsem si zaplatil audit, audit našel chyby, opravil jsem je, a teď o tom píšu otevřeně. Důvod není ten, že bych byl světec — je to ten, že:
- Z dlouhodobého horizontu je důvěra cennější než zámlčení. Jednou někdo chybu najde i bez auditu. Když ji najde sám, ztratíte v jednu minutu reputaci, kterou jste budovali rok.
- Tahle transparentnost je v ČR vzácná. Žádný náš konkurent (Qustodio, Mobicip, Kaspersky) nikdy nepublikoval, co konkrétně se ve svém kódu opravili. Jsem si jistý, že audity dělají — ale tichá oprava je standard. Já z tichého standardu chci vystoupit.
- Vy, rodiny, kteří EduLocky platíte, máte právo to vědět. Tečka. Není to právní povinnost (GDPR ji ukládá jen u úniků dat — žádný únik se nestal), je to morální závazek.
Jak budeme pokračovat
Code review bude probíhat před každou minor verzí (0.5, 0.6, …) a vždy před release majoru (1.0). Audit bude buď interní (já + AI agent), nebo externí, podle rozsahu změn. Reporty z auditu budou k dispozici k inspekci pro vážné enterprise zákazníky (typicky školy s počtem 500+ žáků) pod NDA. Sumární report — tedy text jako tenhle — bude vždy veřejný.
Pokud najdete chybu sami: napište na security@edulocky.cz. Mám zájem o partnerství. Závažné nálezy oceňujeme buď prodlouženým předplatným, nebo finanční odměnou, podle závažnosti.
Pokud máte zájem o detaily auditu nebo o náš proces bezpečnosti pro účely rodičovské due-diligence, je DPA šablona pro školy veřejně dostupná a Zásady ochrany osobních údajů obsahují aktualizovaný seznam sub-procesorů.
Děkuji za důvěru. Vážím si jí každý den.
— Michal Kučinka
edulocky.cz · 25. května 2026