CL-STS
Új Biztonsági tesztelés
Ismertető
A sebezhetőségek és a támadási módszerek megismerése után a résztvevők megismerkednek a biztonsági tesztelés általános megközelítésével és módszertanával, valamint a konkrét sebezhetőségek feltárására alkalmazható technikákkal. A biztonsági tesztelést a rendszerre vonatkozó információk összegyűjtésével kell kezdeni (ToC, azaz az értékelés célpontja), majd egy alapos fenyegetésmodellezéssel kell feltárni és értékelni az összes fenyegetést, és így eljutni a legmegfelelőbb, kockázatelemzésen alapuló teszttervhez.
A biztonsági értékelések az SDLC különböző lépéseiben történhetnek, így tárgyaljuk a tervezés felülvizsgálatát, a kód felülvizsgálatát, a rendszerrel kapcsolatos felderítést és információgyűjtést, a megvalósítás tesztelését és a környezet tesztelését és keményítését a biztonságos telepítéshez. Számos különböző biztonsági tesztelési technikát mutatunk be részletesen, mint például a taint-elemzés és a heuristics-based kódvizsgálat, a statikus kódelemzés, a dinamikus webes sebezhetőségi tesztelés vagy a fuzzing. Különböző típusú eszközök kerülnek bemutatásra, amelyek a szoftvertermékek biztonsági értékelésének automatizálása érdekében alkalmazhatók, amit számos gyakorlat is alátámaszt, ahol ezeket az eszközöket a már tárgyalt sebezhető kód elemzésére futtatjuk. Számos valós esettanulmány segíti a különböző sebezhetőségek jobb megértését.
Ez a tanfolyam felkészíti a tesztelőket és a minőségbiztosítási munkatársakat a biztonsági tesztek megfelelő megtervezésére és pontos végrehajtására, a legmegfelelőbb eszközök és technikák kiválasztására és használatára, valamint a rejtett biztonsági hibák megtalálására, és ezáltal olyan alapvető gyakorlati készségeket ad, amelyeket akár már a következő munkanapon is alkalmazni tud majd.
Tematika
- Az IT biztonságtól a biztonságos programozásig: A biztonság természete, Mi a kockázat? IT-biztonság vs. biztonságos kódolás, a sebezhetőségektől a botnetekig és a kiberbűnözésig, a biztonsági hibák természete, a fertőzött számítógéptől a célzott támadásokig.
- Webalmazások biztonsága: Injection: alapelvek, SQL injection (tipikus SQL injection támadási módszerek, Blind és time-based SQL injection, SQL injection védelmi módszerek, az adattárolási keretrendszerek hatása az SQL injection-ra, SQL injection észlelés), egyéb injection hibák (parancs injection). Broken authentication: Munkamenet kezelési veszélyek, a munkamenetkezelés legjobb gyakorlatai, munkamenetkezelés Java-ban, Cookie-attribútumok beállítása. Érzékeny adatok kitettsége: szállítási réteg biztonsága, HTTPS érvényesítés. XML külső entitás (XXE): XML entitás bevezetése, XML külső entitással kapcsolatos támadás (XXE) (erőforrás bevonása, URL meghívás, paraméter entitás, megelőzés). Broken access control: Tipikus hozzáférés-szabályozási gyengeségek, bizonytalan közvetlen objektumhivatkozás (IDOR), védelem az IDOR ellen, bizonytalan közvetlen objektumhivatkozás tesztelése. Biztonsági félrekonfigurálás: a környezet konfigurálása, bizonytalan fájlfeltöltés, fájlfeltöltések szűrése - érvényesítés és konfiguráció. Cross-Site Scripting (XSS): állandó, visszavert, DOM-alapú, XSS megelőzés, sebezhetőségek felderítése, szűrők megkerülése. Insecure deserialization: a Serialization és a deserialization alapjai, biztonsági kihívások, Deserialization a Java-ban, szolgáltatásmegtagadás a Java deserialization-el, a deserialization-tól a kódvégrehajtásig, POP payload targeting InvokerTransformer (Java), valós Java deserialization sebezhetőségek, a deserialization-al kapcsolatos problémák – JSON. Ismert sebezhetőségű komponensek használata, elégtelen naplózás és felügyelet: észlelés és válaszadás.
- Ügyféloldali biztonság: JavaScript biztonság, azonos eredetpolitika, egyszerű kérések, Preflight kérések. Clickjacking (Clickjacking elleni védelem, keretfeltörés elleni védelem - védelmi szkriptek elutasítása, védelem a frame-busting ellen). AJAX biztonság: XSS az AJAX-ban, szkript injection támadás AJAX-ban, XSS elleni védelem AJAX-ban, CSRF védelem AJAX-ban.
- Biztonsági tesztelés: funkcionális tesztelés vs. biztonsági tesztelés, biztonsági sebezhetőségek, prioritás – kockázatelemzés, biztonsági értékelések a különböző SDLC fázisokban, biztonsági tesztelési módszertan: a teszttervezés lépései (kockázatelemzés), Scoping és információgyűjtés (Stakeholders, eszközök, a tesztelés biztonsági célkitűzései), fenyegetések modellezése (támadói profilok, fenyegetésmodellezés, fenyegetésmodellezés visszaélési esetek alapján, SDL fenyegetésmodellezés, STRIDE veszélykategóriák, ábrázolás - a DFD elemei, adatáramlási diagram, kockázatelemzés - a fenyegetések osztályozása, DREAD kockázatértékelési modell), a tesztelés lépései (tesztesetek levezetése, tesztek elvégzése, teszteredmények feldolgozása, veszélycsökkentési koncepciók, MS SDL szabványos kockázatcsökkentés technikái, felülvizsgálati szakasz.
- Biztonsági tesztelési technikák és eszközök: általános tesztelési megközelítések és tervezési felülvizsgálat (a biztonsági követelmények értékelése és a biztonság szempontjából kritikus pontok – hotspots azonosítása.
- A forráskód felülvizsgálata: kódellenőrzés a szoftverbiztonság érdekében, hibák elemzése, Heuristic-based.
- Input érvényesítés: fogalmak, egész számokkal kapcsolatos problémák: negatív egész számok ábrázolása, egész számok túlcsordulása, IntOverflow gyakorlat, a Math.abs(Integer.MIN_VALUE) értéke, egész szám probléma (legjobb gyakorlatok, számtani túlcsordulás elkerülése – összeadás, aritmetikai túlcsordulás elkerülése – szorzás, aritmetikai túlcsordulás észlelése Java 8-ban, az egész számokkal kapcsolatos problémák tesztelése.
- A biztonsági funkciók helytelen használata: a biztonsági funkciók használatával kapcsolatos tipikus problémák, jelszókezelés (jelszókezelés- és tárolás, különleges célú hash-algoritmusok jelszavak tárolására, Argon2 és PBKDF2 implementációk Java-ban, bcrypt és scrypt implementációk Java-ban, tipikus hibák a jelszókezelésben), statikus kódelemzés.
- A végrehajtás tesztelése: kézi vs. automatizált biztonsági tesztelés, Penetration testing, stressztesztek, Proxy servers and sniffers (tesztelés proxies-el és sniffers-el, packet analyzers és proxies), web vulnerability scanners (vulnerability scanner használata, SQL injection eszközök).
- Telepítési környezet: a környezet felmérése, konfigurációkezelés, Hardening (hálózati szintű védelem, kiszolgálói védelem - a legkisebb jogosultság elve, hardening the deployment – szerveradminisztráció és hozzáférés-szabályozás), Patch és vulnerability management (Patch management, Vulnerability repositories, Vulnerability attribútumok, Common Vulnerability Scoring System – CVSS, Vulnerability management szoftverek.
- A biztonság és a biztonságos kódolás alapelvei: Matt Bishop robusztus programozásának alapelvei és Saltzer és Schroeder biztonsági elvei.
Szükséges előképzettség
Legalább kétéves gyakorlat általános minőségbiztosítási és tesztelési területen. Mivel a tananyag angol nyelvű, ezért alapfokú, dokumentumolvasás szintű angol nyelvtudás szükséges. Az előadás magyar nyelven zajlik.