Pokusil jsem se dát dohromady základní přehled častých chyb, na které člověk v různých webových aplikacích narazí.
Zároveň také otevírám téma striktnosti práce s typy a hodnotami, které se často ignoruje, ale každá opravdu solidní aplikace jej musí řešit.
Martin Dráb – Zranitelnosti ovladačů jádra Windows v praxi
Obzvláště 64bitové verze OS Windows obsahují silné mechanismy zamezující vykonávání škodlivého kódu v režimu jádra. Cílem přednášky je ukázat, že tato opatření nemusí být vůbec efektivní, pokud autoři ovladačů udělají při programování chybu. Tento fakt bude demonstrován ukázkou zneužití takové chyby, která dovolí útočníkovi vykonat libovolný kód se stejným oprávněním jako ovladač jádra.
www.security-session.cz
Presentation from training day for Sun Solaris customers to explain features of Solaris DTrace.
Presentation covers following themes:
- architecture and syntax
- tools DTraceToolkit, chime, DTraceTazTool, DLight
- system DTrace (system providers like syscall, sched, vminfo ...)
- application DTrace (providers pid* and plockstat*, User-Level Statically Defined Tracing (USDT)), Dtrace for MySQL, Apache webserver, PHP module, Java and Firefox Javascript
Martin Dráb – Zranitelnosti ovladačů jádra Windows v praxi
Obzvláště 64bitové verze OS Windows obsahují silné mechanismy zamezující vykonávání škodlivého kódu v režimu jádra. Cílem přednášky je ukázat, že tato opatření nemusí být vůbec efektivní, pokud autoři ovladačů udělají při programování chybu. Tento fakt bude demonstrován ukázkou zneužití takové chyby, která dovolí útočníkovi vykonat libovolný kód se stejným oprávněním jako ovladač jádra.
www.security-session.cz
Presentation from training day for Sun Solaris customers to explain features of Solaris DTrace.
Presentation covers following themes:
- architecture and syntax
- tools DTraceToolkit, chime, DTraceTazTool, DLight
- system DTrace (system providers like syscall, sched, vminfo ...)
- application DTrace (providers pid* and plockstat*, User-Level Statically Defined Tracing (USDT)), Dtrace for MySQL, Apache webserver, PHP module, Java and Firefox Javascript
Standardní implementace ispell slovníků v PostgreSQL má bohužel několik nevýhod co se CPU a paměti týká. Napsal jsem extension která umožňuje slovníky inicializovat jen jednou a sdílet je mezi spojeními.
Softwarove protektory / KAREL LEJSKA, MILAN BARTOŠ [DEFENDIO]Security Session
Security by obscurity nemůže fungovat. Nebo ano? Softwarové protektory prošly během 16 let prudkým vývojem. Zhodnotíme, jaká je situace v roce 2016. Podíváme se, jak fungují dnešní protektory pro Windows a Android, ukážeme, co se snaží řešit a současně jaké problémy jejich nasazení přináší. Přednáška bude zajímavá i pro ty, které zajímá problematika malware.
Czech Oracle Solaris Administrators Day 2011 - DTrace Martin Cerveny
Presentation from training day for Oracle Solaris customers to explain features of Solaris DTrace.
Presentation covers following themes:
- architecture and syntax
- tools DTraceToolkit, chime, DTraceTazTool, DLight
- system DTrace (system providers like syscall, sched, vminfo ...)
- application DTrace (providers pid* and plockstat*, User-Level Statically Defined Tracing (USDT)), Dtrace for MySQL, Apache webserver, PHP module, Java and Firefox Javascript
Demolabs: http://www.edumaster.cz/java-developers-solaris-administrators-day/pdf/jsd2011_dtrace_labs.tar.gz
Zabezpečení nejen SSH na serveru pomocí Fail2Ban a jednoduchého honeypotu. / ...Security Session
Na workshopu si ukážeme základní zabezpečení nově nainstalovaného serveru pomocí iptables. Instalaci a nastavení Fail2Ban tak, aby sledoval logování SSH přístupů a při neoprávněném pokusu o příhlášení zablokoval IP adresu útočníka. Vyzkoušíme si i honeypotu, který nám pomůže útočníka zdržet. Nastíníme sledování logů jiných služeb, získávání blacklistovaných IP z abuse trackerů a povíme si i další tipy jak znepříjemnit atakování serveru.
V Google píšeme kód tak, aby se o něm dalo dokázat, že není náchylný k XSS a několika dalším útokům. Přednáška ukazuje, jak navrhujeme bezpečná API, konvertujeme na ně starý kód a vynucujeme, aby nebezpečná API nikdo nemohl použít. Děláme to kombinací pravidel kompilace kódu a nutnosti schválení některých změn bezpečnostním expertem. Většina použitých nástrojů je open-source (Bazel, Closure Templates, Closure Compiler) a dá se použít i mimo Google.
Po střední škole jsem rok pracoval na HPP a od té doby pracuji jen remote a nebo z homeoffice.
V přednášce mluvím o svých zkušenostech s remote work, proč si myslím že je to pro mě to pravé, ale řeším i proč to není vždy jen růžové.
Ukážeme si, že Doctrine není jenom ORMko a kdy jít o vrstvu níž. Jak DQL naučit věci, které v základu neumí, ale vaše databáze ano. A pár dalších tipů, jak nemít z databáze úplně hloupé úložiště.
Rychlé představení dalšího způsobu jak pracovat s daty, který vám umožňuje snadněji řešit invalidaci cache, která se velice snadno stane opravdu komplexní.
Standardní implementace ispell slovníků v PostgreSQL má bohužel několik nevýhod co se CPU a paměti týká. Napsal jsem extension která umožňuje slovníky inicializovat jen jednou a sdílet je mezi spojeními.
Softwarove protektory / KAREL LEJSKA, MILAN BARTOŠ [DEFENDIO]Security Session
Security by obscurity nemůže fungovat. Nebo ano? Softwarové protektory prošly během 16 let prudkým vývojem. Zhodnotíme, jaká je situace v roce 2016. Podíváme se, jak fungují dnešní protektory pro Windows a Android, ukážeme, co se snaží řešit a současně jaké problémy jejich nasazení přináší. Přednáška bude zajímavá i pro ty, které zajímá problematika malware.
Czech Oracle Solaris Administrators Day 2011 - DTrace Martin Cerveny
Presentation from training day for Oracle Solaris customers to explain features of Solaris DTrace.
Presentation covers following themes:
- architecture and syntax
- tools DTraceToolkit, chime, DTraceTazTool, DLight
- system DTrace (system providers like syscall, sched, vminfo ...)
- application DTrace (providers pid* and plockstat*, User-Level Statically Defined Tracing (USDT)), Dtrace for MySQL, Apache webserver, PHP module, Java and Firefox Javascript
Demolabs: http://www.edumaster.cz/java-developers-solaris-administrators-day/pdf/jsd2011_dtrace_labs.tar.gz
Zabezpečení nejen SSH na serveru pomocí Fail2Ban a jednoduchého honeypotu. / ...Security Session
Na workshopu si ukážeme základní zabezpečení nově nainstalovaného serveru pomocí iptables. Instalaci a nastavení Fail2Ban tak, aby sledoval logování SSH přístupů a při neoprávněném pokusu o příhlášení zablokoval IP adresu útočníka. Vyzkoušíme si i honeypotu, který nám pomůže útočníka zdržet. Nastíníme sledování logů jiných služeb, získávání blacklistovaných IP z abuse trackerů a povíme si i další tipy jak znepříjemnit atakování serveru.
V Google píšeme kód tak, aby se o něm dalo dokázat, že není náchylný k XSS a několika dalším útokům. Přednáška ukazuje, jak navrhujeme bezpečná API, konvertujeme na ně starý kód a vynucujeme, aby nebezpečná API nikdo nemohl použít. Děláme to kombinací pravidel kompilace kódu a nutnosti schválení některých změn bezpečnostním expertem. Většina použitých nástrojů je open-source (Bazel, Closure Templates, Closure Compiler) a dá se použít i mimo Google.
Similar to Před čím vás Nette ani Symfony neochrání (14)
Po střední škole jsem rok pracoval na HPP a od té doby pracuji jen remote a nebo z homeoffice.
V přednášce mluvím o svých zkušenostech s remote work, proč si myslím že je to pro mě to pravé, ale řeším i proč to není vždy jen růžové.
Ukážeme si, že Doctrine není jenom ORMko a kdy jít o vrstvu níž. Jak DQL naučit věci, které v základu neumí, ale vaše databáze ano. A pár dalších tipů, jak nemít z databáze úplně hloupé úložiště.
Rychlé představení dalšího způsobu jak pracovat s daty, který vám umožňuje snadněji řešit invalidaci cache, která se velice snadno stane opravdu komplexní.
1. Před čím tě Nette ani
Symfony neochrání
@ProchazkaFilip
#makeCodeNotWar
2. ~ Anonym, v současnosti v programu ochrana svědků
3. Staré verze
● PHP7
● I v Nette jsou security bugy
● Composer
● PECL
● Systém
● Roave/SecurityAdvisories
● Symfony security:check
4. Knihovny
● Je knihovna “stable”? Stará se o ni autor?
● Nastudovat api/internals
● Security audit?
● Nikdy nic nepředpokládejte!
● Integrační testy
● Pochopení flow dat - xdebug
15. SQL: MySQL sql mode
● strict = STRICT_TRANS_TABLES or STRICT_ALL_TABLES
○ Různá výchozí hodnota v závislosti na verzi MySQL
● ERROR_FOR_DIVISION_BY_ZERO + strict => error
● NO_UNSIGNED_SUBTRACTION
● NO_ZERO_DATE + strict => error
● NO_ZERO_IN_DATE + strict => error
16. Validace vstupů
● Vyvarovat se
○ Použití globals $_
○ filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
● Používat
○ Value/DTO objekty
■ Symfony Data Transformers?
○ Json Schema
○ JMS Serializer
○ Symfony/Validator
● Filesystém
○ fopen($file, "t");
21. File Upload
● $_FILES["file"]["type"];
● Kontrolovat
○ koncovku
○ mime typ
● Stripnout EXIF data a uložit bokem, pokud je potřebuju
● Zajistit, aby nešlo spustit soubor připojením .php za název
● Vlastní názvy pomocí
○ Strings::webalize(), lépe random/UUID
○ lomítka a speciální znaky
○ null byte exploity v názvu souboru
22. HTTPS & Security Headers
● Secured session sušenka (& permanent login cookie)
○ session.cookie_httponly=1
○ session.cookie_secure=1
○ session.use_only_cookies=1
● HSTS
○ Zavádět s malou expirací, postupně zvyšovat když vše funguje
● CORS
● CSP
○ https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
○ https://github.com/spaze/csp-config
○ https://csp-evaluator.withgoogle.com/
23. HTTPS & Security Headers
● SRi
○ Michal Špaček: HTTP hlavičky, Subresource Integrity a spol.
○ https://github.com/spaze/sri-macros
● securityheaders.io
● observatory.mozilla.org
24. Přístupný důvěrný obsah
● Čitelné .neon/.yml configy
● git, svn
● Uniknutí Laděnky
○ Debug mode
○ Přístupné na veřejné adrese, která je nezabezpečená
25. Insecure Direct Object References
● Možnost editace něčeho k čemu nemám přístup
● Možnost vykradení dat
● UUID (neřeší problém, jen ho zmírní)
27. Random
● Kde
○ Generovaná hesla
○ jakékoliv tokeny v url a formulářích
● Co nepoužívat
○ rand, srand, getrandmax -> mt_rand()
● Co použít
○ random_int()
○ random_bytes()
○ Random::generate()
● paragonie/random_compat
28. Crypto:
● Použít libsodium nebo openssl
● mcrypt je od 7.1 deprecated
● defuse/php-encryption
“The First Rule of Cryptography: Don't Implement it Yourself”
29. Hashování
Cryptographic Hashes
● Fast
● Only one input: The message
Password Hashes
● Intentionally slow
● At least three inputs:
○ The password
○ A per-user salt
○ A cost factor (how expensive to make the computation)
Source
30. Hashování
● memory-hard algoritmy
○ Scrypt
○ Argon2
○ Bcrypt - don’t be smart, just use Bcrypt
● Bcrypt omezení (bugs in the algorithm itself)
○ 72 znaků
○ Truncate NUL byte
○ base64_encode(hash('sha384', $password, true));
● password_hash() & password_verify()
● Kdy má smysl šifrovat hashe hesel?
○ Když je všechno ostatní vyřešný!
Source
31. Side-channel attack
● Constant-time porovnávání stringů
○ hash_equals()
○ baseN kódování paragonie/constant_time_encoding
○ Anthony Ferrara: It's All About Time
● password_verify() má ochranu zabudovanou
33. Díky všem co přispěli!
● Jan Tvrdík @jantvrdik
● Jakub Chábek @grongor
● Jan-Sebastian Fabík @janfabik
● David Matějka @matej_21
● Petr Soukup @petrsoukup
● Jan Škrášek @hrachcz
● Jiří Pudil @jiripudil
● Patrik Votoček @PatrikVotocek
● Michal Špaček @spazef0rze
● Jan Kuchař @honzakuchar