Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Szoftverbiztonság

    A tantárgy angol neve: Software Security 

    Adatlap utolsó módosítása: 2023. január 2.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar

    Mérnök-informatikus szak

    MSc képzés

    specializáció
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIHIMA21   2/1/0/v 5  
    3. A tantárgyfelelős személy és tanszék Dr. Buttyán Levente,
    A tantárgy tanszéki weboldala https://www.crysys.hu/education/ 
    4. A tantárgy előadója

    Gazdag András, tanársegéd, HIT

    Ládi Gergő, tanársegéd, HIT

    Futóné Papp Dorottya, tanársegéd, HIT

    Dr. Ács Gergely, docens, HIT 

    5. A tantárgy az alábbi témakörök ismeretére épít IT biztonság, A programozás alapjai 1-3, Szoftvertechnikák
    6. Előtanulmányi rend
    Kötelező:
    NEM
    (TárgyEredmény( "BMEVIHIMA06", "jegy" , _ ) >= 2
    VAGY
    TárgyEredmény("BMEVIHIMA06", "FELVETEL", AktualisFelev()) > 0)

    A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

    A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

    Ajánlott:
    IT biztonság, A programozás alapjai 1-3, Szoftvertechnikák
    7. A tantárgy célkitűzése A tárgy célja, hogy átfogó képet adjon a szoftverbiztonság területéről a programozási nyelvek és az alkalmazások szintjén felmerülő biztonsági problémák, kihívások, és az azok megoldására használt módszerek elveinek és gyakorlati megvalósításainak bemutatásával.

    A tárgy olyan elvi tudás és gyakorlati képességek elsajátítását teszi lehetővé, melyek segítik a biztonságos alkalmazások tervezését és megkönnyítik a szoftverfejlesztés során előforduló tipikus programozási hibák elkerülését. A tárgyban szerzett ismeretek lehetővé teszik továbbá az alkalmazások biztonsági tesztélésének megfelelő tervezését és végrehajtását.
    8. A tantárgy részletes tematikája
        Háttér és motiváció: a szoftverbiztonság fontosságának a bemutatása példákon keresztül, komolyabb kárt okozó korábbi sérülékenységek áttekintése, aktuális trendek megismerése

        Hitelesítés és engedélyezés alkalmazásokban: felhasználóhitelesítés és jogosultságkezelés módszereinek részletes bemutatása, elterjedt könyvtárak és szabványok bemutatása a gyakorlatban

        Webes alkalmazások biztonsága – szerver oldal: a webes alkalmazásokat érintő általános problémák bemutatása, a leggyakoribb veszélyek elleni védekezés ismertetése a szerver oldalon 

        Webes alkalmazások biztonsága – API biztonság: a webes API-k fejlődésének rövid bemutatása, a leggyakoribb támadások és védekezési módszerek megismerése

        Webes alkalmazások biztonsága – kliens oldal: a böngészőkben alkalmazott biztonsági mechanizmusok bemutatása, SOP és CORS, a Javascript nyelv sajátosságai és veszélyei, a leggyakoribb támadások (XSS, CSRF, Clickjacking) és védekezések (CSP) megismerése

        Menedzselt nyelvek biztonsága – támadások: a menedzselt nyelvek sajátosságainak bemutatása (reflexió), a magas szintű nyelveket érintő támadások megismerése (integer overflow, command injection)

        Menedzselt nyelvek biztonsága – védekezés: menedzselt nyelveken előforduló sérülékenységek elleni védekezés, a tipikus problémák (deadlock, szálkezelés nehézségei, TOCTTOU, szerializáció) elkerülése

        Mobil alkalmazások biztonsága – Android: az Android környezet sajátosságainak a bemutatása, a tipikus kódolási hibák elkerülése, a fejlesztési folyamat során a biztonság megjelenése

        Mobil alkalmazások biztonsága – iOS: az iOS és a hozzá kapcsolódó ökoszisztéma sajátosságainak a bemutatása, a mobil alkalmazásokat érő tipikus támadások, a fejlesztés során leggyakrabban előforduló sérülékenységek megismerése

        Memóriakorrupció – támadások: alacsony szintű szoftverfejlesztés sajátosságainak az áttekintése, a C és C++ nyelv memóriakezelési kihívásai, a buffer overflow és az abból kiinduló támadások (return-to-Libc, return oriented programming) bemutatása

        Memóriakorrupció – védekezés: a memóriakezelési hibákat kihasználó támadások megállítása, nyelvi szintű védelmek, szoftverfejlesztési megoldások, operációs rendszer szintű védelmek

        Szoftverek biztonsági tesztelése: a funkcionális és biztonsági tesztelés közötti különbségek és kihívások, a különböző tesztelési megközelítések áttekintése, leghatékonyabb módszerek bemutatása

        Gépi tanulás alkalmazása a szoftverbiztonság növelésére 1: Gépi tanulási alapfogalmak, felügyelt és önfelügyelt tanulás, klasszifikáció, kód stilometria

        Gépi tanulás alkalmazása a szoftverbiztonság növelésére 2: Gép tanulás alapú bug detekció forráskódban. Fuzz-tesztelés támogatása gépi tanulással (pl. input mutáció genetikus algoritmusokkal) 

    A gyakorlatok/laborok részletes tematikája

        Biztonságos szoftverek tervezési módszerei – házi előkészítés

        Webes alkalmazások biztonsága

        Menedzselt nyelvek biztonsága

        (ZH)

        Mobil alkalmazások biztonsága – Android

        Memóriakorrupciós támadások

        Szoftverek biztonsági tesztelése 

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)
        Előadás 

        Tantermi gyakorlat

        Önálló munka (házi feladat megoldása)
    10. Követelmények Szorgalmi időszakban
        

    1 db ZH

    2 db házi feladat

     

    Az aláírás megszerzésének feltétele a ZH és mindkét házi feladat (egyenként is) sikeres teljesítése. Mind a ZH, mind a házi feladatok esetében, a sikeres teljesítéshez a maximálisan elérhető pontszám minimum 40%-át kell elérni. 

     

    A ZH eredménye nem számít bele a félévvégi jegybe. A házi feladatokból maximálisan 2x25 pont szerezhető, a teljesítésükhöz tehát minimum 2x10 pontot kell szerezni. A megszerzett pontok beszámítanak a félévvégi jegybe.

    Vizsgaidőszakban
        

    Írásbeli vizsga

     

    A vizsga sikeres teljesítéséhez a maximálisan elérhető pontszám minimum 40%-át kell elérni. A vizsgán maximálisan 50 pont szerezhető, a sikeres vizsgához tehát minimum 20 pontot kell elérni.

     

    A tárgyból szerzett pontszám: P = V + HF1 + HF2, ahol V a vizsgán szerzett pontszám, HF1 és HF2 pedig a házi feladatokból szerzett pontszám.

     

    A félévvégi jegy számítása:

    Jeles (5) – ha P >= 85 pont 

    jó (4) – ha P >= 70 pont

    közepes (3) – ha P >= 55 pont

    elégséges (2) – ha P >= 40 pont

    elégtelen (1) – ha P < 40 pont
    11. Pótlási lehetőségek A sikertelen vagy mulasztott ZH egyszer pótolható.

    A házi feladatok beadási határideje a szorgalmi időszakban van, a pontos határidők kihirdetése a félév első hetében történik. A házi feladatok pótlólagosan a kihirdetett határidők után maximum 1 héttel adhatók be, az így beadott házi feladatokra azonban 15% pontlevonás kerül alkalmazásra.
    12. Konzultációs lehetőségek Az előadóval előre egyeztetett időpontban.
    13. Jegyzet, tankönyv, felhasználható irodalom The Cyber Security Body Of Knowledge (CyBOK) online gyűjtemény (https://www.cybok.org/) kapcsolódó fejezetei.

    Ross Anderson, Security Engineering, Wiley, 2020

    Loren Kohnfelder, Designing Secure Software: A Guide for Developers, No Starch Press, 2021

    Jon Erickson, Hacking: The Art of Exploitation, 2nd Edition, No Starch Press, 2008
    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra42
    Félévközi készülés órákra0
    Felkészülés zárthelyire20
    Házi feladat elkészítése40
    Kijelölt írásos tananyag elsajátítása8
    Vizsgafelkészülés40
    Összesen150
    15. A tantárgy tematikáját kidolgozta Dr. Buttyán Levente, egyetemi tanár, HIT

    Gazdag András, tanársegéd, HIT