Před měsícem jsme na webových stránkách jedné z největších zásilkových firem v České republice objevili bezpečnostní chybu, v jejímž důsledku se kdokoliv mohl volně pohybovat v jedné z databází o klientech. Na tuto bezpečnostní chybu jsme zásilkovou firmu okamžitě upozornili. Pracovnice zákaznického centra nám poděkovala za upozornění a informaci předala IT oddělení. Od té doby se vůbec nic nezměnilo a data o klientech jsou stále dostupná volně na internetu.
V případě zásilkové služby jde o jednu z nejprimitivnějších chyb – o nezabezpečené přímé odkazy na objekty, kdy stačí v URL odkaze změnit číslo zásilky – a tím získáte přehled o tom, za kolik byla kam jaká zásilka poslána, jestli byl příjemce zastižen a kdo zásilku převzal.
Například u pana T. se dočteme, že si 8. 10. 2015 objednal zásilku z Karlových Varů v hodnotě 9 tisíc korun. Tato zásilka vážila 38,65 kg. Dostupné je číslo zásilky, variabilní symbol a datum doručení, v tomto případě zpět odesílateli, protože 9. 10. 2015 v 14:55 hodin pan T. nebyl na své českobudějovické adrese zastižen a 12. 10. 2015 ve 13:34 byla zásilka odmítnuta.
Podobné informace by se samozřejmě mohly stát zlatým dolem pro bytaře. Dočtete se například, že člověk daného příjmení žijící v daném městě si objednává drahé zásilky a dokonce si můžete i vytipovat, které dny nebývá doma. Na své by si ale mohli přijít i únosci dětí a vyděrači, i pedofilové, protože zásilková firma si do poznámek dokonce zapisuje, že zásilku převzalo dítě, které bylo samo doma, včetně přesného času.
Firmě jsme samozřejmě poradili, jak problém s nezabezpečenými odkazy vyřešit. Nepoužívat čísla zásilek, které jdou sekvenčně, jako primární klíče. Ve Visual PHP nepoužívat pro jedinečné identifikátory sekvenční čísla, ale celosvětově unikátní 256-ti bitové UUID identifikátory, kdy nejde odhadnout následníka. Kromě jednoho děkovného e-mailu se ale do dnešního dne vůbec nic nezměnilo.
Jméno firmy nebudeme uvádět, protože chyba nebyla opravena a ohrozili bychom bezpečnost mnoha lidí.