Podcast
Questions and Answers
Ce tehnică este folosită pentru a preveni atacurile de tip buffer overflow?
Ce tehnică este folosită pentru a preveni atacurile de tip buffer overflow?
Care dintre următoarele acțiuni este specifică analizei dinamice, dar nu și analizei statice?
Care dintre următoarele acțiuni este specifică analizei dinamice, dar nu și analizei statice?
Care este efectul detectării unei valori de canar modificată?
Care este efectul detectării unei valori de canar modificată?
Ce este stack canary?
Ce este stack canary?
Signup and view all the answers
Care este dezavantajul major al implementării SSP?
Care este dezavantajul major al implementării SSP?
Signup and view all the answers
De ce este importantă identificarea bibliotecilor externe necesare în analiza statică a executabilelor?
De ce este importantă identificarea bibliotecilor externe necesare în analiza statică a executabilelor?
Signup and view all the answers
Care dintre următoarele acțiuni nu este specifică analizei statice?
Care dintre următoarele acțiuni nu este specifică analizei statice?
Signup and view all the answers
Ce se înțelege prin "tracing" în analiza dinamică?
Ce se înțelege prin "tracing" în analiza dinamică?
Signup and view all the answers
Care dintre următoarele afirmații despre TLB este corectă?
Care dintre următoarele afirmații despre TLB este corectă?
Signup and view all the answers
Care dintre următoarele elemente nu este stocat într-o intrare a tabelului de pagini?
Care dintre următoarele elemente nu este stocat într-o intrare a tabelului de pagini?
Signup and view all the answers
Care este scopul principal al bitului "dirty" în tabelul de pagini?
Care este scopul principal al bitului "dirty" în tabelul de pagini?
Signup and view all the answers
Care este principalul avantaj al utilizării unei tabele de pagini multi-nivel?
Care este principalul avantaj al utilizării unei tabele de pagini multi-nivel?
Signup and view all the answers
Care este cea mai bună descriere a procesului de swapp-out?
Care este cea mai bună descriere a procesului de swapp-out?
Signup and view all the answers
Ce se întâmplă atunci când apare o "TLB miss"?
Ce se întâmplă atunci când apare o "TLB miss"?
Signup and view all the answers
Care dintre următoarele este un dezavantaj al utilizării tabelelor de pagini multi-nivel?
Care dintre următoarele este un dezavantaj al utilizării tabelelor de pagini multi-nivel?
Signup and view all the answers
Care dintre următoarele afirmații este adevărată despre indexul paginii virtuale?
Care dintre următoarele afirmații este adevărată despre indexul paginii virtuale?
Signup and view all the answers
Care dintre următoarele afirmații despre FCB-uri (File Control Blocks) este corectă?
Care dintre următoarele afirmații despre FCB-uri (File Control Blocks) este corectă?
Signup and view all the answers
Ce se întâmplă atunci când un proces încearcă să acceseze o pagină de memorie care nu este încă alocată?
Ce se întâmplă atunci când un proces încearcă să acceseze o pagină de memorie care nu este încă alocată?
Signup and view all the answers
Care dintre următoarele operații nu este direct legată de o tabelă de descriptori de fișier?
Care dintre următoarele operații nu este direct legată de o tabelă de descriptori de fișier?
Signup and view all the answers
Ce rol are un descriptor de fișier?
Ce rol are un descriptor de fișier?
Signup and view all the answers
Care dintre următoarele afirmații despre apelul dup() este falsă?
Care dintre următoarele afirmații despre apelul dup() este falsă?
Signup and view all the answers
Ce se întâmplă când un proces închide un fișier folosind apelul close()?
Ce se întâmplă când un proces închide un fișier folosind apelul close()?
Signup and view all the answers
Care este diferența majoră între dup() și dup2()?
Care este diferența majoră între dup() și dup2()?
Signup and view all the answers
Care dintre următoarele afirmații este adevărată despre inode-uri?
Care dintre următoarele afirmații este adevărată despre inode-uri?
Signup and view all the answers
Ce se întâmplă cu memoria alocată dinamic într-un proces, la crearea unui proces copil prin apelul fork()
?
Ce se întâmplă cu memoria alocată dinamic într-un proces, la crearea unui proces copil prin apelul fork()
?
Signup and view all the answers
Care dintre următoarele afirmații este adevărată despre apelul exec()
?
Care dintre următoarele afirmații este adevărată despre apelul exec()
?
Signup and view all the answers
Care dintre următoarele situații ar putea duce la o excepție de tip Segmentation fault
?
Care dintre următoarele situații ar putea duce la o excepție de tip Segmentation fault
?
Signup and view all the answers
Ce reprezintă race condition
?
Ce reprezintă race condition
?
Signup and view all the answers
Care dintre următoarele afirmații despre spațiul virtual de adrese al unui proces este adevărată?
Care dintre următoarele afirmații despre spațiul virtual de adrese al unui proces este adevărată?
Signup and view all the answers
Ce rol joacă loader
-ul în procesul de încărcare a unui program?
Ce rol joacă loader
-ul în procesul de încărcare a unui program?
Signup and view all the answers
Ce înseamnă deturnarea fluxului de execuție a unui program (control flow hijack)?
Ce înseamnă deturnarea fluxului de execuție a unui program (control flow hijack)?
Signup and view all the answers
Ce este TLS
(Thread Local Storage) și de ce este utilă?
Ce este TLS
(Thread Local Storage) și de ce este utilă?
Signup and view all the answers
Care dintre următoarele afirmații despre bypass-uri este adevărată?
Care dintre următoarele afirmații despre bypass-uri este adevărată?
Signup and view all the answers
Care este scopul mecanismului ASLR (Address Space Layout Randomization)?
Care este scopul mecanismului ASLR (Address Space Layout Randomization)?
Signup and view all the answers
Ce reprezintă deturnarea fluxului de execuție a unui program (control flow hijack) ?
Ce reprezintă deturnarea fluxului de execuție a unui program (control flow hijack) ?
Signup and view all the answers
Care dintre următoarele afirmații despre memory leak / memory disclosure este corectă?
Care dintre următoarele afirmații despre memory leak / memory disclosure este corectă?
Signup and view all the answers
Ce înseamnă că o secvență de cod este PIC (Position Independent Code)?
Ce înseamnă că o secvență de cod este PIC (Position Independent Code)?
Signup and view all the answers
Care dintre următoarele afirmații despre PIE (Position Independent Executable) este corectă?
Care dintre următoarele afirmații despre PIE (Position Independent Executable) este corectă?
Signup and view all the answers
Care este scopul adăugării de arce/noduri în control flow graph (CFG)?
Care este scopul adăugării de arce/noduri în control flow graph (CFG)?
Signup and view all the answers
Care dintre următoarele afirmații despre bruteforce este adevărată?
Care dintre următoarele afirmații despre bruteforce este adevărată?
Signup and view all the answers
Care dintre următoarele afirmații despre spinlock-uri este adevărată?
Care dintre următoarele afirmații despre spinlock-uri este adevărată?
Signup and view all the answers
Ce este un proces zombie?
Ce este un proces zombie?
Signup and view all the answers
Care este o problemă cauzată de procesele zombie?
Care este o problemă cauzată de procesele zombie?
Signup and view all the answers
De ce un proces orfan durează foarte puțin timp?
De ce un proces orfan durează foarte puțin timp?
Signup and view all the answers
Ce efect are folosirea operatorului & in shell-ul Linux?
Ce efect are folosirea operatorului & in shell-ul Linux?
Signup and view all the answers
Care dintre următoarele afirmații despre mutex-uri este adevărată?
Care dintre următoarele afirmații despre mutex-uri este adevărată?
Signup and view all the answers
Care este diferența principală între un spinlock și un mutex?
Care este diferența principală între un spinlock și un mutex?
Signup and view all the answers
Flashcards
Spinlock
Spinlock
Un mecanism de sincronizare care folosește busy-waiting.
Mutex
Mutex
Un mecanism de sincronizare care blochează executarea altor thread-uri.
Busy-waiting
Busy-waiting
Tehnica de a aștepta activ pentru un lock, fără a bloca thread-ul.
Proces zombie
Proces zombie
Signup and view all the flashcards
Problema proceselor zombie
Problema proceselor zombie
Signup and view all the flashcards
Proces orfan
Proces orfan
Signup and view all the flashcards
Secțiuni critice mici
Secțiuni critice mici
Signup and view all the flashcards
Transfer în fundal
Transfer în fundal
Signup and view all the flashcards
Deturnarea fluxului de execuție
Deturnarea fluxului de execuție
Signup and view all the flashcards
Memory leak
Memory leak
Signup and view all the flashcards
Loader
Loader
Signup and view all the flashcards
PCB (Process Control Block)
PCB (Process Control Block)
Signup and view all the flashcards
Thread
Thread
Signup and view all the flashcards
Schimbare de context
Schimbare de context
Signup and view all the flashcards
Deadlock
Deadlock
Signup and view all the flashcards
Race condition
Race condition
Signup and view all the flashcards
TLB
TLB
Signup and view all the flashcards
Informații TLB
Informații TLB
Signup and view all the flashcards
Intrare tabelă de pagini
Intrare tabelă de pagini
Signup and view all the flashcards
Bit dirty
Bit dirty
Signup and view all the flashcards
Tabelă de pagini multi-nivel
Tabelă de pagini multi-nivel
Signup and view all the flashcards
Beneficiul tabelei multi-nivel
Beneficiul tabelei multi-nivel
Signup and view all the flashcards
Sistem de paginare
Sistem de paginare
Signup and view all the flashcards
Swap-out
Swap-out
Signup and view all the flashcards
Analiza statică
Analiza statică
Signup and view all the flashcards
Dezasamblarea codului
Dezasamblarea codului
Signup and view all the flashcards
Graful de apel al programului
Graful de apel al programului
Signup and view all the flashcards
Depanator/Debugger
Depanator/Debugger
Signup and view all the flashcards
Stack Smashing Protection (SSP)
Stack Smashing Protection (SSP)
Signup and view all the flashcards
Stack Canary
Stack Canary
Signup and view all the flashcards
Buffer Overflow
Buffer Overflow
Signup and view all the flashcards
Sysinternals Suite
Sysinternals Suite
Signup and view all the flashcards
Bypass
Bypass
Signup and view all the flashcards
ASLR
ASLR
Signup and view all the flashcards
PIE
PIE
Signup and view all the flashcards
Control Flow Hijack
Control Flow Hijack
Signup and view all the flashcards
Memory Disclosure
Memory Disclosure
Signup and view all the flashcards
Position Independent Code (PIC)
Position Independent Code (PIC)
Signup and view all the flashcards
Control Flow Graph (CFG)
Control Flow Graph (CFG)
Signup and view all the flashcards
Page Fault
Page Fault
Signup and view all the flashcards
FCB (File Control Block)
FCB (File Control Block)
Signup and view all the flashcards
Inode
Inode
Signup and view all the flashcards
Descriptor de fișier
Descriptor de fișier
Signup and view all the flashcards
Tabela de descriptori de fișiere
Tabela de descriptori de fișiere
Signup and view all the flashcards
Apelul dup()
Apelul dup()
Signup and view all the flashcards
Apelul close()
Apelul close()
Signup and view all the flashcards
Deschiderea unui fișier
Deschiderea unui fișier
Signup and view all the flashcards
Study Notes
Variabile C
- Variabilele C stochează date în spațiul de memorie al unui program.
Încărcarea unui executabil în memorie și crearea unui proces
- La încărcare, un executabil este încărcat în spațiul de memorie al unui proces.
- Procesul constă dintr-un spațiu de adrese virtual și real.
- Spațiul de adrese virtual este separat de spațiul de adrese al altor procese.
Deturnarea fluxului de execuție (control flow hijack)
- Deturnarea fluxului de execuție presupune alterarea fluxului normal de execuție a unui program.
- Aceasta se poate face prin suprascrierea unor pointeri de cod sau prin manipularea datelor pentru modificarea fluxului de execuție condiționat.
Relevanța deturnării fluxului de execuție pentru atacatori
- Atacatorii pot exploata deturnarea fluxului pentru a executa codul lor malitios.
Memory Leak / Memory Disclosure
- Memory leak este o problemă în care un program nu eliberează memorie alocată anterior.
- Memory disclosure este o problemă unde datele din memorie sunt accesibile de către părți neautorizate.
- Acestea (leak / disclosure) sunt relevante pentru atacatori datorită accesului la informații sau comportament periculos alocat dinamic.
Împărțire spațiu virtual de adrese (kernel / user space)
- Împărțirea spațiului de adrese virtuale în kernel space și user space este preferată pentru securitate.
- Kernel space este protejat de user space, prevenind accesul neautorizat și atacuri.
Excepții de acces la memorie (Segmentation fault)
- Secvențe de cod C care accesează memorie invalidă pot provoca excepții de acces la memorie (segmentation fault).
- Exemplu: acces la memorie din afara limitelor unui buffer.
Funcții vs. Variabile
- Funcțiile conțin cod executabil, în timp ce variabilele conțin date.
- Ele sunt stocate în zone diferite ale spațiului de memorie al unui proces.
Procesele partajează o zonă de memorie
- Procesele partajează o zonă de memorie prin utilizarea mecanismelor de partajare a memoriei de către SO.
- Acest lucru se reflectă în tabelele de pagini ale celor două procese prin mecanismele de partajare a paginilor.
Memorie fizică vs. spațiu virtual
- Memorie fizică este mai mică decât spațiul de adrese virtual.
- Se pot accesa mai multe date în memorie fizică decât dimensiunea maximă a spațiului virtual al unui proces.
Alocarea statică vs. dinamică a memoriei
- Alocare statică: variabilele declarate global, memorie rezervată la compilare.
- Alocare dinamică: variabile alocate în timpul rulării unui program prin functii ca malloc, calloc, realloc.
Variabile modificate în procesul copil
- Modificările variabilelor unui proces copil sunt izolate de procesul părinte, dacă nu se folosesc mecanismele de partajare.
Loader (rol și funcționalitate)
- Loaderul încarcă codul executabil într-un proces.
- De asemenea el rezolvă referințele către biblioteci, identifică datele necesare și configurează mediul necesar execuției.
mprotect()
mprotect()
permite modificarea setărilor de acces la un segment de memorie.- Se poate folosi pentru bypass-uri de securitate.
Variabile globale inițializate la 0
- Variabilele globale inițializate la 0 sunt stocate în secțiunea
.data
a unui executabil.
Necesitatea proceselor și thread-urilor
- Procese sunt independente, thread-urile execută în cadrul unui proces.
- Thread-urile sunt utile pentru partajarea resurselor și eficiență.
Proces vs. thread
- Procesul este o execuție independentă.
- Thread-ul este o unitate de execuție din cadrul unui proces.
Spațiul de adrese la crearea unui thread
- Crearea unui thread nu modifică semnificativ spațiul de adrese al procesului.
Elemente comune și specifice thread-urilor
- Ele împart memoria heap, stack.
- Fiecare thread are un ID unic, variabile locale, și resurse specifice.
PCB (Process Control Block)
- Conține informații despre un proces, incluzând starea, identificatorul, prioritatea și lista de resurse asociate.
Stările unui thread
- RUNNING, READY, WAITING, BLOCKED, TERMINATED.
Apelul fork()
fork()
creează o copie a procesului existent.
Resurse partajate/nepartajate de către fork()
- Resursele partajate/nepartajate sunt determinate de natura resurselor (ex: memoria de referință).
Apelul exec()
- Înlocuiește codul unui proces cu un nou program, utilizat pentru a executa un alt executabil.
Număr thread-uri în stări diferite
- Numărul de thread-uri este dinamic și variază în funcție de execuție.
Schimbare de context
- Schimbarea de context este o operație efectuată de planificatorul sistemului de operare pentru a alterna execuția între diverse thread uri.
Cauze schimbare de context
- Apeluri sistem, evenimente externe, perioade fixe.
Schimbare de context voluntară/nevoluntară
- Voluntară: thread-ul renunță la procesor.
- Nevoluntară: thread-ul este oprit de planificator.
Thread-uri user-level / kernel-level
- User-level: gestionate de aplicatie.
- Kernel-level: gestionate de kernel.
TLS (Thread Local Storage)
- Zona TLS este utilizată de un thread pentru a stoca date specifice acelui thread.
Necesitatea sincronizării
- Sincronizarea împiedică conflictul accese la date împartate de thread-uri.
Race condition
- Race condition apar când mai mult de un thread acceseaza aceeasi resursa la fel de sincronizat.
Deadlock
- Deadlock apare atunci când două sau mai multe thread-uri se blochează reciproc, deoarece se asteapta unul de altul.
Dezavantaj ele sincronizării
- Overhead de procesare, complexitate program.
TOCTOU (time of check to time of use)
- TOCTOU apare atunci cand o conditie este verificata, si apoi e utilizata din nou, fara a fi actualizată.
Spinlock vs. mutex
- Spinlock: utilizat pentru secțiuni critice mici, folosește busy-waiting.
- Mutex: utilizat pentru secțiuni critice mai mari, utilizează blocare.
Operatorul '&' in shell
- Trimite comanda in background si nu asteapta terminarea executiei.
Proces zombie
- Proces încheiat, dar care nu a fost așteptat de către procesul părinte.
Proces orfan
- Proces al cărui proces părinte s-a terminat.
Rolul TLB
- TLB este o memorie cache a sistemului pentru tabele de pagini.
Intrarea în tabelă de pagini
- Conține informații despre pagina virtuală corespunzătoare unei pagini fizice.
Tabelă de pagini multi-nivel (ierarhică)
- Reduce spațiul cerut de tabele de pagini, prin împărțire.
Analiză statică / dinamică
- Analiză statică se face pe executabil.
- Analiză dinamică se face pe programul executat / in timpul runtime.
Stack Guard / Stack Smashing protection (SSP)
- SSP protejează împotriva atacurilor buffer overflow.
Stack canary
- Valoare care este suprascrisă în timpul unui atac.
ASLR (Address Space Layout Randomization)
- ASLR face adresele executabile din diferite locuri random in memorie la fiecare execuție.
PIE (Position Independent Executable)
- PIE face adresele executabile din diferite locuri random in memorie la fiecare execuție.
Control Flow Hijack
- Control flow hijack este alterarea fluxului normal de execuție a unui program.
Memory Leak / Memory Disclosure
- Memory leak este accesul necontrolat la memorie a datelor dintr-un proces.
Cod PIC (Position Independent Code)
- Cod PIC are adrese diferite la fiecare rulare.
FCB (File Control Block)
- Structură internă a sistemului de fișiere cu date despre un fișier.
Descriptor de fișier
- Număr întreg corespunzător unei intrări în tabela de descriptori de fișier.
Tabele de decriptori de fișiere
- Fiecare proces are propria tabelă.
Apelul dup()
- Duplică un descriptor de fișier.
Apelul close()
- Închide un descriptor de fișier.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Acest quiz abordează tehnici esențiale pentru prevenirea atacurilor de tip buffer overflow și analizele statice și dinamice ale executabilelor. Vei învăța despre concepte precum stack canary, TLB, și tabele de pagini, precum și despre importanța analizei bibliotecilor externe. Testează-ți cunoștințele și află cât de bine stăpânești aceste concepte fundamentale.