Software a jeho bezpečnosť Flashcards

(111 cards)

1
Q

Aky je problem s vyvojom SW?

A

Nekladie sa taky dokaz na bezpecnost, pricom to je jedna z hlavnych uloh

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Aky je problem s komunikaciou na internete?

A

Nekomunikuje Alica s Bobom, ale s nejakym pocitacom na internete, musime si dat pozor aby nebol jej pocitac hacknuty

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Porovnaj ciele hackerov v minulosti a teraz

A

minulost: OS a sieťové „riešenia“
teraz: Webovské aplikácie, prehliadace, mobily, IOT, „Embedded software“

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Co je to embedded software?

A

Software v autách, fabrikách, kritickej infraštruktúre, …

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Porovnaj hackerov teraz a v minulosti

A

Minulost: amateri, robili to pre zabavu a prestiz
dnes: profesionali, v ilegalite, organiizovany zlocin a vladne agentury

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Ako to je so softwareom a jeho nebezpecnostou? existuje nejaka zazracna medicina?

A

Neexistuje žiadna „zázračná medicína“, Krypto ani žiadne iné špeciálne bezpečnostné riešenia nevyriešia zázračne všetky problémy, Softvérová bezpečnosť ≠ bezpečnostný softvér
Bezpečnosť je dôležitá súčasť systému

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Kedy treba integrovat bezpecnostne aspekty do navrhu systemu?

A

hneď od začiatku + priebezne aktualizovat

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Co je pricinou nebezpecneho softwareu?

A

ludia

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

aky je rozdiel medzi funkcionalitou a bezpecnostou sw?

A

Bezpečnosť je vždy druhoradým cieľom
Funkcionalita je o tom, čo má software robiť
Bezpečnosť je o tom, čo software nemá robiť

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Ako to je s bezpecnostou OS, programovacich jazykov, internetovych prehliadacov a emailovych klientov?

A

OS = Obrovský OS = veľa rôznych scenárov útoku
prog. jazyky = Ľahko naučiteľné alebo efektívne, avšak nebezpečné a náchylné ku chybám
internetove prehliadace = Komplikované, HTML5, SVG, CSS, JavaScript, MathML, …
emailove klienty = Automaticky otvárajúce prílohy (náhľad) rôznych formátov

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

co su priciny bezpecnostnych chyb?

A

Nedostatočným povedomím, Nedostatočnou znalosťou bezpecnostnych problemov, Veľkou zložitosťou systémov, ludia uprednostnuju funkcionalitu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Ako je to s vyskytom buffer overflow?

A

jedna z najcastejsich chyb

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

co je buffer overflow?

A

char buffer[4]; buffer[4] = ‘a’;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

aky je problem s manualnym spracovanim pamate?

A

je to nachylne na chyby

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

C a C++ co neposkytuju?

A

memory-safety

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Ake su typicke bugy s bufferom?

A

– Zápis mimo rozsahu poľa
– Problémy so smerníkmi = Chýbajúca inicializácia, zlá aritmetika, použitie po dealokácii,
zabudnutá dealokácia,..
– Z dôvodu efektívnosti tieto bugy nie sú kontrolované počas run-time

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Ake je rozlozenie pamate procesu?

A

slide 20

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

popis ako funguje stack

A

slide 21

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

ako sa da vyuzit stack overflow na upravu dat?

A

vyuziva pretecenie buffera, zavisi ale na vela dalsich detailoch

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

na com dalej zavisi utok stack overflow?

A

– Napr. ako vyplniť správnu návratovú adresu: Falošná návratová adresa musí byť presne umiestnená, Útočník nemusí poznať ani adresu svojich premenných
– Prepísané dáta sa nesmú použiť pred návratom z funkcie (mohlo by dôjsť ku pádu programu)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Co je to heap overflow?

A

Nieco ako stack overflow ale vyuziva heap namiesto stack

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

preco je zly gets? a treba pouzivat fgets?

A

gets cita do buffera kym nedojde k EOF

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

co treba pouzit namiesto strcpy?

A

strncpy, lebo strcpy predpoklada ze dest je dostatocne dlhe

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

co moze sposobit integer overflow?

A

buffer overflow

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
opis slide 28 co tam je za zranitelnost?
slide 28
26
co je to format string utok?
Reťazce môžu obsahovať špeciálne znaky, ako %s, mozeme poskodit zasobnik slide 29
27
Ake specialne znaky vieme vyuzit v printf na skodu?
%x načíta a vypíše 4 bajty zo zásobníka = môže dôjsť k úniku citlivých dát %n zapíše počet vypísaných znakov do zásobníka
28
ako sa da osetrit proti format string utoku?
namiesto printf(str) pouzit printf("%s", str)
29
co to su stack canaries?
„Dummy“ hodnota – kanárik – je zapísaná do zásobníka pred návratovú adresu a skontrolovaná, keď funkcia vracia hodnotu Obyčajné pretečenie zásobníka prepíše aj kanárika, čo môže byť detekované
30
Ako sa da ale osetrit stack canary?
prepisat canary na spravnu hodnotu
31
ake su mozne vylepsenie stack canaries?
– Použiť náhodnú hodnotu pre kanárika – XOR náhodnej hodnoty s návratovou adresou
32
opis co sa deje na slide 33
slide 33
33
ako prebieha utok na heap overflow?
– Prepíš heap cieľovou adresou – Dúfaj, že obeť použije prepísaný odkaz na funkciu
34
Ako sa da ochranit pred heap overflow?
– Môžu sa použiť kanáriky, ale je to ťažké urobiť efektívne – Skontrolovať veľkosť buffera pred samotným zápisom.
35
co je to non-executable pamat?
Rozdeľ pamäť na – Executable (na ukladanie kódu) – Non-executable (na ukladanie dát) A processor zabráni vykonať non-executable kód Útočník nemôže skákať do svojho kódu, keďže bude označený za non-executable
36
ako vieme docielit non-executable pamat?
moderne CPU poskytuju HW podporu
37
co je to return-to-libc utok?
Cesta ako obísť non-executable pamäť, Využiť buffer overflow na skok do kódu, ktorý tam už je, hlave do kódu v knižnici libc
38
Co je to libc kniznica a preco je nebezpecna?
Libc je bohatá systémová knižnica poskytujúca veľa možností pre útočníka: system, exec, fork je turingovsky uplna
39
Co je to Control Flow Integrity (CFI)?
Return-to-libc útok môže byť odhalený, keďže väčšinou sa jedná o neobvyklé volanie Return-to-libc útok môže byť zablokovaný, keďže také nezvyčajné volania môžu byť počas runtime detekované.
40
Co je to Address space layout randomisation (ASLR)?
Útočník potrebuje detailné informácie o rozložení pamäti Znáhodnením rozloženia pamäti útok značne skomplikujeme. Napr. posunieme začiatok heapu / zásobníka o nejakú náhodnú hodnotu
41
Kedy treba znahodnit pamat?
– Keď spustíme program? – Pri vytvorení nového vlákna (fork())?
42
Co este mozeme spravit pre vacsiu komplikaciu utoku?
zakodovat instrukcnu sadu, tie budu rozne pre kazdy proces
43
co je vyhoda a nevyhoda kodovania instrukcnej sady?
vyhoda: Útočník nevie napísať kód, keďže nevie ako zakódovať požadované inštrukcie. nevyhoda: nevyhnutná HW podpora, aby to bolo efektívne
44
Su nejake ochrany dokonale?
dokonale nie, sikovny utocnik to vie obist
45
S cim suvisi buffer overflow?
1. Absencia validácie vstupu 2. Mixovanie dát a kódu – dáta a návratová adresa v zásobníku 3. Spoliehanie sa na abstrakciu, ktorá nie je 100% garantovaná a dodržiavaná
46
Co su systemove zdroje?
Programy často potrebujú prístup k rôznym zdrojom - Knižnice, nastavenia, „environment“ premenné, súbory, ...
47
Aky je bezpecnostny problem systemovych zdrojov?
Útočník môže ovplyvniť mechanizmy na prístup k týmto zdrojom a kompromitovať tak program
48
Opis namespace
Klient (proces) požiada o prístup k zdroju (súbor) od systému (OS) pomocou mena Systém transformuje meno na zdroj pomocou previazania na namespace Napr. cesta k súboru na súbor / adresár
49
Ake su namespace resolution utoky?
Útočník si volí názov Útočník má kontrolu nad namespace mapovaním Útočník má prístup ku zdroju
50
Opis utok "Útočník si volí názov"?
– Použije vhodne zvolený názov, ktorým prekabáti parser a dostane tak prístup k inak nedostupnému zdroju – Upraví spôsob konštrukcie mena (napr. Environment premenné) a presmeruje tak obeť na škodlivý zdroj
51
Opis utok "Útočník má kontrolu nad namespace mapovaním"?
vytvorí linku a presmeruje obeť na škodlivý zdroj
52
Opis utok "Útočník má prístup ku zdroju"?
Obeť môže považovať daný zdroj za bezpečný, aj keď k nemu má útočník prístup
53
aka je to search path zranitelnost?
Útočník môže podvrhnúť obeti zlý zdroj pomocou „search path“ environment premennej Keď program potrebuje knižnicu - Linker vyhľadá súbor v LD_PATH adresároch
54
Ako prebieha utok na search path?
– Útočník do home adresára uloží škodlivú knižnicu – Naštartuje privilegovaný program z domovského adresára – Linker načíta škodlivú knižnicu
55
co je to utok "utocnik si voli nazov"? konkrentejsie
viacero spôsobov ako pomenovať to isté – Súbory: /x/data alebo /y/z/../../x/data alebo /y/z/%2e%2e/x/data Umožní útočníkovi prístup k inak pre neho neprístupnému zdroju
56
daj priklad na utok "utocnik si voli nazov"?
slide 50 ak dame do relativnej cesty ../../ a pod tak sa dostaneme von
57
ake su problemy so vstupom?
Nebezpečné použitie vstupu od používateľa, resp. nedostatočná validácia vstupu
58
Ake su typy utokov na vstup?
Command injection, File name injection, XSS, SQL injection, ...
59
Daj priklad na to ze kazdy vstup moze byt skodlivy :D
slide 53 s pasmi
60
Co je to command injection? Daj priklad
slide 54
61
Ake protiopatrenia voci code injection vieme pouzit?
– Validácia vstupu – Redukovanie prístupových práv pre CGI script – Možno by sme na to nemali používať tento jazyk?
62
Co je to CGI skript?
CGI skript je jakýkoliv (na straně serveru) spustitelný soubor
63
preco je command injection tak nebezpecne a kde je pouzitelne?
veľa API volaní a konštrukcií programovacieho jazyka je ovplyvnených: C/C++: system(), execvp(), Python:exec, eval, input, execfile, ...
64
Ako vieme sa obranit voci code injection?
– Validácia – Spustenie s minimálnymi privilégiami: Nezabraňuje zraniteľnosti, ale minimalizuje dopad
65
Ake mame moznosti validacie vstupu?
black listing, white listing, encoding a escaping viac opis na slide 56
66
Preco nie vzdy postacuje Hľadanie / nahrádzanie jednotlivých nebezpečných znakov?
Formát vstupných dát – T.j. URL, HTML, email adresa, JPG, X509 certifikáty je jazyk, nie iba sekvencia znakov ked spracúvame / interpretujeme vstupné dáta, musíme brať do úvahy aj daný jazyk a aby vstupné dáta boli validný (a bezpečný) prvok tohto jazyka
67
Co je to file name injection?
Cesta k súboru konštruovaná zo vstupu od používateľa – Napr. "/usr/local/client-info/" + username – Čo ak útočník zvolí username ako ../../../etc/passwd ?
68
ako sa da validovat cesta k suborom?
– Použite existujúci kód / knižnicu – Alebo použite „chroot jail“
69
co moze mat za nasledok file name injection na zaklade utocnikovej cesty?
slide 59
70
Ako prebieha sql injection?
To by si mohol vedet... das tam OR 1=1 a vyhral si prihlasil si sa
71
Co boli magic quotes v php?
fu neviem pozri si ale je to deprecated a aj odstranene uz
72
Ako sa vieme ochranit proti sql injection?
zakaždým „escapovať“ vstup napr. použitím mysql_real_escape_string() - Nie veľmi bezpečné, keďže sa na to ľahko zabudne Stored procedures v databáze prepared statements
73
co to su prepared statements?
take to =?, kde davame parametre neskor
74
Co je to cross side scripting?
XSS Html injection Najčastejšia zraniteľnosť web stránok súčasnosti Je ľahké zabudnúť na ošetrenie vstupu
75
Co vie minimalizovat XSS utoky?
Dobrý návrh aplikácie napr. použitie návrhového vzoru MVC / MVP
76
preco je tazke zabranit xss utokom?
niekedy chceme používateľovi dovoliť formátovať text, vkladať videá, a pod.
77
aky je scenar XSS utoku?
slide 71
78
opis utok XSS na slide 72
slide 72
79
preco by pouzivatel klikol na cudny odkaz?
* Phishing email s odkazom * Neviditeľný odkaz nad niečim zaujímavým
80
Naco je pristup ku cookie?
Cookie môže obsahovať session id, na základe ktorého sa môže utocnik autentizovať
81
Ake su 3 typy XSS?
1. non-persistent(Reflected)XSS – Napr. predchádzajúci príklad 2. persistent(stored)XSS – Eva vloží špeciálny komentár, ktorý sa zobrazí aj Bobovi 3. DOM based XSS – JavaScript vykoná nevhodný JavaScript
82
ako prebieha scenar persistent (stored) xss?
slide 75
83
Ako prebieha DOM based XSS?
slide 76
84
Je XSS spôsobený skôr chýbajúcou kontrolou vstupu alebo výstupu?
idk asi obe, zalezi od utoku
85
ak chceme zabranit XSS mame kontrolovat vstup alebo vystup?
obidva
86
Ake su XSS triky?
slide 78
87
Aku pozname ochranu pred XSS?
Ošetrenie vstupu / výstupu - Escapeovanie HTML špecifických znakov HTTP-only cookie Na nedôveryhodný obsah použiť inú doménu (napr. googleusercontent.com) (Útočníkov kód má iný origin ako pôvodná stránka) Content-Security-Policy – Pomocou HTTP hlavičiek povie server prehliadaču, ktorý obsah môže načítať / vykonať
88
Co je to Cross Site Request Forgery (CSRF)?
Používateľ je prihlásený do stránky bank.com Útočník (cez falošný odkaz, načítaním škodlivej stránky) donúti používateľov prehliadač vykonať dotaz na stránku bank.com – Napr. zadanie platobného príkazu, Zmena hesla
89
Aka je schema cross site request forgery?
slide 81-82
90
Co je to CSRF Login útok?
Útočník „odošle“ cez prehliadač používateľa prihlasovací formulár do google.com - pod útočníkovými prihlasovacími údajmi Používateľov prehliadač je prihlásený do googlu pod útočníkovým kontom – Možný phishing útok
91
Ako prebieha CSRF login utok?
slide 84
92
Ako sa vieme ochranit pred CSRF?
Tajný token Každý formulár na stránke obsahuje skrytý „token“ (v input field, type=hidden) Token je po odoslaní formulára overený serverom Token by mal byť naviazaný na session používateľa
93
Co je to HMAC?
a specific type of message authentication code (MAC) involving a cryptographic hash function and a secret cryptographic key.
94
Ako sa vieme este ochranit pred CSRF cez hlavicky?
Overenie HTTP hlavičky „Referrer“ – Niektoré firewally / prehliadače hlavičku filtrujú Vlastná HTTP hlavička cez XmlHttpRequest (JavaScript) – Server spracuje dotaz len keď požiadavka obsahuje danú hlavičku Overenie HTTP hlavičky „Origin“
95
Zhrn validaciu vstupu
Každý vstup od používateľa môže byť nebezpečný Zistite si informácie o zraniteľnostiach, ktoré sú špecifické pre danú platformu / jazyk
96
Je lepsi whitelist alebo blacklist vstupov?
whitelist, lebo nevieme niekedy osetrit blacklistom vsetko mozne
97
Opis choke points
slide 88-89
98
co je nebezpecne pri surfovani na nete? :D vysvetli slides 90-91
slides 90-91
99
Opis analogiu na slide 93
slide 93
100
Co to su Covert channels?
„Covertchannel“jemechanizmus,ktorýumožní dvom aplikáciam komunikovať, aj keď to bezpečnostný model neumožňuje
101
Co je casto zdrojom covert channels?
Webové aplikácie
102
Daj priklad na covert channels cez css
pomocou CSS – Útočník podvrhne stránku so zoznamom URL adries – Podľa farby linky vie zistiť, či používateľ stránku navštívil – Fix: Upraviť getComputedStyle() a súvisiace JavaScript volania aby vždy vyhodnotili linku a nenavštívenú
103
Daj priklad na covert channel cache based utok
– Ak je obrázok v cache prehliadača, načíta sa oveľa rýchlejšie – Útočník podhodí stránku s niekoľko obrázkami a zistí ako rýchlo trvalo ich načítanie – Možno takto zistiť Vašu polohu (predpoklad je, že google maps má v cache okolie Vašej polohy)
104
Daj priklad na covert channel dns cache utok
– Ak je doména v DNS cache prehliadača, stránka sa načíta rýchlejšie
105
Preco nepouzivat C/C++? :D
kvoli buffer overflow
106
Ako s privilegiami procesu pre bezpecnost?
mali by sme ich minimalizovat
107
Ake dalsie veci mame pouzit pre bezpecne programovanie?
GIT, code review, lint zranitelnosti, penetracne testy, nedavat api kluc na github
108
Ako bezpecne programovat na webe?
Nepoužívajte technológie/funkcionality, ktoré potenciálne spôsobujú zraniteľnosť – Napr. na zabránenie SQL injection nepoužívajte mysql_real_escape_string, ale prepared statements Na generovanie výstupu (HTML kódu), nepoužívajte funkciu, ktorá neošetruje HTML špeciálne znamky (napr. echo) - ale nejaky templateovaci nastroj
109
Ako si mame davat pozor na upload suborov?
Napr. upload súboru s príponov .php do adresára prístupného pre web server – JS a HTML súbory sú tiež problém (XSS/CSRF zraniteľnosti)
110
Ako sa bezpecne starat o session?
– Session_id je citlivý údaj, nemal by byť prenášaný cez nezabezpečené spojenie – Po prihlásení používateľa je potrebné vygenerovať nové session_id (session fixation, login CSRF) – Použite iba HTTP-only cookies pre uchovanie session_id * Cookieniejeprístupnýprejavascript – Nezabudnite session expirovať (používateľ sa zabudol odhlásiť z verejne prístupného počítača)
111
Co neukladat do cookie?
prihlasovacie meno alebo heslo