2. Követelmények - SoosSarolta/ITSecHW_Virucid GitHub Wiki

Mielőtt belekezdenénk az online webáruház implementálásába, első lépésként szükség van a követelmények meghatározására; ideértve a funkcionális és biztonsági előírásokat is. A funkcionális követelményeket UML use-case diagramok segítségével, a biztonsági követelményeket pedig az ún. Threat, Risk, Vulnerability Analysis módszerrel dokumentáljuk.

2.1 Funkcionális követelmények

Mivel a rendszernek többféle felhasználója (regisztrált vásárlók, adminisztrátorok) is lesz, számos alkalmazási szcenárióra kell felkészíteni, melyeket az 1. ábrán foglaltuk össze.

A szoftverrel szemben támasztott funkcionális követelmények az alábbiak:

  • A felhasználók számára lehetővé kell tenni különböző CAFF fájlok feltöltését, letöltését; a közöttük való keresést
  • A felhasználók számára lehetővé kell tenni megjegyzés hozzáfűzését az egyes CAFF fájlokhoz
  • Az adminisztrátorok feladata a webshop üzemeltetése, adatok, illetve felhasználói információk módosítása és törlése
  • A program távolról is elérhető kell, hogy legyen

A rendszerben található távoli szolgáltatásnak képesnek kell lennie a CAFF fájlformátum feldolgozására, illetve abból egy előnézet generálására a webshop-ban való megjelenítéshez.


1. ábra: A rendszer felhasználási szcenáriói

2.2 Biztonsági követelmények és célok

A funkcionális követelmények segítségével a rendszert és annak környezetét nagyvonalakban fel tudjuk vázolni, ahogy azt a 2. ábra is mutatja. Az online áruházat regisztrált vásárlók és adminisztrátorok használhatják, velük kerülhet interakcióba a rendszer. Mivel a tőlük érkező kéréseket, a viselkedésüket nem tudjuk kontrollálni, ezért a velük történő interakció bizalmi kérdéseket vet fel. Ezen kérdéskörök az ábrán piros szaggatott vonallal vannak jelölve. A rendszer működtetéséhez szükség lesz a felhasználók (adminisztrátorok, vásárlók) adatainak, illetve az áruházban vásárolható egyedi formátumú animált képek tulajdonságainak tárolására is. A tárolt adatok közötti kapcsolatok létesítését is meg kell valósítanunk: a felhasználók és a feltöltött képeik, továbbá a CAFF fájlok és a felhasználók által hozzájuk fűzött megjegyzések között van összeköttetés. Az online áruház, mint szoftver, biztonsági követelményeit hat nagy kategóriába sorolhatjuk: CIA és AAA. Az egyes kategóriákhoz az alábbi követelményeket határozhatjuk meg:


2. ábra: Az online áruház és környezete

Bizalmasság (confidentiality)

  • Az online áruház regisztrált felhasználóinak személyes adatait csak ők maguk, illetve az adminisztrátorok ismerhetik meg.
  • Az adminisztrátorok minden felhasználó személyes adatait megismerhetik, mivel ezeket módosítani is tudniuk kell.
  • A felhasználók csak a saját (múltbéli) vásárlásaikat láthatják.
  • A felhasználók bármely más felhasználó által bármely CAFF fájlhoz írt hozzászólást megtekinthetik.

Integritás (integrity)

  • A regisztrált felhasználók csak saját személyes adataikat módosíthatják.
  • Csak regisztrált felhasználók tölthetnek fel / le CAFF fájlokat.
  • Csak regisztrált felhasználók fűzhetnek megjegyzést CAFF fájlokhoz.
  • Csak az adminisztrátorok jogosultak bármely felhasználó adatainak módosítására, illetve a felhasználói fiók törlésére.

Elérhetőség (availability): A mi esetünkben ezen követelménykategória nem releváns, semmilyen tevékenység nincs időszakhoz kötve.

Autentikáció (authentication)

  • A regisztrált felhasználók csak bejelentkezés után írhatnak megjegyzéseket, tölthetnek fel, illetve vásárolhatnak fájlokat.
  • Adatok módosítását és törlését csak adminisztrátori jogosultsággal lehet végrehajtani.
  • A regisztrált felhasználók csak saját nevükben tölthetnek fel CAFF fájlokat.

Autorizáció (authorization)

  • A CAFF fájl feltöltése, vásárlása, illetve megjegyzések írása szerepkörhöz kötött tevékenység.

Auditálás (auditing)

  • A felhasználók, illetve adminisztrátorok tevékenységét naplózni kell.

A követelmények ismeretében meghatározhatjuk a megvalósítandó biztonsági célokat. Ilyen cél például a biztonságos adattárolás, a naplózás, a szerepkör alapú hozzáférés-védelem, valamint a felhasználói fiókok menedzsmentje.


3. ábra: Felhasználóhoz köthető use case-k

2.3 Threat assessment

A threat assessment két nagyobb elemből áll: assetek azonosítása és az assetekre leselkedő veszélyek (threat) azonosítása. Az assetek azonosításához iteratívan kell elemeznünk a rendszer use case-eit, figyelembe véve a biztonsági követelményeket is. Ezek a követelmények a 2.2-es pontban találhatók.

2.3.1 Assetek megállapítása

A kezdeti adatfolyam diagramot kibővíthetjük további komponensekkel az assetek megállapítása és elemzése folyamán. Ehhez egyesével elemeznünk kell az 1. ábrán látható use-case-eket. Három assetet különböztethetünk meg:

  • emberi assetek
  • fizikai assetek
  • logikai assetek

Kezdjük az emberi assetekkel. Egy ilyen assetünk van: ezek a felhasználók, hiszen az adminisztrátor is csak egy különleges jogokkal rendelkező felhasználó a rendszerünk szempontjából. A felhasználók négy különböző use-case-ben jelennek meg: CAFF fájl feltöltése, CAFF fájl letöltése, CAFF fájlok közti keresés, és megjegyzés fűzése CAFF fájlokhoz. Ezen use-case-ek a 3. ábrán láthatók. Az adminisztrátoroknak képesnek kell lenniük továbbá a CAFF fájlok törlésére, és a felhasználók adatainak módosítására, ill. törlésére. Ezen use-case-eket az 5. ábráról olvashatjuk le. A biztonsági követelmények kielégítéséhez csak egy további use-case-re van szükségünk: a bejelentkezésre.

A rendszer üzemeltetéséhez szükségünk lesz fizikai assetekre is. A szoftverek futtatásához kelleni fognak szerverek, melyek kezdeti számának pontos meghatározásához és későbbi skálázhatóságához figyelembe kell vennünk a felhasználók számát. Távoli elérést biztosítandó hálózati eszközökre is szükségünk lesz. Végül pedig a felhasználói elvárással arányos méretű adatbázist is biztosítanunk kell.

A logikai assetek meghatározásához elemeznünk kell a use-case-ek által megfogalmazott adatfolyamokat. A feladat specifikálja, hogy a rendszerhez távoli elérést kell biztosítsunk, ezért az alkalmazás webes felülettel fog rendelkezni. Ezt a 4. ábra webszerver komponense reprezentálja. Az autentikációt megvalósító komponens hivatott a bejelentkezés elvégzésére. Itt a felhasználónak vagy az adminisztrátornak meg kell adnia a személyes adatait, melyeket egy adatbázisban fogunk eltárolni, és kezelésükre egy autentikációs adatkezelő komponenst implementálunk. A CAFF fájlokat szintén adatbázisban tároljuk. Ezzel az adatbázissal kommunikál a CAFF fájlkezelő komponens, amely az alapvető műveletek végrehajtásáért felelős (feltöltés, letöltés, keresés, megjegyzés hozzáfűzése). Ezeken túl adminisztrátori funkció a CAFF fájl törlése, ill. a felhasználói adatok módosítása, törlése. A megállapított use-caseket az 5. ábra mutatja. Ahhoz, hogy meg tudjuk állapítani, hogy az adott felhasználó milyen tevékenységeket végezhet, szükségünk van egy autorizációs komponensre is. Ez a komponens az adatbázisból fogja kiolvasni a felhasználó adatait, és az így kapott információ segítségével engedélyezi, vagy elutasítja a műveletet.

Az assetek által meghatározott végleges adatfolyam-diagram a 4. ábrán látható. A felhasználók autentikációs adatait védenünk kell a szivárgás és az illetéktelen hozzáférés ellen, ezért ezeket titkosítanunk kell tárolás, illetve átvitel során. A jelszavak tárolására további biztonsági lépéseket tehetünk (hashelés, sózás). Végül pedig jelszó policy-t vezethetünk be, mellyel a jelszavak erősségét; így további biztonságosságát növelhetjük.


4. ábra. A rendszer adatfolyam ábrája

2.3.2 Támadó modell kidolgozása

A támadó modell kidolgozásához figyelembe kell vennünk a rendszerkomponensek potenciális gyengeségeit, valamint hogy ezeket egy támadó milyen módon lehet képes kihasználni. Egy jó kiindulási pont a STRIDE keretrendszer, így ennek elemein megyünk végig először, egy-egy példát említve minden támadási formához:

  • Spoofing (megszemélyesítés): Egy felhasználó megpróbál másnak a nevében CAFF-fájlt feltölteni a weboldalra, vagy megjegyzést fűzni egy képhez.
  • Tampering (hamisítás): A támadó igyekszik megváltoztatni egy animált képet, amit éppen valaki megvásárolt és éppen le szeretne tölteni.
  • Repudiation (tevékenységek letagadása): Egy felhasználó arra próbál hivatkozni, hogy valójában nem töltött le egy képet.
  • Information disclosure (információ szivárgás): Hétköznapi felhasználókról és adminisztrátorokról információt (jelszavakat) próbál kideríteni egy támadó.
  • Denial of Service (szolgáltatás-megtagadás): Olyan fájlt tölt fel egy felhasználó, amitől összeomlik / elérhetetlenné válik a rendszer.
  • Elevation of privilege (jogosultsági szint emelése): Egy felhasználó megpróbál adminisztrátori jogosultságokat szerezni, hogy feltöltött animált képeket töröljön, illetve felhasználói adatokat módosítson, és/vagy töröljön.

A felsorolt esetek összevethetők az adatfolyam diagram különböző részleteivel. Megszemélyesítés azért lehetséges, mert több fajta felhasználónk is be tud jelentkezni különböző jogosultsági körökkel. Hamisítás a CAFF fájlkezelőhöz intézett kérések során jöhet szóba. Tevékenységek letagadása szintén ennél a lépésnél történhet, amennyiben el lehet érni, hogy a tevékenységről való visszajelzést meg tudja gátolni a támadó, hogy elérje a webszervert és benne legyen a saját azonosítója. Információ szivárgás akkor történhet, ha felhasználói adatokhoz tud külső vagy belső személy engedély nélkül hozzáférni. Ezt az autentikációs komponens kijátszásával próbálhatja meg elérni. Szolgáltatás-megtagadást a CAFF fájlkezelőbe való feltöltéssel érhet el egy támadó; jogosultsági szint emelését pedig az autorizációs komponens megkerülésével lehet elérni.


5. ábra. Adminisztrátorhoz köthető use case-ek

2.4 Szükséges biztonsági funkcionalitások

A biztonsági követelmények kielégítéséhez többféle biztonsági funkcionalitást kell megterveznünk, implementálnunk és tesztelnünk. A szükséges biztonsági funkcionalitásokat a biztonsági követelmények és a különböző támadási szcenáriók vizsgálatával kaphatjuk meg.

Mindenekelőtt a webáruház használatához autentikációt kell megvalósítanunk. Mivel a tervezett rendszerrel böngészőn keresztül léphetnek interakcióba a felhasználók, érdemes jelszó alapú autentikációt választani.

A felhasználókhoz kétféle szerepkört tudunk meghatározni: regisztrált felhasználó és adminisztátor. Az egyes tevékenységek elvégzése előtt ellenőriznünk kell, hogy az adott user jogosult-e, pl. megjegyzést fűzni CAFF fájlokhoz. Ehhez szerep alapú autorizációs mechanizmust kell implementálnunk.

Az adminisztrátorok tevékenysége a felhasználói adatok módosítására és törlésére, valamint CAFF fájlok törlésére terjed ki. Szükséges azonban korlátozni őket további, csak regisztrált felhasználó számára engedélyezett tevékenységek tekintetében: CAFF fájlok fel- illetve letöltésében, valamint megjegyzés írásában. Hasonlóan, regisztált felhasználók nem hajthatnak végre admin-specifikus műveleteket, vagyis nem módosíthatják vagy törölhetik más felhasználók fiókjait, fájljait vagy megjegyzéseit. A rendszer felhasználóinak elszámoltathatóságában kiemelt jelentősége van a tevékenységek naplózásának.

A felhasználók személyes adatait és az autentikációhoz szükséges jelszót védenünk kell szivárgás és illetéktelen hozzáférés ellen. A személyes adatokat titkosítanunk kell tárolás és átvitel során, a jelszavakat pedig biztonságosan kell tárolnunk (hashelés + sózás).

⚠️ **GitHub.com Fallback** ⚠️