Audit bezpečnosti aplikace bez falešného klidu

Audit bezpečnosti aplikace bez falešného klidu
6min čtení

Audit bezpečnosti aplikace odhalí reálná rizika v kódu, přístupech i provozu. Ukáže, co opravit hned a co rozumně naplánovat bez odkladu.

Aplikace může bez problémů fungovat pro zákazníky a přitom obsahovat chybu, která umožní získat cizí data, převzít účet nebo obejít oprávnění. Audit bezpečnosti aplikace není formalita pro velké korporace. Je to způsob, jak si ověřit, zda váš produkt pracuje s daty a přístupy tak, jak předpokládáte - a zda problém nehledáte až ve chvíli, kdy ho nahlásí zákazník, partner nebo útočník.

Pro B2B SaaS, interní systém i mobilní aplikaci bývá bezpečnost především otázkou konkrétních toků: kdo se přihlásí, co smí vidět, co může změnit, kam se ukládají data a kdo má přístup do provozního prostředí. Právě tam vznikají chyby s největším dopadem. Ne v abstraktní debatě o bezpečnosti, ale v jedné špatně ověřené hodnotě v API nebo v účtu bývalého kolegy, který stále funguje.

Co audit bezpečnosti aplikace skutečně prověřuje

Dobrý audit nezačíná automatickým skenem a nekončí tabulkou s desítkami nejasných nálezů. Nejdříve potřebujeme pochopit, co aplikace řeší, jaká data drží a která část by způsobila největší škodu, kdyby selhala. Jiný rozsah potřebuje jednoduchý portál pro obchodní partnery, jiný systém zpracovávající osobní údaje, faktury, dokumenty nebo data více zákaznických organizací.

V praxi prověřujeme kombinaci architektury, zdrojového kódu, konfigurace infrastruktury a chování aplikace při reálném použití. Cílem není „prolomit“ systém pro efekt. Cílem je najít cesty, kterými může neoprávněný uživatel získat data, provést akci za jiného uživatele nebo narušit dostupnost služby.

Identita, přihlášení a oprávnění

Přihlašovací proces je jen začátek. Důležitější je, co se stane po přihlášení. Ověřujeme životní cyklus relace, obnovu hesla, vícefaktorové ověření tam, kde dává smysl, a práci s přístupovými tokeny. Častou chybou není slabé heslo, ale příliš dlouho platná relace nebo token uložený na místě, odkud jej může získat cizí skript.

Ještě častěji se problém skrývá v autorizaci. U víceuživatelských aplikací nestačí skrýt tlačítko v rozhraní. Server musí u každého požadavku ověřit, zda přihlášený člověk skutečně smí pracovat s daným záznamem. Pokud uživatel změní identifikátor v URL nebo v API požadavku, nesmí se dostat k objednávce, dokumentu či účtu jiné firmy.

Data, API a vstupy od uživatelů

Každý formulář, import souboru, parametr v URL a API endpoint představuje vstup, kterému nelze bez ověření věřit. Audit hledá situace, kdy aplikace tyto hodnoty používá přímo v databázovém dotazu, při vykreslení stránky, při generování dokumentu nebo při práci se soubory.

Nejde jen o známé typy útoků. Chyba může vzniknout i nenápadně: export obsahuje víc polí, než ukazuje rozhraní; API vrátí údaje jiné organizace; příloha se uloží pod předvídatelným názvem; administrátor může nahrát soubor, který nemá být v prohlížeči spustitelný. Kontext rozhoduje. Funkce, která je přijatelná v uzavřeném interním nástroji, může být vážným rizikem v aplikaci dostupné zákazníkům.

Provozní nastavení a přístupy týmu

Bezpečný kód nezachrání špatně nastavený provoz. Prověřujeme, zda nejsou tajné klíče a hesla ve zdrojovém kódu, zda má produkce oddělené přístupy od vývojového prostředí a zda jsou administrátorské účty skutečně pod kontrolou. Patří sem také zálohy, logování bezpečnostně významných událostí, aktualizace závislostí a reakce na incident.

Logy musí být dostatečné pro dohledání problému, ale nesmí samy vytvářet další únik dat. Zapisovat celé přístupové tokeny, hesla nebo obsah citlivých formulářů je typická zkratka, která se později draze vrací. Podobný kompromis řešíme i u záloh: záloha bez pravidelného ověření obnovy není jistota, jen předpoklad.

Kdy má audit největší přínos

Nejrozumnější chvíle bývá před větším uvedením produktu do provozu, před napojením na citlivý systém nebo před předáním aplikace novému technickému partnerovi. V těchto bodech se dají zásadní věci upravit levněji než po měsících dalšího vývoje. Před go-live praktické bezpečnostní testy chytí základy; audit jde hlouběji, když je produkt, datový model nebo pravidla přístupu složitější.

Smysl má také po větší změně architektury. Typicky když přidáváte role a oprávnění, platby, importy dat, veřejné API, mobilní aplikaci nebo AI funkci pracující s interními dokumenty. Každá nová integrace rozšiřuje prostor, kde se může rozpadnout původní předpoklad o tom, kdo k čemu má přístup.

U zavedeného systému není nutné čekat na kompletní přepis. Audit lze zaměřit na část s nejvyšším rizikem - například zákaznický portál, administraci, přihlášení nebo integrační vrstvu. To je často praktičtější než požadovat prověření všeho najednou, zvlášť když je aplikace rozsáhlá a průběžně se mění.

Jak vypadá výstup, podle kterého se dá rozhodovat

Seznam technických zranitelností sám o sobě nepomůže product ownerovi ani zakladateli rozhodnout, co udělat první. Výstup auditu by měl každý nález vysvětlit v konkrétním scénáři: co je špatně, jak by šel problém zneužít, jaká data nebo procesy jsou v sázce a jak opravu ověřit.

Důležitá je prioritizace. Ne každý nález vyžaduje okamžitý zásah do produkce. Chyba, která umožní neautorizovaný přístup k datům jiného zákazníka, patří před kosmetickou úpravu bezpečnostních hlaviček. Naopak nízké riziko se může rozumně zařadit do dalšího vývojového cyklu, pokud je jasně popsané a přijaté jako vědomý kompromis.

Kvalitní výstup rozlišuje mezi problémem v návrhu a problémem v implementaci. Přidat kontrolu do jednoho endpointu je jiný typ práce než upravit model oprávnění, který byl od začátku postavený příliš volně. Tato otevřenost je podstatná i pro plánování. Nechceme vytvářet falešný dojem, že každá oprava je drobná, ani navrhovat přestavbu tam, kde stačí cílená změna.

Co automatické nástroje najdou a co ne

Automatizované skenery a kontroly závislostí mají v bezpečnostním procesu své místo. Rychle odhalí známé zranitelné knihovny, chybějící konfiguraci nebo některé opakující se vzory v kódu. Má smysl je provozovat průběžně, ne jen před auditem.

Samy ale nerozumí pravidlům vašeho produktu. Neví, že uživatel z firmy A nesmí vidět zakázku firmy B. Nevyhodnotí, zda pracovník podpory může zneužít interní administraci, ani zda export dat obsahuje víc, než odpovídá dané roli. Tady je potřeba ruční ověření člověkem, který rozumí aplikaci i tomu, jak se používá v reálném provozu.

Na druhé straně ani ruční audit není jednorázové potvrzení, že je vše navždy v pořádku. Kód, infrastruktura i závislosti se mění. Bezpečnost proto dává největší smysl jako součást způsobu, jak produkt vyvíjíte a provozujete: kontrola změn, revize citlivých částí, omezené přístupy a pravidelně ověřené zálohy.

Jak se na audit připravit bez zbytečné administrativy

Nejvíc pomůže stručný, aktuální popis systému. Potřebujeme vědět, kde aplikace běží, jaké externí služby používá, jaké role existují a kde se pracuje s citlivými daty. Přínosné jsou i informace o dřívějších incidentech nebo obavách týmu. Nejde o hledání viníka. Naopak, konkrétní obava často zkrátí cestu k podstatnému problému.

Přístupy pro audit nastavujte odděleně a s minimálním nutným rozsahem. Testovací účty by měly pokrýt běžné role v aplikaci, protože právě porovnání jejich oprávnění odhaluje mnoho chyb. Pokud je nutné pracovat s produkcí, je potřeba předem vyjasnit pravidla testování, časové okno a kontaktní osobu pro případ neočekávaného dopadu.

V Nextrey při převzetí nebo dalším rozvoji aplikace bezpečnost neoddělujeme od běžné technické práce. Problém v oprávněních, datech nebo provozu ovlivňuje stabilitu produktu stejně přímo jako chyba ve funkci, kterou zákazník používá každý den. Detaily k bezpečnostním kontrolám při spuštění a provozu jsou na stránce spuštění, provoz a růst.

Nejlepší čas začít nebývá až po incidentu ani až před velkým obchodním jednáním. Začněte u jedné kritické cesty ve vašem produktu - přihlášení, práce s daty zákazníků nebo administrace - a položte si jednoduchou otázku: co přesně brání nesprávnému člověku udělat nesprávnou věc? Pokud odpověď není jasná a ověřitelná, máte dobrý důvod ji prověřit.

Máte nápad, co postavit?

Pracujeme se společnostmi, které potřebují skutečný software postavit a nasadit, a často ho i nadále udržovat. Řekněte nám, co plánujete, a my vám upřímně řekneme, jak bychom k tomu přistoupili.

Ozvěte se nám