Cerca nel blog

2022/10/21

Le parole di Internet: fork bomb

Questo articolo è disponibile anche in versione podcast audio.

Due punti, aperta parentesi tonda, chiusa parentesi tonda, aperta parentesi graffa, spazio, due punti, barra verticale, due punti, E commerciale, spazio, chiusa parentesi graffa, punto e virgola, due punti.

Questi tredici caratteri, spazi compresi, sono tutto quello serve per mandare in crash quasi tutti i computer. Non importa se usate Windows, Linux o macOS: se digitate questa esatta sequenza di caratteri in una finestra di terminale o in una riga di comando, il vostro computer quasi sicuramente si bloccherà e sarà necessario riavviarlo, perdendo tutti i dati non salvati. Non è necessario essere amministratori del computer.

Ovviamente digitare questa sequenza di caratteri non è un esperimento da provare su un computer che state usando per lavoro o che non potete permettervi di riavviare bruscamente.

Ma come è possibile che basti così poco?

Quella sequenza di caratteri non è una falla recente: è un problema conosciuto da decenni e si chiama fork bomb o rabbit virus o ancora wabbit. Il primo caso di fork bomb risale addirittura al 1969. Non è neanche un virus: fa parte del normale funzionamento dei computer.

Semplificando in maniera estrema, ogni programma o processo che viene eseguito su un computer può essere duplicato, formando un processo nuovo che viene eseguito anch’esso. Questa duplicazione si chiama fork, nel senso di “biforcazione”. A sua volta, il processo nuovo può creare una copia di sé stesso, e così via.

Se si trova il modo di far proseguire questa duplicazione indefinitamente, prima o poi verranno creati così tanti processi eseguiti simultaneamente che il computer esaurirà le risorse disponibili, come la memoria o il processore, e quindi andrà in tilt, paralizzandosi per il sovraccarico e costringendo l’utente a uno spegnimento brutale e a un riavvio.

Questa trappola letale è stata per molto tempo un’esclusiva dei sistemi Unix e quindi anche di Linux, ma oggi esiste anche in macOS e in Windows 10 e successivi. Questi sistemi operativi, infatti, includono quella che si chiama shell bash, ossia un particolare interprete dei comandi (chiamato bash) usato anche dai sistemi Linux e Unix. Dare a questo interprete quei tredici caratteri è un modo molto conciso di ordinargli di generare un processo che generi un processo che generi un processo e così via.

Non è l’unica maniera di avviare questa reazione a catena: ce ne sono molte altre, anche per le vecchie versioni di Windows, ma questa è particolarmente minimalista.

:() definisce una funzione di nome ":" e il cui contenuto è quello che si trova fra le parentesi graffe

:|:& è il contenuto della funzione, ed è una chiamata alla funzione stessa (":"), seguita da un pipe (che manda l’output della funzione chiamata a un’altra chiamata della funzione ":") e da un ampersand (che mette in background la chiamata)

; conclude la definizione della funzione

: ordina di eseguire la funzione di nome ":"

È forse più chiaro se si usa bomba per dare un nome “normale” alla funzione e si usa una notazione meno ermetica:

bomba() {
  bomba | bomba &
}; bomba

Difendersi non è facilissimo per l’utente comune: ci sono dei comandi che permettono di porre un limite al numero di processi che è possibile creare, ma comunque non offrono una protezione perfetta. In alternativa, si può tentare di disabilitare la shell bash in Windows, ma le conseguenze possono essere imprevedibili.

In parole povere, il modo migliore per evitare una fork bomb è impedire che un burlone o malintenzionato possa avvicinarsi, fisicamente o virtualmente, alla tastiera del vostro computer.

Fonti aggiuntive: Apple, Cyberciti, Okta.

Nessun commento: