Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di pilovis
    Registrato dal
    Mar 2001
    Messaggi
    3,273

    Scoperta gravissima vulnerabilita' in bash (Linux, BSD, Mac OSx)

    Ultima modifica di pilovis; 27-09-2014 a 00:10
    Progettista elettronico, appassionato di informatica dal 1982, sistemista Linux dal 2002, sono consulente tecnico del Giudice per le indagini preliminari, valuto richieste di consulenza, in ambito Voip/Telefonia anche con grado di sicurezza militare.

  2. #2
    La cosa allucinante non è che sia vulnerabile, ma il fatto che qualcuno abbia pensato che fare l'eval a caso di tutte le variabili d'ambiente fosse una buona idea...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    La cosa allucinante non è che sia vulnerabile, ma il fatto che qualcuno abbia pensato che fare l'eval a caso di tutte le variabili d'ambiente fosse una buona idea...
    erano altri tempi...
    http://paste.lisp.org/display/143864
    Ultima modifica di andrea.paiola; 27-09-2014 a 16:55

  4. #4
    Quote Originariamente inviata da andrea.paiola Visualizza il messaggio
    Mah, il solo fatto che il tizio dica che secondo lui è un baco di Apache non filtrare le variabili d'ambiente la dice lunga... Che, adesso Apache deve sapere delle paturnie di ogni possibile shell/interprete e filtrare di conseguenza? Non diciamo cazzate, non si fa l'eval di cose a caso, punto, cercare di risolvere il problema con filtri a livello di web server sarebbe lo stesso approccio delle atroci magic_quotes di PHP.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Mah, il solo fatto che il tizio dica che secondo lui è un baco di Apache non filtrare le variabili d'ambiente la dice lunga... Che, adesso Apache deve sapere delle paturnie di ogni possibile shell/interprete e filtrare di conseguenza? Non diciamo cazzate, non si fa l'eval di cose a caso, punto, cercare di risolvere il problema con filtri a livello di web server sarebbe lo stesso approccio delle atroci magic_quotes di PHP.
    beh ma scusa io non lo considererei sicuro un sistema che ti permette da remoto e senza controlli di settare variabili d'ambiente... e più che Apache sarebbe PHP, in questo caso.
    Poi certo sarebbe ottimo controllare le variabili d'ambiente quando le usi, ma in prima istanza non le farei settare.
    Comunque ripeto: semplicemente non si aspettavano che altri software usassero Bash in quel modo.
    Ultima modifica di andrea.paiola; 28-09-2014 a 09:34

  6. #6
    Quote Originariamente inviata da andrea.paiola Visualizza il messaggio
    beh ma scusa io non lo considererei sicuro un sistema che ti permette da remoto e senza controlli di settare variabili d'ambiente...
    Non è che da remoto puoi settare variabili d'ambiente a caso, CGI specifica esattamente quali. L'imprudenza è di bash che cicla sulle variabili e fa l'eval di qualunque cosa che assomiglia ad una funzione, è andarsi a cercare rogne.
    e più che Apache sarebbe PHP, in questo caso.
    PHP era un esempio di soluzione sbagliata ad un problema di sicurezza. Se (come fa il tizio di quell'articolo) chiedi che ti vengano escapati a monte dei dati vuol dire che hai già perso, dato che:
    1) significa che a valle non sai distinguere dati da codice, la madre di tutti i problemi di sicurezza (vedi SQL injection, un non-problema che deriva dalla gestione intrinsecamente sbagliata che i programmatori incompetenti fanno dei dati delle query SQL);
    2) stai cercando di risolvere il problema nel posto sbagliato, visto che puoi fare l'escaping solo per un determinato linguaggio (PHP lo fa(ceva) per SQL, Apache secondo questa logica malata lo avrebbe dovuto fare per bash), quando a valle potrebbe esserci qualunque cosa: uno script CGI può essere scritto in qualunque linguaggio, e Apache non può saperlo a priori, a meno di non andarsi a guardare lo shebang e introdurre escape differenti a seconda del linguaggio - pura follia; si riproporrebbe appunto il problema delle "magic quotes", per cui ti ritrovi roba escapata per un caso d'uso specifico, e in tutti gli altri casi devi de-escaparla per riottenere i dati originali.
    Poi certo sarebbe ottimo controllare le variabili d'ambiente quando le usi, ma in prima istanza non le farei settare.
    No, non le devi controllare, devi semplicemente farti gli affari tuoi e non cercare di fare l'eval di cose a cazzo, punto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    ma cosa fa il comando:

    codice:
    env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

    e quali danni puo' fare ?

  8. #8
    Quote Originariamente inviata da sacarde Visualizza il messaggio
    ma cosa fa il comando:

    codice:
    env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

    e quali danni puo' fare ?
    mi pare testi semplicemente la vulnerabilità e nel caso positivo riporti Bash is vulnerable!

  9. #9
    ma

    codice:
    env VAR='() { :;};
    che fa? sembra un forkbomb

  10. #10
    Quote Originariamente inviata da sacarde Visualizza il messaggio
    ma

    codice:
    env VAR='() { :;};
    che fa? sembra un forkbomb
    la vulnerabilità è appunto non fare il parsing e quindi l'escape corretto (teorico, visto che come ho scritto è considerata una feature di Bash... Bash si aspetta che gli vengano passate variabili già controllate) delle variabili d'ambiente al subprocess... questo certo è in comune con molti forkbomb

    So, we're in the context of designing a unix shell, where subprocesses are created and run in a casual and normal manner. When creating a new subprocess, environment variables can be used to pass some data from the parent process to the child process. In the case of bash, it is a feature that has been wanted, to have some functions defined in the parent bash process also be transmitted and defined in the child bash process. Using environment variables to pass the definition of those functions is natural.

    Where the implementation slightly went beyond the specifications, is that it also executes any command present after the definition of the function passed in an environment variable. Since it's usually the bash program which generates the value of the environment variables used to pass those functions, there's normally no further command. But in the context where bash was designed, if a user added commands to such environment variables, it could be still considered a feature. In any case, the child process is executed on behalf of the user who configured the environment variable, so there's no security consideration to matter.
    Ultima modifica di andrea.paiola; 27-09-2014 a 17:17

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.