Információbiztonság az alkalmazásfejlesztésben Röviden az információbiztonságról Miért van erre szükség az alkalmazásfejlesztésben? Néhány ismertebb támadás Amire a biztonságos fejlesztés érdekében figyelni kell Oroszi Eszter 2009.10.12. Biztonság Információ Bonyolult, nehezen meghatározható fogalom. A témával foglalkozók mindegyike által elfogadott definíció nem létezik. A Magyar Értelmezı Kéziszótár szerint: veszélyektıl vagy bántódástól mentes (zavartalan) állapot. Egyértelmően elfogadott definíciója nincsen. A valóság (vagy egy részének) visszatükrözıdése. /Munk/ Feldolgozott adat. Adat Információelmélet A rögzített információ. Tulajdonképpen minden, amit fel lehet dolgozni. Szükséges adathordozó, de független attól. Információforrás Adó Átviteli csatorna Vevı Cél ADAT INFORMÁCIÓ Zajforrás
Információbiztonság Zajforrás Szándékos vagy véletlen külsı zaj minimalizálása, az információ torzításának megakadályozása Kifelé az információ torzítása, hogy az az illetéktelenek számára értelmezhetetlen legyen. CIA elv Confidentiality = Bizalmasság Integrity = Sértetlenség Availability = Rendelkezésre állás (ISO/IEC 13335-1:2004) Bizalmasság Sértetlenség Olyan tulajdonság, amely biztosítja, hogy az információt jogosulatlan egyének, entitások vagy folyamatok számára nem teszik hozzáférhetıvé, és nem hozzák azok tudomására. (ISO/IEC 13335-1:2004) Az információ pontosságának és teljességének védelmét biztosító tulajdonság. (ISO/IEC 13335-1:2004) Ide soroljuk még: Letagadhatatlanság (Non-repudiation) Elszámoltathatóság (Accountability) Hitelesség (Authenticity) Rendelkezésre állás Biztonsági rendszer kialakítása Olyan tulajdonság, amely lehetıvé teszi, hogy az adott információ feljogosított entitás által támasztott igény alapján hozzáférhetı és igénybe vehetı legyen. Cél mindezek biztosítása és folyamatos fenntartása! Fontos: a biztonság nem egy termék, hanem egy folyamat! (ISO/IEC 13335-1:2004)
Alapszabályok A védelem ne kerüljön többe, mint a védett érték! Teljes körő, egész rendszerre kiterjedı védelem Minden fenyegetést figyelembe kell venni Változások követése, folyamatos megvalósulás Törekedjünk az egyenszilárdságra! Kompromisszumok vállalása Az információbiztonság 3 alapkérdése Mit kell védeni? Mitıl kell védeni? Milyen módon akarjuk megvédeni? Miért van szükségünk minderre az alkalmazás-fejlesztésben? Szoftverkörnyezet fenyegetései A felhasználók hozzáférnek valamilyen fejlesztıi környezethez Time of Check/Time of Use (ToC/ToU) Buffer overflow Covert channel Backdoor Stb. ToC/ToU Buffer overflow Time of Check/Time of Use, azaz Ellenırzés ideje/használat ideje Például amikor valaki dolgozik a rendszerben és a rendszergazda egyszercsak kitiltja, azonban szoftverhiba következtében a felhasználó még jogosultan fejezheti be az egyébként jogosulatlan módosítást. Puffer túlcsordulás A támadó egy ellenırizetlen puffert használ ki a programban, és a saját adataival írja felül a programkódot. Programozási hiba folytán a puffer méretén túl írható.
Covert channel Backdoor Rejtett csatorna Biztonsági politikát megsértı adatok közlését teszi lehetıvé. Hálózati mőveletet vagy csatornát használnak az információ kiszivárogatásához. Hátsó kapu/csapóajtó Illegális hozzáférést tesz lehetıvé. Kártékony programok Vírus Vírus Féreg Trójai program Rootkit Kém- és reklámprogramok Stb. Olyan önsokszorosító kártékony program, amely más programokhoz vagy dokumentumokhoz kapcsolódik hozzá. Rendelkezik a következı tulajdonságokkal: Sokszorozódik Rejtızködik Kárt okoz Vírus Vírus Vírusok felépítése: Reprodukciós rész Aktivizálási mechanizmus Objektív rutin Fertızési stratégiák: Közvetlenül fertızı vírusok Rezidens vírusok Rengeteg típusa van: Boot vírus Makró vírus Script vírus Stb. Polimorf vírus: Mutációs vírus Olyan vírus, amely képes változtatni a kódját, mindig más módon és más kulccsal titkosítja magát. Pl. WHALE, V2P6, Mutation Engine
Féreg Trójai programok A vírusokhoz hasonló kártékony program, különbség, hogy nincsen szüksége gazdaprogramra. Pl. MyDoom Trójai faló története Hasznosnak vagy érdekesnek tőnı, valójában azonban rosszindulatú programok. Elıfordul, hogy valódi funkciójukat betöltı programok, csak káros mellékhatásokkal Pl. ál-vírusirtók. Rootkitek Más kártevık Rendszergazda jogosultságok szerzése Eredetileg UNIX/Linux rendszerekre készültek Elrejtik saját és más programok jelenlétét Több célt szolgálhatnak: Információk győjtése Nyomok eltüntetése Vezérlés fenntartása Más támadók kizárása Kémprogramok Spyware Céljuk a felhasználók személyes adatainak megszerzése illegális úton. Pl. jelszavak és hitelkártyaszámok lopkodása. Reklámprogramok Adware Felhasználók adatainak megszerzése és üzleti célra felhasználása. Pl. internetezési szokások figyelése. Adatbázisok fenyegetései Adatbázisok fenyegetései Szándékosan vagy véletlenül elkövetett helytelen módosítás. ToC/ToU itt is Az adatok sértetlensége sérül adatbeviteli hiba vagy hibás feldolgozás miatt. Többszörös adattárolás problémája. Aggregálás: amikor nem érzékeny adatok kombinálásával érzékeny adatok hozhatók létre. Deadlock/holtpont: akkor jelentkezik, amikor két felhasználó egyszerre próbál hozzáférni egy adott adathoz. Különféle eltérítéses, megkerüléses támadások. SQL injection DoS támadások
SQL injection Néhány példa SQL injektálás/befecskendezés Az SQL nyelvre épül, a felhasználói felület és az adatbázis között SQL parancsok teszik lehetıvé az adatmozgatást. Webes felületen keresztüli támadási forma. A bemenı adatok közé SQLlekérdezéseket szúrhatunk be. Pl. URLbe, őrlap beviteli mezıbe. Ha tudom a felhasználónevet: Eszter -- A lekérdezés: SELECT tanaradatok FROM tanarok WHERE tanar = Eszter AND jelszo = barmi Néhány példa Védekezés ellene Ha nem tudom a felhasználónevet: OR 1=1 -- A lekérdezés: SELECT tanaradatok FROM tanarok WHERE tanar = OR 1=1 Különleges karakterek kiszőrése Felhasználók által bevihetı karakterek számának korlátozása Tárolt eljárások használata (elıre megírt és beépített lekérdezések). DoS támadások DDoS támadás DoS = Denial of Services, vagyis szolgáltatás megtagadás/elárasztás Célja a hálózat túlterhelése, megbénítása, mely ezáltal nem tudja ellátni feladatát. A lényege, hogy sok kéréssel bombázzuk a szervert, így az képtelen több kérést kiszolgálni, ezért elutasítja ıket. Distributed Denial of Services = Elosztott szolgáltatás megtagadás Annyiban különbözik az elıbbitıl, hogy egyszerre több géprıl érkeznek kérések Jóval nehezebb védekezni ellene
Védekezés ellenük Biztonságos fejlesztés Ez ellen a támadás ellen különösen nehéz védekezni Az alkalmazást már a kezdetektıl fogva úgy kell megtervezni, hogy ellenálljon az ilyen jellegő támadásoknak IDS rendszerek Sávszélesség-kezelı megoldások Melyik szakaszban van szükség a biztonságra? Tervezés Kivitelezés, megvalósítás Mennyire szenzitívek az alkalmazás által tárolt, kezelt adatok? Kockázatok felmérése, milyen fenyegetések jelenthetnek veszélyt. Milyen védelmi intézkedéseket kell és lehet bevezetni? Költség-haszon elemzés elvégzése Biztonsági specifikációk meghatározása. Tesztelési terv kidolgozása. Biztonsági kód megírása programba illesztése és tesztelése. Hozzáférés-védelem Megfelelı dokumentálás Elfogadás és telepítés Mőködtetés Biztonsági tesztelés az integrált környezetben is. A dokumentációnak tartalmaznia kell a biztonságos mőködés feltételeit is. Az elfogadási tesztelés az utolsó lehetıség a sérülékenységek felfedezésére! Nem szabad megfeledkezni a felhasználók oktatásáról sem! Biztonsági mentések és visszaállítások. A megfelelı biztonságos mőködés folyamatos figyelemmel kísérése. Kockázatok idıszakos felülvizsgálata. Patch-elés
Nyílt vs. zárt forráskód Melyik a biztonságosabb? A nyílt forráskód elınye és hátránya: Bárki átnézheti a forráskódot megmondhatja a benne talált hibát Bárki átnézheti a forráskódot kihasználhatja a sebezhetıséget