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