Biztonságos programozás

A tantárgy angol neve: Secure Programming

Adatlap utolsó módosítása: 2012. május 30.

Tantárgy lejárati dátuma: 2015. június 30.

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

 

Villamosmérnöki szak 

Mérnök informatikus szak

Szabadon választható tantárgy

 

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIMIBV08   4/0/0/v 4  
3. A tantárgyfelelős személy és tanszék Hornák Zoltán,
A tantárgy tanszéki weboldala http://www.mit.bme.hu/oktatas/targyak/vimivb08/
4. A tantárgy előadója

Hornák Zoltán, mestertanár, okleveles mérnök informatikus

 

 

 

 

5. A tantárgy az alábbi témakörök ismeretére épít C/C++ és JAVA programozási ismeretek

 

Alapvető hálózati ismeretek

 

6. Előtanulmányi rend
Ajánlott:
-
7. A tantárgy célkitűzése

Az előadások során a hallgatók megismerhetik a tipikus programozói hibákból eredő biztonsági lyukakat, az ezekre épülő támadási és védekezési módszereket, valamint a C/C++ és a JAVA nyelv, illetve a WEB-es technológiák specifikus sérülékenységeit. A tantárgy célja, hogy – nem csak biztonság-kritikus rendszereket fejleszteni kívánókkal – megismertesse a programhibákból eredő biztonsági lyukak veszélyeit és olyan fejlesztési módszerekre képezze őket, amelyek betartásával ezen hibák, ennek eredményeként pedig a tipikus biztonsági lyukak elkerülhetőek.

8. A tantárgy részletes tematikája

 

 


Biztonsági szempontból veszélyes programozói hibák
    Kihasználható biztonsági lyukak veszélyei
    Biztonsági lyukak rendszerezése
Gyakori programozói hibákból eredő biztonsági lyukak
    Verem túlcsordulás (stack overflow / buffer overflow – BoF)
    Halom túlcsordulás (heap overflow)
    Szám túlcsordulás (integer overflow) / előjeles hiba (signedness bug)
    Formázó string sebezhetősége (printf format string vulnerability – PFS)
    Tömbindexelési hiba (array indexing error) / unicode bug
Nem kifejezetten programozói hibákból eredő biztonsági lyukak
    Mellék csatornás támadások (side channel attacks) – RSA timing attack
    Sorrendi hibák, versenyhelyzetek (time-of-checking-to-time-of-usage – toctou / serialization errors / racing conditions)
    Protokoll hibák és következményeik
Védekezés a biztonsági lyukak ellen – alapelvek
    IT biztonság tervezési alapmódszerek
    Védekezési alapelvek
    Specifikus védelem a típushibák ellen – veszélyforrás alapú megközelítés
    Különböző szintű specifikus védelmek
Védekezés a biztonsági lyukak ellen – gyakorlati módszerek
    Verem túlcsordulás (stack overflow)
    Halom túlcsordulás (heap overflow)
    Szám túlcsordulás (integer overflow, signedness bug)
    Rejtett csatornák kivédése (timing channel)
Biztonságos programozási technikák
    Saltzer 8 alapelve
    Bishop féle robosztus programozási alapelvek
Az Internet technológia és a Web szolgáltatások veszélyei
    Az Internet technológia és veszélyei
    Internet biztonsági követelményei
    Veszélyforrások modellezése
    Web Services veszélyforrások
Web szolgáltatások biztonsága
    Web services biztonsági alapok
    Személyazonosság-kezelés (Identity management)
    Alap technológiák
    Web Services biztonsági szabványok
    Security Assertion Markup Language (SAML)
    SAML Profilok
    SAML Architektúra
    Kapcsolódó szabványok
J2EE Security
    Java 2 Platform Security alapok
    J2EE Biztonsági architektúrája
    Deklaratív és programozott biztonsági szolgáltatások
    J2EE Component/Tier-Level Security
    J2EE Security
    JAVA és a rejtjelezés
    J2EE Client Security
JAVA specifikus sérülékenységek
    JAVA nyelv sajátosságai, biztonsági előnyei (C/C++-szal szemben)
    API hívások típushibái (API Abuse)
    Gyenge kódminőségből származó veszélyek (Code Quality)
    Információ-beágyazási hibák (Encapsulation)
    Környezeti veszélyek (Environment)
    Programhibákból származó biztonsági veszélyek (Errors)
    Bemenet-ellenőrzési hibák (Input validation and representation)
    Biztonsági funkciók (Security Features)
    Időzétési és állapotproblémák (Time and State)

 

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

Előadás.

10. Követelmények a.       A szorgalmi időszakban: kötelező házi feladat

 

b.       A vizsgaidőszakban: szóbeli vizsga

 

c.       Elővizsga: nincs

 

11. Pótlási lehetőségek

A házi feladat (új forma: otthoni feladat) beadása a pótlási időszakban is lehetséges.

12. Konzultációs lehetőségek

A konzultáció e-mailben történik: hornak@mit.bme.hu

Szükség esetén szóban is van mód konzultációra.

 

13. Jegyzet, tankönyv, felhasználható irodalom

Elektronikus jegyzetek:

cím: "Védekezés a biztonsági szempontból veszélyes programozói hibák ellen"  

terjedelem: 50 oldal, magyar 

szerző: Hornák Zoltán

cím: "Secure C, C++, and Java Programming"  

terjedelem: Power Point slide sorozat, 590 oldal, magyar 

szerző: Hornák Zoltán 

14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra56
Félévközi készülés órákra20
Felkészülés zárthelyire0
Házi feladat elkészítése10
Kijelölt írásos tananyag elsajátítása12
Vizsgafelkészülés22
Összesen120
15. A tantárgy tematikáját kidolgozta

Hornák Zoltán, mestertanár, okleveles mérnök informatikus

Egyéb megjegyzések -