Insecure Design je kategorie zranitelností, které nelze opravit pouhou implementací. Problém je v architektuře. Žádný patch neopraví špatný design.
Příklady Insecure Design¶
- Reset hesla přes bezpečnostní otázky
- E-shop bez limitu na kuponové kódy
- API bez rate limitingu na citlivých endpointech
- Autentizace přes SMS bez alternativy (SIM swap)
Threat Modeling — STRIDE¶
- Spoofing — vydávání se za jiného
- Tampering — neoprávněná modifikace
- Repudiation — popření akce
- Information Disclosure — únik informací
- Denial of Service — znepřístupnění
- Elevation of Privilege — eskalace oprávnění
Secure by Design principy¶
- Defense in depth — více vrstev ochrany
- Least privilege — minimální nutná oprávnění
- Fail secure — při chybě zamknout, ne otevřít
- Separation of duties
- Trust boundaries — jasné hranice důvěry
Threat model jako kód¶
threatmodel.yaml¶
application: e-shop data_flows: - name: user_login source: browser destination: auth_service threats: - type: spoofing mitigation: MFA + rate limiting - type: information_disclosure mitigation: TLS 1.3, no password in logs
Klíčový takeaway¶
Bezpečnost začíná v návrhu, ne v kódu. Dělejte threat modeling před prvním řádkem kódu.
owaspsecuritydesignthreat modeling