MightCore
Zpět na blog
Návody3. listopadu 20267 min čtení

Bezpečnost v návrhu: proč kontrola na konci projektu přichází pozdě

Bezpečnostní audit týden před spuštěním najde chyby, které už nejdou levně opravit. O tom, jak se hrozby řeší tehdy, kdy jsou ještě levné.

Bezpečnostní chyba nalezená při návrhu stojí rozhovor. Tatáž chyba nalezená po spuštění stojí přepsání a oznámení zákazníkům. Rozdíl není v chybě, ale v tom, kdy se na ni přišlo.

Typický průběh vypadá takto: projekt se postaví, týden před spuštěním si někdo objedná audit, audit najde, že autorizace se kontroluje na nesprávném místě — a oprava znamená zasáhnout do poloviny aplikace. Termín už běží, takže se nález „zaeviduje na později". Později nepřijde.

Co znamená „bezpečnost v návrhu"

Ne víc dokumentů. Jeden krok navíc předtím, než se začne psát funkce: projít, co se na ní dá zneužít, a z každé odpovědi udělat konkrétní požadavek.

U běžné aplikace se to vejde do patnácti minut a otázky jsou vždy podobné:

  • Kdo to smí udělat? A kontroluje se to na serveru, nebo se jen skryje tlačítko?
  • Co když si někdo změní ID v adrese? Uvidí cizí data, nebo dostane zamítnutí?
  • Co když pošle jinou částku, než která byla na obrazovce? Rozhoduje číslo od klienta, nebo si ho server počítá sám?
  • Co když to spustí tisíckrát za minutu? A co když to spustí dvakrát naráz?
  • Co se o tom dostane do logu? Neuloží se tam heslo, token nebo celé osobní údaje?

Z hrozby musí vzniknout test

Tohle je ten rozdíl mezi bezpečností v návrhu a bezpečností v prezentaci. Opatření, které existuje jen jako věta v dokumentu, zmizí při prvním refaktoru a nikdo si toho nevšimne.

Proto má každá odpověď skončit testem: test, že uživatel bez oprávnění dostane zamítnutí; test, že cizí ID vrátí chybu a ne data; test, že částka poslaná klientem se ignoruje. Když někdo za půl roku tu kontrolu omylem odstraní, spadne build — ne zákazník.

Tři věci, které v praxi selhávají nejčastěji

Nejsou to exotické útoky. Jsou to tři obyčejné věci:

  • Autorizace na nesprávné vrstvě. Aplikace skryje tlačítko, ale endpoint zůstane otevřený. Skrytí v rozhraní není kontrola přístupu.
  • Důvěra vstupu od klienta. Cena, sleva, množství či identita odesílatele přijdou z prohlížeče a server je převezme. Cokoli, co chodí od klienta, je návrh, ne fakt.
  • Tajemství a osobní údaje v lozích. Loguje se celý request „pro jistotu" a v něm token nebo rodné číslo. Log se potom kopíruje do míst, kde pro něj neplatí stejná pravidla.

Když přichází NIS2 a GDPR

Část firem se o bezpečnost začne zajímat kvůli regulaci. To je legitimní důvod a technicky se překrývá s tím, co je rozumné dělat tak jako tak: vědět, kde jsou jaká data, kdo se k nim dostane, a mít záznam o tom, co se s nimi dělo.

Co ale z naší strany nedostanete, je posouzení, jestli konkrétní povinnost na vás dopadá a v jakém rozsahu. To patří vašemu právníkovi — my připravíme technické podklady a opatření, ne právní výklad.

Audit má smysl, jen ne jako první krok

Nezávislé prověření hotového řešení děláme a dává smysl — při převzetí systému po jiném dodavateli, před větším spuštěním nebo když se mění provozovatel. Projdeme autentizaci, autorizaci, zpracování vstupů, závislosti a konfiguraci, a výstupem je seznam nálezů seřazený podle reálného dopadu s návrhem opravy.

Jen to není náhrada za první krok. Audit řekne, co je špatně. Bezpečnost v návrhu zařídí, aby toho bylo málo.

Jak to děláme

Hrozby procházíme u každé funkce, endpointu a datového modelu, a z nich vznikají akceptační kritéria, která se stanou testy. Data šifrujeme při přenosu i v úložišti, přístup dáváme podle rolí a citlivé operace zapisujeme do odděleného auditního záznamu, který nejde přepsat zevnitř aplikace.

Pokud přebíráte systém po někom jiném nebo se chystáte spouštět něco, kde by únik bolel, napište nám. Víc o této oblasti je na stránce služeb.

Řešíte něco podobného ve vaší firmě?

Chci nezávaznou konzultaci

15minutový úvod

Nejste si jistí? Pojďme si promluvit.

Nerozumíte něčemu nebo nevíte, kde začít? Domluvte si krátký 15minutový úvod do problematiky — vše vám zdarma a nezávazně vysvětlíme.

Rezervovat 15min hovor