Vuoi un invito a Google Wave?
Clicca qui e richiedilo!

Menu

http://www.tuxbay.org/images/menu/home1.gif

http://www.tuxbay.org/images/menu/progetto1.gif

http://www.tuxbay.org/images/menu/cerca1.gif

http://www.tuxbay.org/images/menu/archivio1.gif

http://www.tuxbay.org/images/menu/collegamenti1.gif

http://www.tuxbay.org/images/menu/contattaci1.gif

Statistiche

OS : Linux n
PHP : 5.2.8
MySQL : 5.0.45
Ora : 00:31
Caching : Attivato
GZIP : Disattivato
Utenti : 136
Contenuti : 294
Indirizzi internet : 40
Hits visite contenuti : 644521
JoomlaWatch Stats 1.2.7 by Matej Koval

Countries

88.7%ITALY ITALY
4.3%UNITED STATES UNITED STATES
1.3%UNITED KINGDOM UNITED KINGDOM
0.8%GERMANY GERMANY
0.6%IRELAND IRELAND

Visitors

Last week: 277
This month: 1181
Total: 33215


 81 visitatori online
http://www.tuxbay.org/
Hardware
Internet
Linux
News
Software
Varie
 
Linux esplode | Hack 3 :: Attack 3 Stampa E-mail
Linux - Hack attack
Scritto da Edoardo   
Lunedì 10 Marzo 2008 12:15

http://tuxbay.org/images/articles/glider.jpg

Forse questo articolo può essere utile per smorzare un po' i toni apologetici con cui si decanta l'inossidabile sistema operativo GNU/Linux: esiste infatti una sequenza di pochi caratteri che, se digitata nel terminale, manda l'intero sistema in tilt. Ecco a voi il codice incriminato...

 

: () { : | : & };:

Com'è possibile che questa breve ed enigmatica stringa possa creare tanto scompiglio? In realtà ciò che succede è abbastanza normale e la spiegazione, per chi ha un'alfabetizzazione di bash script, è la seguente.


Le funzioni in bash
Le funzioni, in bash, vengono dichiarate con la sintassi:

nomeFunzione() { comando1; comando2; ... comandoN; }

e vengono invocate scrivendo il loro nome, come dei normali comandi. Quindi, ad esempio, il seguente codice:

saluta(){  echo "ciao"; };saluta

non fa che dichiarare la funzione saluta, la quale stampa sul terminale la parola ciao, ed invocarla. Nel codice incriminato la funzione si chiamava : (due punti). Ebbene sì: nonostante sia particolarmente esotico è un nome legale per una funzione bash.

Come si potrà osservare ora, alla luce di quanto detto, la funzione (una volta invocata) richiama sè stessa e reindirizza il proprio output in un'altra invocazione di sè stessa tramite la pipe (barra verticale). Se non conoscete le pipe, su cui non è il caso di soffermarsi approfonditamente ai fini della spiegazione (e su cui si trova ampia documentazione in giro), basti sapere che hanno l'effetto di aprire in parallelo i due comandi tra cui compaiono; quindi il codice : | : che figura nel corpo della funzione invocherà due volte e parallelamente la funzione stessa, dando vita ad una (doppia) ricorsione.

In ultimo, la & posta alla fine del comando ha l'effetto di eseguirlo in background.

Dunque: quando la funzione viene lanciata, invoca sè stessa due volte in parallelo creando quindi una biforcazione (fork), ognuna delle due biforcazioni si sdoppia a sua volta, e via discorrendo. Il fatto che le funzioni vengano lanciate in background garantisce che terminandone una (ad esempio con il comando kill), quelle da lei create (quindi le due biforcazioni e le loro discendenti) non verranno terminate a loro volta come avverrebbe normalmente. Questo inarrestabile avvio di funzioni, che procede esponenzialmente, finisce per saturare le risorse (CPU e memoria) e dopo un po' di tempo sopraggiunge il congelamento del sistema.
 
http://upload.wikimedia.org/

img http://upload.wikimedia.org/ 

L'antidoto.
Per i più timorosi: l'antidoto per queste fork bomb esiste e consiste semplicemente nel porre un limite al numero di processi avviabili da un utente.


Add this page to your favorite Social Bookmarking websites
Reddit! Del.icio.us! Mixx! Free and Open Source Software News Google! Live! Facebook! StumbleUpon! TwitThis Joomla Free PHP
 

Aggiungi commento


Codice di sicurezza
Aggiorna

 
La toolbar di tuxbay.org
http://www.andromedafree.it/ Nuove stazioni TV!

http://www.tuxbay.org/images/toolbar.gif

Clicca qui per configurarla! Non vedi i canali televisivi? Clicca qui per risolvere il problema
Translate