În lumea computerelor, anumite comenzi Ele pot părea inofensive la prima vedere, dar ascund o putere distructivă care, folosită cu răutate sau accidental, poate duce la ruină un întreg sistem. Dintre aceste comenzi, una dintre cele mai cunoscute – sau nu –, și de temut, este așa-zisa bombă cu furcă, sau bombă cu furcă.
O bombă cu furcă nu este altceva decât o formă de atac de tip denial-of-service (DoS). concepute pentru a consuma resursele disponibile de sistem, cum ar fi procesorul și memoria, până la punctul în care devine inutilizabil. Dacă te-ai întrebat vreodată cum funcționează această comandă, de ce poate fi atât de dăunătoare și ce pași poți lua pentru a te proteja, aici vei găsi tot ce trebuie să știi, explicat într-un mod accesibil și detaliat.
Ce este o bombă cu furcă?
O bombă cu furcă, cunoscută și sub numele de „virus iepure” datorită tendinței sale de a se replica exponențial, este o tehnică care folosește crearea în masă a proceselor pentru a satura un sistem operațională. Acest lucru se realizează printr-o comandă care utilizează funcția fork, disponibilă pe sistemele Unix și Linux. Funcția de furcă permite unui proces să creeze o copie exactă a lui însuși, cunoscut sub numele de proces copil.
Cea mai reprezentativă comandă asociată cu a bombă cu furcă este următorul:
: () {: |: &};:
Această comandă are o structură care, deși compactă, este incredibil de puternică. Ceea ce face este să definească o funcție numită :, care se numește recursiv, generând două noi procese în fiecare execuție datorită operatorului ţeavă | iar execuția în fundal cu &. Rezultatul este o creștere exponențială a proceselor care prăbușește sistemul în câteva secunde.
Cum funcționează o bombă cu furcă?
Comanda : () {: |: &};: Poate părea confuz la început, așa că haideți să o descompunem pas cu pas:
:
: Acest simbol reprezintă numele funcției. De fapt, poți folosi orice nume.() { }
: Această sintaxă definește funcția fără niciun parametru.:|:
: Odată definită, funcția se autoapelează și operatorul | își redirecționează rezultatul către o nouă instanță a lui însuși.&
: Acest simbol execută apeluri în fundal, permițând crearea simultană a proceselor.;
: Servește ca separator între definiția funcției și execuția inițială a acesteia.:
: În cele din urmă, acest ultim simbol execută funcția, care pornește cascada de procese.
Odată rulată, bomba cu furcă consumă rapid resursele de sistem, blocând capacitatea de a rula noi procese și de obicei forțând o repornire forțată a computerului.
Sisteme Vulnerabile
Practic orice sistem de operare bazat pe Unix sau Linux, cum ar fi Ubuntu, Debian sau Red Hat, este vulnerabil la o bombă fork, deoarece toate acestea folosesc apelul de sistem fork. Cu toate acestea, sistemele ferestre din Ei nu sunt vulnerabili la acest tip specific de atac, deoarece nu au o funcție echivalentă de furk. În schimb, pe Windows ar trebui să creați un set de procese noi într-un mod similar, dar acest lucru necesită o abordare mai complexă.
Exemple de Fork Bomb în diferite limbi
La bombă cu furcă Nu este exclusiv pentru Bash; Poate fi implementat în alte limbaje de programare. Iată câteva exemple:
Bombă cu furcă Python
#!/usr/bin/env python import os while True: os.fork()
Bombă cu furcă Java
public class Bomb { public static void main(final String[] args) { while (true) { Runtime.getRuntime().exec("java Bomb"); } } }
C Bombă cu furcă
#include int main(void) { while (1) { furk(); } }
Impactul unei bombe cu furci
Impactul principal al unei bombe cu furcă este supraîncărcarea sistemului. Resurse precum CPU, memoria și intrările de proces sunt consumate rapid, ceea ce face ca sistemul să devină instabil sau să nu răspundă. În cele mai multe cazuri, aveți nevoie de un repornire forțată pentru a recăpăta controlul. În plus, există un risc semnificativ de pierdere a datelor din cauza comportamentului brusc al aplicației în timpul dezastrului.
Măsuri de prevenire
Deși o bombă cu furcă poate fi devastatoare, Există modalități de a-i atenua impactul și chiar de a-l preveni. complet:
1. Limitați numărul de procese
Comanda limită În Linux, vă permite să setați o limită pentru numărul maxim de procese pe care un utilizator le poate crea. De exemplu:
ulimit -u 5000
Acest lucru limitează utilizatorul la un maxim de 5000 de procese active.
2. Configurați limite persistente
Pentru a aplica limite permanent, puteți modifica fișierul /etc/security/limits.conf
. De exemplu:
hard user nproc 5000
Acest lucru asigură că limitele persistă chiar și după ce utilizatorul se deconectează.
3. Utilizarea Cgroups
Pe sistemele Linux moderne, cgrupuri (grupurile de control) vă permit să stabiliți un control mai granular asupra resurselor sistemului, inclusiv asupra numărului de procesele permise.
Nu fiți atenți la ceea ce vedeți pe rețelele de socializare
Aceste tipuri de comenzi pot apărea pe rețelele de socializare ca o glumă practică, așa că trebuie să fim atenți și să nu introducem în terminal ceea ce ne spun. Fără să mergem mai departe, dacă punem „bombă cu furcă” în X, vedem un răspuns la o postare care spune „bună ziua, bombă cu furcă”. Postarea inițială, distribuită acum câteva momente, spune că există o pisică cu numele :(){ :|:& };: și că ai pus-o în terminal. Am explicat deja ce face, așa că nu o face.
Bomba cu furcă, deși simplă în concept, are un impact profund asupra sistemelor vulnerabile. Înțelegerea modului în care funcționează, a implicațiilor sale și a modalităților de atenuare este vitală pentru protejarea mediilor de calcul moderne. Este o reamintire a modului în care o simplă comandă poate duce la consecințe catastrofale și, de asemenea, a importanței unei administrări adecvate a sistemelor și a stabilirii limitelor de securitate.