I datorvärlden, vissa kommandon De kan verka ofarliga vid första anblicken, men de döljer en destruktiv kraft som, använd med uppsåt eller av misstag, kan leda till att ett helt system förstörs. Bland dessa kommandon är en av de mest kända – eller inte –, och fruktade, den sk gaffelbomb, eller gaffelbomb.
En gaffelbomb är inget annat än en form av denial-of-service (DoS) attack, utformad för att konsumera tillgängliga systemresurser, såsom CPU och minne, till den punkt där det blir oanvändbart. Om du någonsin har undrat hur det här kommandot fungerar, varför det kan vara så skadligt och vilka åtgärder du kan vidta för att skydda dig själv, här hittar du allt du behöver veta, förklarat på ett lättillgängligt och detaljerat sätt.
Vad är en gaffelbomb?
En gaffelbomb, även känd som ett "kaninvirus" på grund av dess tendens att replikera exponentiellt, är en teknik som använder massskapande av processer för att mätta ett system operativ. Detta uppnås genom ett kommando som använder gaffelfunktionen, tillgänglig på Unix- och Linux-system. Gaffelfunktionen tillåter en process att skapa en exakt kopia av sig själv, känd som en underordnad process.
Det mest representativa kommandot förknippat med en gaffelbomb är följande:
: () {: |: &};:
Detta kommando har en struktur som, även om den är kompakt, är otroligt kraftfull. Vad den gör är att definiera en funktion som kallas :, som kallar sig rekursivt och genererar två nya processer i varje exekvering tack vare operatören Röret | och utförandet i bakgrunden med &. Resultatet är en exponentiell tillväxt av processer som kollapsar systemet på några sekunder.
Hur fungerar en gaffelbomb?
Kommandot : () {: |: &};: Det kan verka förvirrande till en början, så låt oss dela upp det steg för steg:
:
: Denna symbol representerar namnet på funktionen. Egentligen kan du använda vilket namn som helst.() { }
: Denna syntax definierar funktionen utan några parametrar.:|:
: När den har definierats anropar funktionen sig själv och operatören | omdirigerar dess utdata till en ny instans av sig själv.&
: Denna symbol exekverar anrop i bakgrunden, vilket tillåter att processer skapas samtidigt.;
: Fungerar som en separator mellan definitionen av funktionen och dess initiala exekvering.:
: Slutligen exekverar denna sista symbol funktionen, som startar kaskaden av processer.
När gaffelbomben väl är igång förbrukar den snabbt systemresurser, blockerar möjligheten att köra nya processer och tvingar vanligtvis fram en tvingad omstart av datorn.
Sårbara system
praktiskt taget alla Unix- eller Linux-baserat operativsystem, som Ubuntu, Debian eller Red Hat, är sårbara för en gaffelbomb, eftersom alla dessa använder gaffelsystemanropet. Men systemen Windows De är inte sårbara för denna specifika typ av attack, eftersom de inte har en gaffelmotsvarande funktion. Istället skulle du på Windows behöva skapa en uppsättning nya processer på liknande sätt, men detta kräver ett mer komplext tillvägagångssätt.
Exempel på gaffelbomb på olika språk
La gaffelbomb Det är inte exklusivt för Bash; Det kan implementeras i andra programmeringsspråk. Här är några exempel:
Python gaffelbomb
#!/usr/bin/env python import OS medan True: os.fork()
Java gaffelbomb
public class Bomb { public static void main(final String[] args) { while (true) { Runtime.getRuntime().exec("java Bomb"); } } }
C Gaffelbomb
#omfatta int main(void) { while (1) { fork(); } }
Effekten av en gaffelbomb
Den huvudsakliga effekten av en gaffelbomb är överbelastning av systemet. Resurser som CPU, minne och processingångar förbrukas snabbt, vilket gör att systemet blir instabilt eller inte svarar. I de flesta fall behöver du en tvingad omstart att återta kontrollen. Dessutom finns det en betydande risk för dataförlust på grund av abrupt applikationsbeteende under katastrofen.
Förebyggande åtgärder
Även om en gaffelbomb kan vara förödande, Det finns sätt att mildra dess påverkan och till och med förhindra den. helt och hållet:
1. Begränsa antalet processer
Kommandot ulimit I Linux låter det dig sätta en gräns för det maximala antalet processer som en användare kan skapa. Till exempel:
ulimit -u 5000
Detta begränsar användaren till att ha maximalt 5000 aktiva processer.
2. Konfigurera beständiga gränser
För att tillämpa gränser permanent kan du ändra filen /etc/security/limits.conf
. Till exempel:
hårdanvändare nproc 5000
Detta säkerställer att gränserna kvarstår även efter att användaren loggat ut.
3. Användning av Cgroups
På moderna Linux-system, cgrupper (kontrollgrupper) låter dig skapa mer detaljerad kontroll över systemresurser, inklusive antalet tillåtna processer.
Var inte uppmärksam på vad du ser på sociala nätverk
Dessa typer av kommandon kan visas på sociala nätverk som ett praktiskt skämt, så vi måste vara försiktiga och inte skriva in vad de säger till oss i terminalen. Utan att gå längre, om vi sätter "gaffelbomb" i X, ser vi ett svar på ett inlägg som säger "hej, gaffelbomb." Det ursprungliga inlägget, som delades för några ögonblick sedan, säger att det finns en katt med namnet :(){ :|:& };: och att du lägger den i terminalen. Vi har redan förklarat vad det gör, så gör det inte.
Gaffelbomben, även om den är enkel i konceptet, har en djupgående inverkan på sårbara system. Att förstå hur det fungerar, dess konsekvenser och sätt att mildra det är avgörande för att skydda moderna datormiljöer. Det är en påminnelse om hur ett enkelt kommando kan leda till katastrofala konsekvenser, och även om vikten av korrekt systemadministration och att sätta säkerhetsgränser.