În această dimineaţă am citit un post care descrie o vulnerabilitate aparentă de sisteme Linux. Aceasta este de fapt o secvenţă de caractere care - în cazul în care a lansat din linia de comandă - creează o buclă infinită, rezultând în saturaţie de bloc RAM şi CPU. Deci, acest lucru nu este un deficit de Linux, ci o eroare evidentă logică a celor care arunca şir de bash pe orice sistem de operare care este prevăzut. Autorul a postului sugerează, totuşi, cea mai simplă şi eficientă pentru a depăşi efectele script microscopice, dar periculos.

Poate acest articol pot fi utile pentru a reduce tonuri oarecum "apologetice cu care El laudă sistemul de operare de oţel GNU / Linux: există o secvenţă de caractere pe care puţini, dacă tastate in terminal, trimite întregul sistem într-un haos. Aici este codul ofensatoare:

: () { : | : & };: Cum se poate acest şir de scurtă şi enigmatică pot provoca haos, cum? În realitate, ceea ce se întâmplă este destul de normal şi explicaţia, pentru cei cu script bash alfabetizare, este după cum urmează: funcţiile din bash.

Funcţiile din bash, sunt declarate cu sintaxa:
nomeFunzione() { comando1; comando2; ... comandoN; } nomeFunzione() { comando1; comando2; ... comandoN; } şi sunt invocate de către tastând numele lor şi în controalele normale. Astfel, de exemplu, codul de mai jos:
saluta(){ echo "ciao"; };saluta , care nu declara funcţia salută, el tipăreşte cuvântul Bine ai venit pe terminal, şi-l invoca. Funcţia Codul de ofensatoare este numit: (colon).

Ei bine, da, deşi este un nume deosebit de exotic juridic pentru o caracteristică bash.

După cum se poate vedea acum, în acest context, functia (o dată numit) se solicită şi redirecţionează de ieşire de la un alt invocarea de sine, prin conducta (bară verticală). Dacă nu ştiţi conducta, pe care nu este nevoie să locuiască în detaliu, în scopul de explicaţii (şi pe care există o documentaţie amplă, la rândul său), ştiu doar că se va deschide în paralel între cele două comenzi care apar, astfel încât Cod: |: apare în funcţia de organism de două ori şi invocă faptul că funcţionează în paralel, dând naştere la o recursivitate (dublu).

În cele din urmă, şi plasat la sfârşitul comenzii are efectul de a rula în fundal.

Acum: Atunci când funcţia este lansat, se recomandă de două ori, în paralel, rezultand intr-o bifurcaţie (furculiţă), fiecare dintre cele două bifurcaţii, la rândul său, desparte, şi aşa mai departe. Faptul că funcţiile sunt rula în fundal asigură că o terminandone (de exemplu, cu comanda kill), cei care le-aţi creat (astfel încât cele două bifurcaţii şi descendenţii acestora) nu va fi reziliat, la rândul lor, aşa cum ar fi în mod normal. Acest funcţii de pornire de neoprit, care purcede exponenţial, în cele din urmă să satureze de resurse (procesor si memorie), şi după un timp "ajunge, îngheţarea sistemului.

Antidot. Pentru mai multe timid: antidot pentru aceste bombe de furcă şi nu este de a pune pur şi simplu o limită a numărului de procese pot fi început de către un utilizator.

Original Post:

http://www.tuxbay.org/index.php?option=com_content&task=view&id=152&Itemid=1

Partajaţi acest conţinut:
  • del.icio.us
  • Google Bookmarks
  • Digg
  • Facebook
  • Technorati
  • MySpace
  • Twitter