Ce este un Fork Bomb si cum functioneaza

Linux | Stefanescu Mihai | 2022-12-11

Exista mai multe comenzi periculoase pe care un utilizator le poate scrie in terminal si sa ii provoace un crash sau poate chiar mai rau, sa strice lucrurile.

Acestea fiind zise, cred ca este o idee buna sa povestesc despre anumite comenzi periculoase astfel incat sa le cunoasteti si sa nu le rulati.

Una dintre cele mai cunoscute comenzi periculoase este bineinteles aceasta

sudo rm -rf /

Ar trebui sa fie destul de clar ce face aceasta comanda pentru majoritatea utilizatorilor, dar totusi am sa incerc sa o explic.


sudo iti da drepturi de root
rm sterge un fisier
-r sterge in mod recursiv
f vine de la force
/ se refera la root-ul sistemului de operare

Astfel incat, comanda asta o sa inceapa de la root si o sa stearga in mod recursiv toate fisierele din sistem.
Referitor la structura sistemului de fisiere din linux recomand acest articol.

Evident aceasta comanda este destul de periculoasa, dar cred ca distributiile moderne nu iti permit sa rulezi aceasta comanda fara sa te intrebe cel putin inca o data daca esti sigur ca vrei sa o rulezi.

:(){:|:&};:

Alta comanda periculoasa care este de fapt un fel de atac DDOS este Fork Bomb-ul. Fork bomb-ul este un script de shell, dar poate fi scris in orice limbaj, care poate fi executat pe sistem.
Fork Bomb-ul porneste fork-uieste in continuare un proces pana cand masina ta ramane fara memorie si esti nevoit sa o restartezi.
Porneste de la 1 proces, il forkuieste si ajunge sa aiba 2 procese, apoi fiecare dintre aceste procese este fork-uit si ajungem sa avem 4 procese si tot asa.

Dupa cum spuneam, un fork bomb poate fi scris in orice limbaj, de fapt chiar am gasit acest repository cu fork bomb-uri in mai multe limbaje.

Cred ca una dintre cele mai folosite fork bomb-uri este aceea scrisa in shell, pe care cel mai probabil ai mai vazut-o pe internet :(){:|:&};:

Dupa cum puteti observa, acest fork bomb este interesant pentru ca esti compus doar din caractere speciale, fara text, ceea ce o face mai greu de inteles, mai ales daca nu stii shell scripting.

Hai sa explicam cum functioneaza.
Pornind de la comanda scrisa putin mai sus, am sa incerc sa o aranjez putin ca sa ne ajute sa intelegem.

: () {
	:|: &
};
:

Dupa cum putem observa, acum ca este aranjata putin mai frumos, forkbomb-ul nostru incepe sa arate ca o function si de fapt chiar asta, o functie cu numele :, care dupa ce este definita esti si rulata (vezi : de pe randul 4)

Acum, ce face de fapt aceasta functie, se apeleaza pe sine insusi si trimite rezultatul tot care ea, creeand inca un proces, iar & ii spune sa tine acel proces in background creean o bucla infinita in care la fiecare rulare mai creeaza un proces si tot asa.

Apoi, dupa inchiderea functiei avem ; care este folosit strict pentru ca este folosita inline si marcheaza inchiderea primei parti a scriptului si urmeaza a doua, daca scriptul era aranjat, cum e mai sus, nu mai aveam nevoie de acel ;.

Asta este toata explicatia, un forkbomb nu este chiar atat de complicat dupa cum vezi.

Sper ca acest articol ti-a fost util si ai invatat ceva.

 


Imi place ce faci aici
Daca iti place ce fac aici imi poti cumpara o cafea Buy Me a Coffee at ko-fi.com

Stefanescu Mihai
Programator de ~8 ani, am lucrat la proiecte din mai multe industrstrii, de la eCommerce la telecomunicatii la automatizari. In acest timp am folosi diferite tehnologii, de la PHP, MySQL, PostgreSql, RabbitMq, Redis, Memcached si altele.
       

Get in touch
Pentru nelamuriri, dubii, comentarii si chestii de pe suflet ne putem auzi pe Discord, Reddit sau poti deschide o discutie noua pe forum.

Posteaza un comentariu

Comentarii

ovi_cluj
ovi_cluj | 2023-03-26 06:41
Ma asteptam ceva Ms-Dos : gen " format c: " sau "fdisk /mbr' Da is bune si astea :p Da-le idei la hackeri-crackeri cu Dos sa faca si flood in retea sau Lan gen: https://en.wikipedia.org/wiki/Denial-of-service_attack

Club-ul este dedicat membrilor si ofera access la mai multe zone ale website-ului.

🗝ïļ Login 🌟 Register

🔖 Bookmarks ⊞
âœĻ Pentru a sustine aceasta comunitate am sa te rog sa te autentifici sau sa te inregistrezi!

🌊ïļ Discord ⊞

Folosim cookie-uri pentru a oferi functionalitatile critice ale aplicatiei Invata-Programare. Folosim cookie-uri si pentru a analiza traficul, pentru care e nevoie de consimtamantul dvs. explicit.

⮆ïļ