Testovanie bezpečnosti: Safety & security testing

Vykonávanie bezpečnostných testov aplikácií, Safety testing a Security testing, sú dva dôležité aspekty vývoja softvéru pre úspešný vývoj produktov.

Čo je Safety Testing?

Cieľom testovania bezpečnosti (safety testing) softvérových systémov je optimalizovať bezpečnosť systému pri návrhu, vývoji, používaní a údržbe softvérových systémov a ich integrácii s hardvérovými systémami kritickými z hľadiska bezpečnosti v produkčnom prostredí.

Safety testing overuje a potvrdzuje všetky testovateľné významné požiadavky na bezpečnosť softvéru prostredníctvom testovania vývoja softvéru a systémovej integrácie, ktoré sa vykonáva s cieľom overiť implementáciu zmierňujúcich opatrení, odhaliť bezpečnostné anomálie a identifikovať riešenie hrozieb. Testovanie bezpečnosti zabezpečuje, aby funkčný softvér nevytváral hrozby a aby monitorovacie systémy fungovali bezchybne.

  • Príklad: bezpečnostný systém je určený na vykonávanie bezpečnostných opatrení, ktoré sú v súlade s platnými predpismi, napr. záložný počítač by sa mal automaticky spustiť pri poruche primárneho počítača.

Význam safety testingu

Testovanie bezpečnosti v softvérových systémoch je nesmierne užitočné z rôznych dôvodov. Poskytuje náležitú analýzu systému a jeho návrhu, vlastností, údajov a ďalších prvkov, ktoré môžu alebo nemusia spôsobiť bezpečnostnú krízu alebo zlyhanie softvéru. Tu sú uvedené niektoré z najčastejších mechanizmov zlyhania, ktoré by sa mali vyhodnotiť počas procesu analýzy bezpečnosti:

  • Softvér zlyháva alebo nie je schopný vykonať požadovanú funkciu, t. j. buď sa funkcia nikdy nevykoná, alebo sa nevytvorí žiadna odpoveď.
  • Softvér vykonáva nesprávnu funkciu alebo funkciu, ktorá sa nevyžaduje. Napríklad dostáva nesprávne odpovede, vydáva nesprávne riadiace pokyny alebo vykonáva správnu činnosť, ale za nevhodných podmienok.
  • Neschopnosť softvéru rozpoznať funkciu kritickú z hľadiska bezpečnosti a spustiť príslušnú reakciu odolnú voči poruchám.
  • V softvéri je problém s časovaním alebo postupnosťou a nedokáže zabezpečiť, aby sa dve veci stali v rovnakom alebo rôznom čase, ako aj v určitom poradí.
  • Existujú chyby v špecifikácii, ktoré sú hlavnou príčinou zlyhania alebo chýb systému alebo softvéru. Patria medzi ne nesprávne uvedené, vynechané, nepochopené alebo nesprávne špecifikácie a požiadavky.
  • Chyby v návrhu a kódovaní: Táto chyba, ktorú zvyčajne zavádza programátor, môže vyplynúť z chýb špecifikácie a je priamym dôsledkom zlých štruktúrovaných programovacích techník. Tieto chyby môžu pozostávať z neúplných rozhraní, chýb časovania, nesprávnych rozhraní, nesprávnych algoritmov, logických chýb, nedostatočných automatizovaných testov, chýb preťaženia, nekonečných cyklov a chýb syntaxe.
  • Chyby spôsobené hardvérom alebo počítačom síce nie sú také časté ako ostatné, ale existujú. Medzi možnosti patria okrem iného náhodné prechodné javy pri napájaní, spôsoby zlyhania hardvéru, ktoré nie sú identifikované alebo opravené softvérom, aby sa systém vrátil do bezpečného stavu.
  • Nedostatočná alebo neúplná dokumentácia môže byť hlavnou príčinou chýb v dôsledku nesprávnej komunikácie, čo môže ďalej viesť k vyššie uvedeným chybám softvéru.
  • Chyby spôsobené ladením alebo zmenou softvéru: Tieto chyby možno vysledovať z programovania a kódovania, zlých štruktúrovaných techník, zlej dokumentácie, ako aj zlých požiadaviek na špecifikáciu. Chyby vyvolané zmenou softvéru pomáhajú pri overovaní potreby konfigurácie softvéru.

Plánovanie a riadenie softvérovej bezpečnosti

Najdôležitejším krokom, ktorý predchádza všetkým ostatným fázam bezpečnostného programu, je plánovanie a riadenie bezpečnosti softvérového systému (po angl. software safety planning and management). Plánovanie bezpečnosti by sa malo použiť na zavedenie ustanovení na prispôsobenie sa bezpečnosti v dostatočnom predstihu pred začatím každej z fáz životného cyklu softvéru, ako sú požiadavky, návrh, programovanie a testovanie v rámci cyklu.

Vykonaním podrobného plánovania pred vykonaním testovacích cyklov môže programátor zabezpečiť, aby sa identifikovali kritické rozhrania a podpora programu a aby sa vytvorili formálne komunikačné linky medzi disciplínami a medzi inžinierskymi funkciami. Takisto by mali byť naplánované ustanovenia, ktoré môžu zabezpečiť najlepšie výsledky. Na pomoc programátorovi pri vykonávaní týchto aspektov uvádzame kontrolný zoznam vecí, na ktoré je potrebné dbať pri plánovaní testovania bezpečnosti softvérového systému.

  • Organizácia pre bezpečnosť softvéru je riadne spísaná a na začiatku testovania alebo programovania je poverený bezpečnostný tím.
  • Prijateľné úrovne rizika softvéru sú definované konzistentne s rizikami definovanými pre celý systém.
  • Rozhrania medzi softvérom a ostatnými funkciami systému sú jasne vymedzené a pochopené.
  • Skúmajú sa koncepcie softvérových aplikácií s cieľom identifikovať nebezpečenstvá/riziká v rámci funkcií softvéru kritických z hľadiska bezpečnosti.
  • Požiadavky a špecifikácie sa skúmajú z hľadiska nebezpečenstiev (napr. identifikácia nebezpečných príkazov, limity spracovania, postupnosť udalostí, časové obmedzenia, tolerancia porúch atď.)
  • Správne začlenenie návrhu a implementácie do požiadaviek na bezpečnosť softvéru.
  • Plány a postupy testovania môžu dosiahnuť zámer požiadaviek na overenie bezpečnosti softvéru.
  • Uspokojivé výsledky overovania bezpečnosti softvéru.

Čo je Security Testing?

Security testing je typ testovania softvéru, ktorý odhaľuje zraniteľnosti systému a zisťuje, či sú údaje a zdroje systému chránené pred možnými narušiteľmi. Hodnotí bezpečnost (security) systému alebo aplikácie.

Bezpečnostné testovanie sa zameriava na hľadanie všetkých možných medzier a slabých miest systému, ktoré by mohli viesť k strate informácií alebo dobrého mena organizácie.

Význam Security Testingu

Cieľom bezpečnostného testovania je identifikovať slabé miesta a potenciálne hrozby a zabezpečiť, aby bol systém chránený pred neoprávneným prístupom, zneužitím, únikom údajov a inými problémami súvisiacimi s bezpečnosťou. Pomáha vývojárom odstrániť problémy prostredníctvom kódovania.

Ďalšie ciele security testingu:

  • Identifikovať zraniteľnosti: Testovanie bezpečnosti pomáha identifikovať zraniteľnosti systému, ako sú slabé heslá, neopravený softvér a nesprávne nakonfigurované systémy, ktoré by mohli útočníci zneužiť.
  • Vyhodnotiť schopnosť systému odolať útoku: Testovanie bezpečnosti hodnotí schopnosť systému odolať rôznym typom útokov, ako sú sieťové útoky, útoky sociálneho inžinierstva a útoky na úrovni aplikácie.
  • Zabezpečenie zhody: Testovanie bezpečnosti pomáha zabezpečiť, aby systém spĺňal príslušné bezpečnostné normy a predpisy, ako napríklad HIPAA, PCI DSS a SOC2.
  • Zabezpečenie komplexného posúdenia bezpečnosti: Bezpečnostné testovanie poskytuje komplexné posúdenie bezpečnostnej pozície systému vrátane identifikácie zraniteľností, hodnotenia schopnosti systému odolať útoku a súladu s príslušnými bezpečnostnými normami.
  • Pomáha organizáciám pripraviť sa na potenciálne bezpečnostné incidenty: Bezpečnostné testovanie pomáha organizáciám pochopiť potenciálne riziká a zraniteľnosti, ktorým čelia, čo im umožňuje pripraviť sa na potenciálne bezpečnostné incidenty a reagovať na ne.
  • Identifikovať a odstrániť potenciálne bezpečnostné problémy pred nasadením do produkčnej prevádzky: Bezpečnostné testovanie pomáha identifikovať a odstrániť bezpečnostné problémy pred nasadením systému do výroby. To pomáha znížiť riziko výskytu bezpečnostného incidentu v produkčnom prostredí.

Hlavné oblasti Security Testingu

  • Sieťová bezpečnosť.
  • Bezpečnosť systémového softvéru.
  • Bezpečnosť aplikácií na strane klienta.
  • Bezpečnosť aplikácií na strane servera.
  • Autentifikácia a autorizácia: Testovanie schopnosti systému správne overovať a autorizovať používateľov a zariadenia. Patrí sem testovanie sily a účinnosti hesiel, používateľských mien a iných foriem overovania, ako aj testovanie mechanizmov kontroly prístupu a oprávnení systému.
  • Bezpečnosť siete a infraštruktúry: Testovanie bezpečnosti siete a infraštruktúry systému vrátane firewallov, smerovačov a iných sieťových zariadení. To zahŕňa testovanie schopnosti systému brániť sa proti bežným sieťovým útokom, ako sú útoky typu DoS (denial of service) a MitM (man-in-the-middle).
  • Bezpečnosť databázy: Testovanie bezpečnosti databáz systému vrátane testovania na SQL injection, cross-site scripting a iné typy útokov.
  • Bezpečnosť aplikácií: Testovanie bezpečnosti aplikácií systému vrátane testovania na krížové skriptovanie, útoky typu injection a iné typy zraniteľností.
  • Bezpečnosť údajov: Testovanie bezpečnosti údajov systému vrátane testovania šifrovania údajov, integrity údajov a úniku údajov.
  • Dodržiavanie predpisov: Testovanie súladu systému s príslušnými bezpečnostnými normami a predpismi, ako sú HIPAA, PCI DSS a SOC2.
  • Zabezpečenie cloudu: Testovanie bezpečnosti cloudu.

Typy Security Testingu

Typy security testingu diagram
Security testing – typy
  • Skenovanie zraniteľnosti (Vulnerability Scanning): Skenovanie zraniteľností sa vykonáva pomocou automatizovaného softvéru na skenovanie systému s cieľom odhaliť známe vzory zraniteľností.
  • Vulnerability Scanning (Security Scanning): Bezpečnostné skenovanie je identifikácia slabých miest siete a systému. Neskôr poskytuje riešenia na zníženie týchto nedostatkov alebo rizík. Bezpečnostné skenovanie sa môže vykonávať manuálnym aj automatizovaným spôsobom.
  • Penetračné testovanie (Penetration Testing): Testovanie prieniku je simulácia útoku hackera. Zahŕňa analýzu konkrétneho systému s cieľom preskúmať potenciálne zraniteľnosti od zlomyseľného hackera, ktorý sa pokúša nabúrať do systému.
  • Hodnotenie rizík (Risk Assessment): Pri testovaní hodnotenia rizík sa analyzujú bezpečnostné riziká pozorované v organizácii. Riziká sa klasifikujú do troch kategórií, t. j. nízke, stredné a vysoké. Pri tomto testovaní sa schvaľujú kontroly a opatrenia na minimalizáciu rizika.
  • Bezpečnostný audit (Risk Assessment): Bezpečnostný audit je interná kontrola aplikácií a operačných systémov z hľadiska bezpečnostných chýb. Audit sa môže vykonávať aj prostredníctvom kontroly kódu po riadkoch.
  • Etický hacking (Ethical Hacking): Etický hacking sa líši od škodlivého hackingu. Cieľom etického hackingu je odhaliť bezpečnostné chyby v systéme organizácie.
  • Posúdenie postoja (Posture Assessment): Je kombináciou bezpečnostného skenovania, etického hackingu a hodnotenia rizík s cieľom poskytnúť celkovú bezpečnostnú pozíciu organizácie.
  • Testovanie bezpečnosti aplikácií: Testovanie bezpečnosti aplikácie je typ testovania, ktoré sa zameriava na identifikáciu zraniteľností v samotnej aplikácii. Zahŕňa testovanie kódu, konfigurácie a závislostí aplikácie s cieľom identifikovať všetky potenciálne zraniteľnosti.
  • Testovanie bezpečnosti siete: Testovanie bezpečnosti siete je typ testovania, ktoré sa zameriava na identifikáciu zraniteľností v sieťovej infraštruktúre. Zahŕňa testovanie firewallov, smerovačov (routerov) a iných sieťových zariadení s cieľom identifikovať potenciálne zraniteľnosti.
  • Testovanie sociálneho inžinierstva: Testovanie sociálneho inžinierstva je typom testovania, ktoré simuluje phishing, baiting a iné typy útokov sociálneho inžinierstva s cieľom identifikovať zraniteľnosti ľudského prvku systému.

Na automatizáciu a zjednodušenie procesu bezpečnostného testovania možno použiť nástroje ako Nessus, OpenVAS a Metasploit. Je dôležité zabezpečiť, aby sa bezpečnostné testovanie vykonávalo pravidelne a aby sa všetky zraniteľnosti alebo hrozby zistené počas testovania okamžite odstránili, aby sa systém ochránil pred potenciálnymi útokmi.

Výhody Security Testingu

Identifikácia zraniteľností: Bezpečnostné testovanie pomáha identifikovať zraniteľnosti systému, ktoré by mohli útočníci zneužiť, napríklad slabé heslá, neopravený softvér a nesprávne nakonfigurované systémy.

Zlepšenie bezpečnosti systému: Testovanie bezpečnosti pomáha zlepšiť celkovú bezpečnosť systému identifikáciou a opravou zraniteľností a potenciálnych hrozieb.

Zabezpečenie zhody: Testovanie bezpečnosti pomáha zabezpečiť, aby systém spĺňal príslušné bezpečnostné normy a predpisy, napríklad HIPAA, PCI DSS a SOC2.

Zníženie rizika: Bezpečnostné testovanie pomáha znižovať riziko vzniku bezpečnostného incidentu v produkčnom prostredí tým, že identifikuje a odstraňuje zraniteľnosti a potenciálne hrozby pred nasadením systému do produkcie.

Zlepšenie reakcie na incidenty: Testovanie bezpečnosti pomáha organizáciám pochopiť potenciálne riziká a zraniteľnosti, ktorým čelia, čo im umožňuje pripraviť sa na potenciálne bezpečnostné incidenty a reagovať na ne.

Nevýhody Security Testingu

Náročné na zdroje: Testovanie bezpečnosti môže byť náročné na zdroje, pretože si vyžaduje značné hardvérové a softvérové zdroje na simuláciu rôznych typov útokov.

Zložitosť: Testovanie bezpečnosti môže byť zložité a vyžaduje si špecializované znalosti a odbornosť, aby bolo možné ho efektívne nastaviť a vykonať.

Obmedzený rozsah testovania: Testovanie bezpečnosti nemusí byť schopné identifikovať všetky typy zraniteľností a hrozieb.

Falošne pozitívne a negatívne výsledky: Testovanie bezpečnosti môže priniesť falošne pozitívne alebo falošne negatívne výsledky, čo môže viesť k zmätku a zbytočnému úsiliu.

Časová náročnosť: Testovanie bezpečnosti môže byť časovo náročné, najmä ak je systém veľký a zložitý.

Ťažkosti pri simulácii reálnych útokov: Je ťažké simulovať skutočné útoky a je ťažké predpovedať, ako budú útočníci so systémom interagovať.

Safety testing vs Security testing

Safety testing: Testovanie bezpečnosti sa vzťahuje na ochranu pred úmyselnými aj neúmyselnými hrozbami, ako sú nehody, poškodenia alebo udalosti atď.

Security testing: Testovanie bezpečnosti sa vzťahuje na ochranu pred vnútornými/úmyselnými hrozbami systému.

Nižšie sú uvedené rozdiely medzi bezpečnostným a bezpečnostným testovaním:

Safety testing má chrániť softvér pred vonkajšími alebo nepredvídateľnými hrozbami, zatiaľ čo security testing má chrániť softvér pred úmyselnými hrozbami.

Safety testing sa vykonáva s cieľom zabezpečiť, aby boli všetky údaje v bezpečí a to prostredníctvom zabezpečenia integrity údajov, zálohovania, kontrolných súčtov atď.

Zatiaľ čo security testing sa vykonáva s cieľom zabezpečiť, aby bol softvér bezpečný a správne fungoval aj pri útoku. To sa dá dosiahnuť pomocou dobrých programovacích techník, ako je overovanie vstupov z dôveryhodných/nedôveryhodných zdrojov.

Security testing je najdôležitejším testovaním aplikácie a overuje, či dôverné údaje zostanú dôverné. Pri tomto type testovania tester hrá úlohu útočníka a hrá sa so systémom, aby našiel chyby súvisiace s bezpečnosťou.

Nástroje na bezpečnostné testovanie

1.      Acunetix

Intuitívny a ľahko použiteľný Acunetix od spoločnosti Invicti pomáha malým a stredne veľkým organizáciám zabezpečiť ich webové aplikácie pred nákladnými únikmi dát. Robí to tak, že zisťuje širokú škálu problémov s webovým zabezpečením a pomáha odborníkom na bezpečnosť a vývoj rýchlo konať pri ich riešení.

Funkcie:

  • Pokročilé skenovanie viac ako 7 000 webových zraniteľností vrátane 10 najlepších zraniteľností OWASP, ako sú SQLi a XSS.
  • Automatické zisťovanie webových aktív na identifikáciu opustených alebo zabudnutých webových stránok.
  • Pokročilé prehľadávanie najzložitejších webových aplikácií, vrátane viacformátových a heslom chránených oblastí.
  • Kombinované interaktívne a dynamické testovanie bezpečnosti aplikácií na odhalenie zraniteľností, ktoré iné nástroje prehliadajú.
  • Automatizácia DevOps prostredníctvom integrácie s populárnymi nástrojmi na sledovanie problémov a CI/CD.
  • Hlásenia o zhode s regulačnými normami, ako sú PCI DSS, NIST, HIPAA, ISO 27001 a ďalšie.

Navštív Acunetix na ich stránke.

2.      Intruder

Intruder je výkonný, automatizovaný nástroj na penetračné testovanie, ktorý odhaľuje bezpečnostné nedostatky v celom tvojom IT prostredí. Intruder ponúka špičkové bezpečnostné kontroly, nepretržité monitorovanie a ľahko použiteľnú platformu, vďaka ktorej sú podniky všetkých veľkostí v bezpečí pred hackermi.

Funkcie:

  • Najlepšie pokrytie hrozieb vo svojej triede s viac ako 10 000 bezpečnostnými kontrolami.
  • Kontrola slabých miest v konfigurácii, chýbajúcich záplat, slabých miest v aplikáciách (napríklad SQL injection a cross-site scripting) a ďalších.
  • Automatická analýza a stanovenie priorít výsledkov skenovania.
  • Intuitívne rozhranie, rýchle nastavenie a spustenie prvých skenovaní.
  • Proaktívne monitorovanie zabezpečenia pre najnovšie zraniteľnosti.
  • Pripojenia k službám AWS, Azure a Google Cloud.
  • Integrácia API s CI/CD pipepline.

Navštív Intruder na ich stránke.

 

3.      Teramind

Teramind poskytuje komplexný balík na prevenciu vnútorných hrozieb a monitorovanie zamestnancov. Zvyšuje bezpečnosť prostredníctvom analýzy správania a prevencie straty údajov, zabezpečuje dodržiavanie predpisov a optimalizuje podnikové procesy. Jeho prispôsobiteľná platforma vyhovuje rôznym organizačným potrebám a poskytuje použiteľné poznatky, ktoré sa zameriavajú na zvýšenie produktivity a zabezpečenie integrity údajov.

Funkcie:

  • Prevencia vnútorných hrozieb.
  • Optimalizácia obchodných procesov.
  • Monitoruje produktivitu, bezpečnosť a správanie zamestnancov v oblasti dodržiavania predpisov.
  • Pomáha riadiť dodržiavanie predpisov pomocou jediného škálovateľného riešenia vhodného pre malé podniky, podniky a vládne agentúry.
  • Poskytuje dôkazy na obohatenie reakcie na incidenty, vyšetrovania a spravodajstva o hrozbách.
  • Monitoruje a chráni pred potenciálnou stratou citlivých údajov.
  • Analyzuje detailné údaje o správaní zákazníkov v aplikáciách s cieľom získať prehľad.
  • Umožňuje prispôsobiť nastavenia monitorovania tak, aby vyhovovali konkrétnym prípadom použitia alebo implementovali preddefinované pravidlá.
  • Poskytuje prehľad a použiteľné informácie o činnostiach pracovníkov prostredníctvom komplexného prístrojového panela.

Navštív Teramind na ich stránke.

4. Owasp

Open Web Application Security Project (OWASP) je celosvetová nezisková organizácia zameraná na zlepšenie bezpečnosti softvéru. Projekt disponuje viacerými nástrojmi na pen testovanie rôznych softvérových prostredí a protokolov.

Funkcie:

  • Zed Attack Proxy (ZAP – integrovaný nástroj na penetračné testovanie).
  • OWASP Dependency Check (skenuje závislosti projektu a kontroluje známe zraniteľnosti).
  • OWASP Web Testing Environment Project (zbierka bezpečnostných nástrojov a dokumentácie).

5. WireShark

Wireshark je nástroj na analýzu siete, ktorý bol predtým známy ako Ethereal. Zachytáva pakety v reálnom čase a zobrazuje ich v ľudsky čitateľnom formáte. V podstate je to analyzátor sieťových paketov – ktorý poskytuje drobné podrobnosti o sieťových protokoloch, dešifrovaní, informáciách o paketoch atď. Ide o otvorený zdrojový kód a možno ho používať v systémoch Linux, Windows, OS X, Solaris, NetBSD, FreeBSD a mnohých ďalších. Informácie získané prostredníctvom tohto nástroja možno zobraziť prostredníctvom grafického rozhrania alebo nástroja TShark Utility v režime TTY.

6. W3af

W3af je framework na útoky a audit webových aplikácií. Má tri typy pluginov: discovery, audit a attack, ktoré navzájom komunikujú pri vyhľadávaní akýchkoľvek zraniteľností na webe, napríklad discovery plugin vo w3af vyhľadáva rôzne adresy url na testovanie zraniteľností a preposiela ich audit pluginu, ktorý potom tieto adresy URL používa na vyhľadávanie zraniteľností.

Ak vieš po nemecky a hľadáš si prácu ako IT tester alebo automatizovaný tester, prezri si naše benefity pre zamestnancov a reaguj na najnovšie ponuky práce.

O autorovi

Michaela Kojnoková

Agile Test Engineer

Po štúdiu informatiky na ŽU a TUKE som sa najviac ponorila do oblasti automatizácie testovania. Okrem toho sa venujem tvorbe webov, databázam, dátovej analytike, umelej inteligencii a strojovému učeniu. Mám rada cestovanie, šport a najviac si užívam čas strávený v prírode s mojimi blízkymi. LinkedIn

Daj nám o sebe vedieť