Kontext
Služby reverse lookup slibují najít člověka podle fotky, telefonu nebo e-mailu. Výzkumník Jeremiah Fowler (The Hacker Newsletter) zjistil, jak nesmyslně ClarityCheck nakládala se svými pozady.
Dva nezávislé problémy:
- Veřejný S3 bucket. Přibližně 450 GB a více než 9 miliónů obrázků bylo uloženo v bucketu, ke kterému mohl cokoliv získat z internetu bez přihlášení či povolení — stačila znát URL. Bucket obsahoval dokonce adresáře pojmenované přímo
facesaprofiles, včetně profilových fotek, screenshotů i obličejů dospělých, teenagerů i dětí. - Rozbité API. Jen přepsáním URL v běžném prohlížeči mohl kdokoli zadat jméno člověka a získat zpět potenciální e-maily, telefonní čísla a fyzické adresy — opět bez žádné skutečné autentizace. Samotná URL k bucketu nebyla skrytá: dala se najít ve veřejně dostupném kódu webu.
Reakce (a proč chybí)
Firma tvrdila, že data nebyla „veřejně vystavená", protože URL nebyla indexovaná a běžný člověk na ni náhodou nenarazí. Z bezpečnostního pohledu je to přesně špatné framing: „nikdo znal URL" ≠ přístupový kontrol. Pokud je resource z internetu dostupný bez autentizace někomu, kdo k němu neměl mít přístup, jde o exposure — body. obrana v hloubce znamená, že nikdo nemusí pamatovat tajné odkazy; mělo by být nemožné data přečíst bez správných pověření.
Dopad / proč to záleží
Žádný důkaz, že by někdo data masově zneužil, a WIRED píše, že bucket byl po hlášení zabezpečen. Exposure ale mohl trvat měsíce, a u fotek obličejů je dopad horší než třeba u hesla — heslo můžeš změnit, svůj obličej ne.
Praktické zjištění (lesson learned)
- S3 bucket se citlivými daty nesmí být veřejně dosažitelný.
- Neindexované ≠ soukromé. Tajná URL není autentizace.
- Veřejně zveřejněný infrastrukturní kód, který únikem endpoint URL odkrývá koncovky, je sám o sobě vektor expozice — tajnosti držte mimo veřejné repositáře a přístup ověřujte skutečným modelem autorizace, ne tím, že „nikdo link nedoceňuje".
P.S. Případ anonymizován podle praxe SecuPunk; zdroj: WIRED (a psaní Jeremiah Fowlera).