OWASP 10 Najkritickejšie zraniteľnosti web aplikácií
Ako ochrániť svoj projekt a vyvíjať bezpečný softvér
Bezpečnosť webových aplikácií je dnes rovnako dôležitá ako ich funkčnosť či dizajn. Únik osobných údajov, napadnuté účty či kompromitované systémy sú bežnou realitou. Preto vznikol OWASP – Open Web Application Security Project, nezisková organizácia, ktorá pomáha vývojárom robiť bezpečnejší softvér.
Najznámejším dokumentom OWASP je OWASP Top 10 – zoznam desiatich najčastejších a najnebezpečnejších zraniteľností vo webových aplikáciách. V tomto článku nájdete prehľad každého bodu spolu s jednoduchým vysvetlením a praktickými príkladmi.
1. Broken Access Control
Chyby v prístupových právach patria medzi najčastejšie problémy. Ak aplikácia nesprávne kontroluje, čo môže používateľ vidieť alebo robiť, útočník môže pristupovať tam, kam nemá.
Príklad: útočník zmení URL /user/123 na /user/124 a zobrazí cudzie údaje.
Ako sa brániť:
- validovať oprávnenia na serveri
- používať role a politiky
- nespoliehať sa na skryté prvky v HTML
2. Cryptographic Failures
Problémy so šifrovaním môžu spôsobiť únik hesiel, osobných údajov alebo tokenov.
Príklad: prihlasovanie cez HTTP namiesto HTTPS.
Ako sa brániť:
- používať HTTPS
- ukladať heslá pomocou bcrypt alebo Argon2
- neukladať citlivé údaje v nezašifrovanej podobe
3. Injection
Útočník vloží škodlivý kód do aplikácie. Najznámejšia je SQL injection, no existujú aj NoSQL, LDAP či Command injection.
Príklad: vloženie reťazca " OR 1=1 --" do prihlasovacieho formulára.
Ako sa brániť:
- používať parameterizované dotazy
- nevytvárať SQL pomocou stringov
- overovať a filtrovať vstupy
4. Insecure Design
Chyby v návrhu systému, nie v samotnom kóde. Ide o architektonické problémy.
Príklad: chýba rate limiting – útočník môže skúšať neobmedzený počet hesiel.
Ako sa brániť:
- aplikovať bezpečnostné best practices
- využívať Threat Modeling
- navrhovať bezpečnosť už od začiatku projektu
5. Security Misconfiguration
Zlé nastavenia servera, frameworkov alebo databáz.
Bežné chyby: defaultné heslá, debug režim v produkcii, chýbajúce HTTP bezpečnostné hlavičky.
Ako sa brániť:
- pravidelné bezpečnostné audity
- vypnutie nepotrebných služieb
- automatizované skenovanie konfigurácií
6. Vulnerable and Outdated Components
Používanie zastaraných knižníc so známymi zraniteľnosťami ohrozuje celú aplikáciu.
Príklad: kritická zraniteľnosť v Log4j.
Ako sa brániť:
- pravidelne aktualizovať knižnice
- sledovať bezpečnostné oznámenia
- používať nástroje ako Dependabot
7. Identification and Authentication Failures
Problémy s prihlasovaním, tokenmi alebo sessions môžu viesť k neoprávnenému prístupu.
Najčastejšie problémy: dlhá platnosť tokenov, slabý session management, chýbajúci limit pokusov o prihlásenie.
Ako sa brániť:
- používať viacfaktorové overenie (MFA)
- obnovovať session ID po prihlásení
- obmedziť počet pokusov pri prihlasovaní
8. Software and Data Integrity Failures
Aplikácia dôveruje neovereným dátam alebo aktualizáciám.
Príklad: automatické sťahovanie pluginov bez overenia podpisu.
Ako sa brániť:
- overovať digitálne podpisy
- používať kontrolu integrity (hashing)
- minimalizovať vykonávanie neovereného kódu
9. Security Logging and Monitoring Failures
Bez logovania a monitoringu útok nemusí byť odhalený aj celé mesiace.
Ako sa brániť:
- logovať neúspešné prihlásenia
- monitorovať nezvyčajné správanie
- používať SIEM systémy
10. Server-Side Request Forgery (SSRF)
Útočník prinúti server odosielať požiadavky na interné alebo chránené adresy.
Príklad: útočník zadá URL, ktorú server načíta, napríklad http://localhost/admin.
Ako sa brániť:
- obmedziť interné požiadavky
- validovať URL adresy
- používať firewall pravidlá na odchádzajúcu komunikáciu
Záver
OWASP Top 10 je vynikajúcim základom pre bezpečný vývoj webových aplikácií. Každá z týchto zraniteľností sa pravidelne objavuje v reálnych útokoch, preto je dôležité myslieť na bezpečnosť už počas návrhu, vývoja aj údržby.