Mnoho zákazníků kaváren Starbucks bylo šokovaných, když se zjistilo, že kyberzločinci kradou peníze z jejich kreditních karet a platebních účtů tím, že se vlomí do jejich mobilních aplikací Starbucks.
Příčinou byla pravděpodobně díra v rozhraní API, přestože nebyla na webu Starbucks, ale v další aplikaci, kde došlo ke krádeži a použití zprofanovaných hesel.
Web Moonpig s blahopřáními a mobilní aplikace Snapchat měly podobný osud v důsledku rozhraní API, které řídí způsob komunikace aplikací mezi sebou a s daty, se kterými aplikace pracují.
Nedávno způsobilo nezabezpečené rozhraní API, že web Moonpig vystavil osobní záznamy a dílčí údaje o kreditních kartách svých tří milionů zákazníků. Dva exploity v rozhraní Snapchat API zase hackerům dovolily zjistit souvislost mnoha telefonních čísel se jmény a vytvořit miliony falešných účtů.
API láká hackery
Proč se rozhraní API tak často stávají cílem hackerů? Protože jsou všude, uvádí Randy Heffner, analytik zabezpečení ve společnosti Forrester Research. Každá firma si vytváří své rozhraní API pro podporu svého webu či mobilní aplikace, protože jim to umožňuje rychlejší inovace a integraci vnějšího obsahu.
Salesforce.com generuje 50 procent svých příjmů právě prostřednictvím rozhraní API, Expedia.com generuje dokonce 90 procent a také eBay uvádí, že 60 procent jeho příjmů pochází z rozhraní API.
„Širší pozornost věnovaná rozhraním API dává hackerům nové a zajímavější pole působnosti,“ vysvětluje Heffner.
Většina rozhraní API je k dispozici komukoli z internetu, protože běží na webových serverech. Stejně jako webové stránky mohou být i rozhraní API předmětem zkoumání a procházení od vyhledávacích botů či hackerů.
Zabezpečení API je tedy oblastí, která vyžaduje specifický podnikový pečlivý dohled, dodává Heffner.
„Nechceme rozhraní API připomínající ponorky, běžící tiše a s hloubkovým ponorem, protože pokud jednou někdo pronikne na váš web, zjistíte to velmi rychle. Pokud však někdo pronikne do vašeho API, nemusíte to zjistit vůbec.“
Důvody zranitelností
Proč se ale v rozhraních API vyskytují chyby zabezpečení? Vývojáři nebývají dostatečně zdatní v oblasti zabezpečení a rychlost uvádění na trh ovlivňuje veškeré testování a péči, kterou mohou programátoři věnovat svému kódu.
„Tráví mnohem více času přinášením hodnot do aplikací než péčí o jejich zabezpečení, což může vést ke vzniku bezpečnostních děr,“ vysvětluje Allyn Fay, technický marketingový manažer společnosti Ping Identity, která je dodavatelem systémů pro správu identit a přístupu.
Také mezi samotnými vývojáři rozhraní API se velmi málo komunikuje, což brání vzniku širších bezpečnostních standardů.
„V každé společnosti mají všechny obchodní jednotky mandát publikovat rozhraní API, a přitom vzájemně spolu nekomunikují,“ tvrdí Subra Kumaraswamy, šéf zabezpečení produktů ve společnosti Apigee, která vyvíjí rozhraní API.
„Pokud jsem jednotka, která zajišťuje dodávky, nebo platební společnost vytvářející platební rozhraní API,“ nebavíme se o tom mezi sebou, dodává Kumaraswamy.
A co víc, vývojáři jsou pod tlakem, aby rychleji inovovali, což může také vytvářet zranitelnosti, uvádí Kumaraswamy. „Můžete dělat chyby ať už tím, že neúmyslně způsobíte únik dat nebo že do rozhraní API nedáte ty správné kontroly.“
Tady jsou příklady kroků, které byste měli učinit, pokud chcete, aby byla vaše rozhraní API bezpečná.
1. Ucpávání děr
Vývoj aplikací nevykazuje nějaké známky zpomalení, ale firmy mohou podniknout kroky k ucpání děr v rozhraních API.
Když přijde na zabezpečení aplikací a rozhraní API, „ve webových aplikacích obvykle musíte jen ověřit totožnost koncového uživatele. Ve světě rozhraní API musíte také autentizovat aplikaci,“ uvádí Kumaraswamy.
„Pokud například používáte AirBnB nebo aplikaci Uber, tato řešení volají svá rozhraní API, takže tím dochází k jejich autentizaci.“ V případě webu Moonpig došlo k vynucování autentizace, ale ne autorizace, dodává Kumaraswamy.
Použití standardizovaného protokolu, který existuje jak pro autentizaci, tak i pro autorizaci, je základem k bezpečnému používání rozhraní API, dodává Fay.
Pokud to uděláte správně, bude rozsah integrovaného zabezpečení založen na standardu a nebude se v různých aplikacích lišit.
2. Šifrování přenosů
Vždy šifrujte citlivá data, radí Heffner. Nikdy nevytvářejte bezpečnostní díru tím, že byste používali přenosy přímo čitelného textu.
Vývojáři by měli používat SSL certifikáty pro webová rozhraní API, která přenášejí citlivé informace mezi programem v koncovém bodu a rozhraním webové služby, protože hackeři mohou tato data odposlouchávat.
Pokud použijete své rozhraní API v rámci podadresáře své aktuální webové aplikace, můžete použít stejný bezpečnostní certifikát, který máte pro své webové stránky.
3. Ochrana přihlašovacích údajů
Pochopte správně způsob správy přihlašovacích údajů pro aplikaci a jejich důležitost pro jednotlivé druhy scénářů, dodává Heffner.
„Kdybych byl bankou vykonávající finanční transakce s partnerem, existuje řada vrstev připojení, které bych chtěl mít – jako je VPN na SSL – nebo bych používal digitálně podepsané tokeny SAML apod. jako součást úplného bezpečnostního systému,“ tvrdí Heffner
Podle něj, když se použije více bezpečnostních mechanismů, ztěžuje to náročnost a počet úkonů, které musí někdo udělat, když chce takové spojení odposlouchávat.
Digitálně podepsané tokeny také mohou být jednou ze součástí bezpečnostního systému. Tokeny jsou řetězce znaků, které jednoznačně identifikují uživatele. Lze je ukládat v databázi a poskytnout přístup jen v případě, že uživatel zadá správné uživatelské jméno a heslo.
Token se potom použije uživatelem rozhraní API k přístupu k metodám rozhraní API.
4. Vyhněte se statickým a vestavěným heslům
Když je logika vestavěná do aplikace, je velmi těžké to změnit, vysvětluje Fay. Chcete-li změnit zásady nebo zaktualizovat zabezpečení, není vestavění veškeré této logiky do mobilních aplikací úplně dobrou věcí.
Vývojáři si někdy zjednodušují život obyčejnými hesly nebo ukládáním ID a hesel místně v mobilní aplikaci, a to je z bezpečnostního hlediska obrovský problém. „Statická hesla by se opravdu neměla používat,“ připomíná Fay.
5. Svému rozhraní API předávejte jen nutné informace
Vývojáři často vezmou všechny informace, které mají o uživateli, a předají je rozhraní API, protože nevědí, jaká data jsou třeba, říká Fay.
„Zajistěte, abyste přenášeli jen takové informace, které potřebujete,“ doporučuje Fay a dodává: „Je to více záležitost soukromí než zabezpečení,“ ale může to být zneužívané v metodách sociálního inženýrství.
Tento příspěvek vyšel v Security Worldu 3/2015. Časopis (starší čísla i předplatné těch nadcházejících) si můžete objednat na adrese našeho vydavatelství.