Il Forum di Orebla.it

Benvenuto nella community di Orebla.it
Oggi è dom 08 dic, 2019 10:03 pm

Tutti gli orari sono UTC + 1 ora




Apri un nuovo argomento Rispondi all’argomento  [ 4 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: PHP 5.2.4 bug - ctime_r, asctime_r
Messaggio da leggereInviato: gio 06 set, 2007 7:47 pm 
Non connesso
super-guru
super-guru
Avatar utente

Iscritto il: mar 28 dic, 2004 6:54 pm
Messaggi: 300
Località: Pisa
Dedicandomi alla mia attività prediletta di bug hunter oggi mi sono dilettato a spulciare un po' il codice di PHP 5.2.4. Mi hanno insospettito queste due funzioni:

Codice:
PHPAPI char *php_asctime_r(const struct tm *tm, char *buf)
{
    char *tmp;

    local_lock(ASCTIME_R);

    tmp = asctime(tm);
    strcpy(buf, tmp);

    local_unlock(ASCTIME_R);

    return buf;
}

PHPAPI char *php_ctime_r(const time_t *clock, char *buf)
{
    char *tmp;

    local_lock(CTIME_R);

    tmp = ctime(clock);
    strcpy(buf, tmp);

    local_unlock(CTIME_R);

    return buf;
}


Non vorrei sparare una baggianata, ma sbaglio o la strcpy viene effettuata senza fare alcun controllo? Vabbè che la ctime() e l'asctime() in C ritornano sempre il tempo nello stesso formato e con la stessa lunghezza, ma non viene effettuato alcun controllo sulla stringa di destinazione buf, né tantomeno viene allocata della memoria tramite malloc(). Mi viene il dubbio che da queste parti possa celarsi un overflow. Sulla mia macchina purtroppo non ho modo di installare PHP 5.2.4. Se qualcuno di voi ce l'ha installato può provare a richiamare queste funzioni dall'interno del codice e passargli come buf una stringa lunga, non so, 2 caratteri e vedere che succede? (qui mi ci voleva shinnai...)

_________________
Immagine
Immagine


Top
 Profilo  
 
Messaggio da leggereInviato: sab 08 set, 2007 6:20 pm 
Non connesso
Amministratore
Amministratore
Avatar utente

Iscritto il: lun 27 dic, 2004 10:32 am
Messaggi: 2614
Località: Ferrara
Scusa ma non ho capito a che funzioni si riferiscono...
Io ce l'ho il PHP 5 se mi fai uno script di esempio ci provo subito!

_________________
I'm so happy because today
I've found my friends ...
They're in my head

[NIRVANA - LITHIUM]
Il Blog del disperato: http://blog.orebla.it


Top
 Profilo  
 
Messaggio da leggereInviato: sab 08 set, 2007 8:34 pm 
Non connesso
super-guru
super-guru
Avatar utente

Iscritto il: mar 28 dic, 2004 6:54 pm
Messaggi: 300
Località: Pisa
Da quanto ho visto non sono funzioni direttamente a disposizione dell'utente finale PHP (come una print o una split), ma sono dichiarate in main/reentrancy.c (nei sorgenti). Ci sarebbe da spulciare i sorgenti e vedere dove vengono richiamate, e vedere se in quel contesto effettivamente danno luogo ad overflow. In ogni caso così come sono sono un BoF abbastanza palese (non viene effettuato nessun controllo sulla lunghezza di buf e viene copiato alla cieca al suo interno con strcpy il contenuto di ctime()).

_________________
Immagine
Immagine


Top
 Profilo  
 
Messaggio da leggereInviato: lun 10 set, 2007 6:22 pm 
Non connesso
Amministratore
Amministratore
Avatar utente

Iscritto il: lun 27 dic, 2004 10:32 am
Messaggi: 2614
Località: Ferrara
Come è difficile la vita del big hunter... :D :D
Cavolo in questo periodo non ho un attimo di tempo... Spero di finire presto questo lavoro estivo, perchè voglio ridare tutto il mio tempo libero a queste cose!

_________________
I'm so happy because today
I've found my friends ...
They're in my head

[NIRVANA - LITHIUM]
Il Blog del disperato: http://blog.orebla.it


Top
 Profilo  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 4 messaggi ] 

Tutti gli orari sono UTC + 1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduzione Italiana phpBBItalia.net basata su phpBB.it 2010
phpBB SEO