Software a jeho bezpečnosť Flashcards

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
Q

opis slide 28 co tam je za zranitelnost?

A

slide 28

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

co je to format string utok?

A

Reťazce môžu obsahovať špeciálne znaky, ako %s, mozeme poskodit zasobnik
slide 29

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

Ake specialne znaky vieme vyuzit v printf na skodu?

A

%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

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

ako sa da osetrit proti format string utoku?

A

namiesto printf(str) pouzit printf(“%s”, str)

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

co to su stack canaries?

A

„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é

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

Ako sa da ale osetrit stack canary?

A

prepisat canary na spravnu hodnotu

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

ake su mozne vylepsenie stack canaries?

A

– Použiť náhodnú hodnotu pre kanárika
– XOR náhodnej hodnoty s návratovou adresou

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

opis co sa deje na slide 33

A

slide 33

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

ako prebieha utok na heap overflow?

A

– Prepíš heap cieľovou adresou
– Dúfaj, že obeť použije prepísaný odkaz na funkciu

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

Ako sa da ochranit pred heap overflow?

A

– Môžu sa použiť kanáriky, ale je to ťažké urobiť efektívne
– Skontrolovať veľkosť buffera pred samotným zápisom.

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

co je to non-executable pamat?

A

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

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

ako vieme docielit non-executable pamat?

A

moderne CPU poskytuju HW podporu

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

co je to return-to-libc utok?

A

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

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

Co je to libc kniznica a preco je nebezpecna?

A

Libc je bohatá systémová knižnica poskytujúca veľa možností pre útočníka: system, exec, fork
je turingovsky uplna

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

Co je to Control Flow Integrity (CFI)?

A

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é.

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

Co je to Address space layout randomisation (ASLR)?

A

Ú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

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

Kedy treba znahodnit pamat?

A

– Keď spustíme program?
– Pri vytvorení nového vlákna (fork())?

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

Co este mozeme spravit pre vacsiu komplikaciu utoku?

A

zakodovat instrukcnu sadu, tie budu rozne pre kazdy proces

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

co je vyhoda a nevyhoda kodovania instrukcnej sady?

A

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

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

Su nejake ochrany dokonale?

A

dokonale nie, sikovny utocnik to vie obist

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

S cim suvisi buffer overflow?

A
  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
Q

Co su systemove zdroje?

A

Programy často potrebujú prístup k rôznym zdrojom - Knižnice, nastavenia, „environment“ premenné, súbory, …

47
Q

Aky je bezpecnostny problem systemovych zdrojov?

A

Útočník môže ovplyvniť mechanizmy na prístup k týmto zdrojom a kompromitovať tak program

48
Q

Opis namespace

A

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
Q

Ake su namespace resolution utoky?

A

Ú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
Q

Opis utok “Útočník si volí názov”?

A

– 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
Q

Opis utok “Útočník má kontrolu nad namespace mapovaním”?

A

vytvorí linku a presmeruje obeť na škodlivý zdroj

52
Q

Opis utok “Útočník má prístup ku zdroju”?

A

Obeť môže považovať daný zdroj za bezpečný, aj keď k nemu má útočník prístup

53
Q

aka je to search path zranitelnost?

A

Ú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
Q

Ako prebieha utok na search path?

A

– Ú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
Q

co je to utok “utocnik si voli nazov”? konkrentejsie

A

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
Q

daj priklad na utok “utocnik si voli nazov”?

A

slide 50
ak dame do relativnej cesty ../../ a pod tak sa dostaneme von

57
Q

ake su problemy so vstupom?

A

Nebezpečné použitie vstupu od používateľa, resp. nedostatočná validácia vstupu

58
Q

Ake su typy utokov na vstup?

A

Command injection, File name injection, XSS, SQL injection, …

59
Q

Daj priklad na to ze kazdy vstup moze byt skodlivy :D

A

slide 53 s pasmi

60
Q

Co je to command injection? Daj priklad

A

slide 54

61
Q

Ake protiopatrenia voci code injection vieme pouzit?

A

– Validácia vstupu
– Redukovanie prístupových práv pre CGI script
– Možno by sme na to nemali používať tento jazyk?

62
Q

Co je to CGI skript?

A

CGI skript je jakýkoliv (na straně serveru) spustitelný soubor

63
Q

preco je command injection tak nebezpecne a kde je pouzitelne?

A

veľa API volaní a konštrukcií programovacieho jazyka je ovplyvnených:
C/C++: system(), execvp(),
Python:exec, eval, input, execfile,

64
Q

Ako vieme sa obranit voci code injection?

A

– Validácia
– Spustenie s minimálnymi privilégiami: Nezabraňuje zraniteľnosti, ale minimalizuje dopad

65
Q

Ake mame moznosti validacie vstupu?

A

black listing, white listing, encoding a escaping
viac opis na slide 56

66
Q

Preco nie vzdy postacuje Hľadanie / nahrádzanie jednotlivých nebezpečných znakov?

A

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
Q

Co je to file name injection?

A

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
Q

ako sa da validovat cesta k suborom?

A

– Použite existujúci kód / knižnicu
– Alebo použite „chroot jail“

69
Q

co moze mat za nasledok file name injection na zaklade utocnikovej cesty?

A

slide 59

70
Q

Ako prebieha sql injection?

A

To by si mohol vedet…
das tam OR 1=1 a vyhral si prihlasil si sa

71
Q

Co boli magic quotes v php?

A

fu neviem pozri si ale je to deprecated a aj odstranene uz

72
Q

Ako sa vieme ochranit proti sql injection?

A

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
Q

co to su prepared statements?

A

take to =?, kde davame parametre neskor

74
Q

Co je to cross side scripting?

A

XSS
Html injection
Najčastejšia zraniteľnosť web stránok súčasnosti
Je ľahké zabudnúť na ošetrenie vstupu

75
Q

Co vie minimalizovat XSS utoky?

A

Dobrý návrh aplikácie
napr. použitie návrhového vzoru MVC / MVP

76
Q

preco je tazke zabranit xss utokom?

A

niekedy chceme používateľovi dovoliť formátovať text, vkladať videá, a pod.

77
Q

aky je scenar XSS utoku?

A

slide 71

78
Q

opis utok XSS na slide 72

A

slide 72

79
Q

preco by pouzivatel klikol na cudny odkaz?

A
  • Phishing email s odkazom
  • Neviditeľný odkaz nad niečim zaujímavým
80
Q

Naco je pristup ku cookie?

A

Cookie môže obsahovať session id, na základe ktorého sa môže utocnik autentizovať

81
Q

Ake su 3 typy XSS?

A
  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
Q

ako prebieha scenar persistent (stored) xss?

A

slide 75

83
Q

Ako prebieha DOM based XSS?

A

slide 76

84
Q

Je XSS spôsobený skôr chýbajúcou kontrolou vstupu alebo výstupu?

A

idk asi obe, zalezi od utoku

85
Q

ak chceme zabranit XSS mame kontrolovat vstup alebo vystup?

A

obidva

86
Q

Ake su XSS triky?

A

slide 78

87
Q

Aku pozname ochranu pred XSS?

A

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
Q

Co je to Cross Site Request Forgery (CSRF)?

A

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
Q

Aka je schema cross site request forgery?

A

slide 81-82

90
Q

Co je to CSRF Login útok?

A

Ú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
Q

Ako prebieha CSRF login utok?

A

slide 84

92
Q

Ako sa vieme ochranit pred CSRF?

A

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
Q

Co je to HMAC?

A

a specific type of message authentication code (MAC) involving a cryptographic hash function and a secret cryptographic key.

94
Q

Ako sa vieme este ochranit pred CSRF cez hlavicky?

A

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
Q

Zhrn validaciu vstupu

A

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
Q

Je lepsi whitelist alebo blacklist vstupov?

A

whitelist, lebo nevieme niekedy osetrit blacklistom vsetko mozne

97
Q

Opis choke points

A

slide 88-89

98
Q

co je nebezpecne pri surfovani na nete? :D vysvetli slides 90-91

A

slides 90-91

99
Q

Opis analogiu na slide 93

A

slide 93

100
Q

Co to su Covert channels?

A

„Covertchannel“jemechanizmus,ktorýumožní dvom aplikáciam komunikovať, aj keď to bezpečnostný model neumožňuje

101
Q

Co je casto zdrojom covert channels?

A

Webové aplikácie

102
Q

Daj priklad na covert channels cez css

A

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
Q

Daj priklad na covert channel cache based utok

A

– 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
Q

Daj priklad na covert channel dns cache utok

A

– Ak je doména v DNS cache prehliadača, stránka sa
načíta rýchlejšie

105
Q

Preco nepouzivat C/C++? :D

A

kvoli buffer overflow

106
Q

Ako s privilegiami procesu pre bezpecnost?

A

mali by sme ich minimalizovat

107
Q

Ake dalsie veci mame pouzit pre bezpecne programovanie?

A

GIT, code review, lint zranitelnosti, penetracne testy, nedavat api kluc na github

108
Q

Ako bezpecne programovat na webe?

A

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
Q

Ako si mame davat pozor na upload suborov?

A

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
Q

Ako sa bezpecne starat o session?

A

– 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
Q

Co neukladat do cookie?

A

prihlasovacie meno alebo heslo