Jak na validaci vstupu, jak je to s právem v kyberprostoru a další
Víte, proč validovat vstup a co vám hrozí, když to dělat nebudete? Co je lepší - allow list, nebo blacklist? I jako provozovatel e-shopu nebo online služby máte povinnost mít bezpečnostní opatření a podléháte regulaci.
🏆 Téma: Validace (nejen) uživatelského vstupu
- Do aplikace proudí velké množství dat z různých zdrojů:
- Uživatelem zadaná data z formulářů nebo URL parametrů
- Data ze služeb třetích stran, na které je aplikace napojená (např. synchronizace produktů ze systému pro skladové hospodářství)
- Tato data mohou obsahovat prakticky cokoli, i přes to, že se očekává, že budou obsahovat něco, co se plánovalo.
- Uživatel do pole “Jméno” opravdu zadá své jméno a ne kód nebo číslo.
- Ze skladového hospodářství nám přijde počet kusů daného zboží na skladě a ne prázdná hodnota nebo jméno odpovědné osoby.
- Svět ale není vždy jen růžový a aplikace se musí k jakémukoli vstupu chovat jako k nedůvěryhodnému.
- Neprověřený a nezvalidovaný vstup totiž může způsobit řadu závažných problémů:
- Cross Site Scripting XSS
- Injection
- nekonzistenci dat
- a další
- Validace vstupních dat se provádí proto, aby se zajistilo, že do systému vstupují pouze správná data.
- To zabrání uložení nesprávných dat a následných aplikačních chyb v navazujících komponentách.
- K validaci by mělo dojít co nejdříve, nejlépe hned po přijetí dat.
- Validace vstupů by neměla být považována za primární metodu ochrany proti výše zmíněným problémům.
- Při správné implementaci významně přispívá ke snížení jejich dopadu.
- Systém by měl aplikovat jak
- syntaktickou validaci = zajišťuje správnou syntaxi dat (datum, SSN, symbol měny), tak
- sémantickou validaci = zajišťuje správnost hodnot v daném kontextu (datum zahájení, datum ukončení, cena v očekávaném rozsahu).
- Validace v některých případech není snadná záležitost - např. kontrola e-mailové adresy.
- Za platnou adresu se považují například tyto:
"><script>alert(1);</script>"@example.org
user+subaddress@example.org
user@[IPv6:2001:db8::1]
" "@example.org
- Adresu se doporučuje předat mail serveru, který ji buď přijme, nebo odmítne.
- Pro validaci se vyplatí používat komponenty, které jsou ověřené a hojně používané (např. Apache Commons Validators).
- Za platnou adresu se považují například tyto:
- Validace by se měla provádět hlavně na serveru a klientská aplikace by měla tu serverovou interpretovat.
- Klientská validace je považována za nedostatečnou, protože ji lze snadno obejít.
- V závislosti na kontextu preferujte seznam povolených hodnot (allow list) před seznamem vyloučených hodnot (blacklist).
Jak na validaci textu
- Je obtížně validovatelný kvůli množství znaků, které je potřeba povolit.
- Zajistěte, aby bylo v celém textu použito kanonické kódování a aby se v něm nevyskytovaly žádné nepovolené znaky (normalizace).
- Aplikujte seznam povolených znaků (regulární výrazy - mohou být značně komplikované).
- Na základě kontextu povolte ideogramy, apostrofy a další znaky, které jsou potřeba.
Jak na validaci uploadu souborů
- Použijte nový název souboru, nepoužívejte uživatelsky definovaný název.
- Ujistěte se, že nahraný soubor není větší než maximální definovaná velikost souboru (mohlo by vést k DoS).
- Vyhněte se přijímání .zip souborů.
- Zajistěte, aby název souboru používal očekávanou příponu.
- Dejte si pozor na situace typu
soubor.jpg.php
, kdy může dojít ke špatné interpretaci, že jde o obrázek.
- Dejte si pozor na situace typu
- Analyzujte soubory na škodlivý obsah (antimalware, statická analýza).
- Cestu k souboru by nemělo být možné zadat na straně klienta, rozhoduje o ní server.
- Tím se nestane, že si uživatel zobrazí soubor
/etc/passwd
.
- Tím se nestane, že si uživatel zobrazí soubor
- Při podávání obsahu zajistěte, aby soubory měly správný content type (
image/jpeg
,application/x-xpinstall
).
🎓 Učíme se společně
Co jsme se dozvěděli z přednášek, školení, čtení knih a dalších aktivit?
CyberCast: Vymahatelnost práva se v kyberprostoru blíží k nule
- Kyberbezpečnost je brána jako povinnost, kterou firma nechce řešit, a právní úprava tomu nahrává.
- Odpovědný za škodu je statutární orgán.
- Právní úpravu definuje zákon o kybernetické bezpečnosti.
- Aktuálně povinnost dopadá na cca 400 subjektů, NIS2 to rozšíří na cca 6000.
- NIS2 by se měla dotknout i dodavatelského řetězce.
- Minimálně v případě, že se něco dodává orgánu veřejné moci.
- Pokud jsem provozovatel e-shopu nebo digitálního produktu, tak na mě regulace dopadá už teď, protože jsem poskytovatel digitální služby.
- Měl bych mít bezpečnostní opatření a měl bych hlásit bezpečnostní incidenty.
- Problém je, že to nikdo moc nekontroluje, proto se o tom tolik neví.
- Napříč EU bude jednotný systém certifikace, který ověří splnění podmínek na kybernetickou bezpečnost (jednotný rámec pro certifikaci kybernetické bezpečnosti).
- O určité službě, procesu nebo produktu bude možné říct, že na určité úrovni splňuje požadavky na kybernetickou bezpečnost.
- Certifikace se vydává na 5 let a bude možné ji prodloužit.
- Jak by se měla firma zachovat v případě, že je napadena ransomwarem?
- Mít zálohu, obnovit ji a kontaktovat útočníka.
- Doporučuje se nevyjednávat (2 z 10 případů data obnoví).
- Jako je Software as a Service, tak je i Ransomware as a Service, který si můžu objednat.
- Právníci doporučují školit zaměstnance a smluvně si podchytit dodavatele, aby nevznikly problémy na jejich straně a nepodcenit bezpečnost - pokud jste statutární orgán, odpovědnost je na vás (ve výsledku se to vždy dostane k vám, nejde to outsourcovat).
📰 Co je nového
- Přednáška: Nejčastější API a aplikační zranitelnosti 2023
- Poslechněte si moji hodinovou přednášku z minulého týdne.
- Na webu je k dispozici seznam API zranitelností včetně jejich mitigace.
- Nově nabízím službu whitebox API audit.
- Přednáška: Nepropalte miliony díky nezabezpečené aplikaci (Nauč mě IT)
- Přednášel jsem na téma nejčastějších zranitelností, se kterými se v praxi setkávám + jak na nich klienti propálili nemalé peníze.
- Ve druhé části přednášky se věnuju GitHubu a jeho security funkcím, které můžete používat i vy.
- Miliony zranitelných GitHub repozitářů
- Repozitáře se potýkají se zranitelností RepoJacking (dependency repository hijacking).
- Ovlivněny jsou například repozitáře Googlu a dalších firem.
- Když vlastník repozitáře změní uživatelské jméno, vytvoří se mezi starým a novým jménem spojení pro každého, kdo si stáhne závislosti ze starého repozitáře.
- Je však možné, aby kdokoli vytvořil staré uživatelské jméno a toto propojení porušil.
- Případně může scénář nastat, když je repozitář převeden na jiného uživatele a původní účet je smazán - to umožní útočníkovi vytvořit účet se starým uživatelským jménem.
- Tím se způsobí, že kód, který má tento projekt jako závislost, načte obsah z repozitáře ovládaného útočníkem, čímž poškodí dodavatelský řetězec.
- Zero day vulnerability Apple patch
- Chyba umožnila útočníkům spustit libovolný kód při zpracování speciálně vytvořeného webového obsahu.
- Podle výzkumníků je možné, že chyba byla pravidelně zneužívána.
- O dané zranitelnosti nebylo zveřejněno více informací ani vyjádření.
- Revolut ztratil 20 milionů dolarů kvůli zneužití platebního systému
- Problém spočíval mezi nesrovnalostmi v americkém a evropském systému společnosti.
- Při odmítnutí některých transakcí byly prostředky chybně vráceny z peněz Revolutu.
- Útočníci prováděli drahé nákupy, které by byly dále odmítány, a vrácené částky pak byly vybírány z bankomatů.
- Chyba byla odhalena už v roce 2021, ale než se začala řešit, využili toho zločinecké organizace.
- Přesné detaily zatím nebyly zveřejněny.
😂 Závěrečný ftípek: What do you call a group of math and science geeks at a party? Social engineers.
🔔 Sledujte nás na LinkedInu, kam pravidelně sdílíme další novinky a know-how.
🆘 S bezpečností vám rádi pomůžeme, klidně nám napište - školíme vývojáře i management, nastavujeme procesy, vyvíjíme bezpečné aplikace a poskytujeme další služby.