[ Home | Liste | F.A.Q. | Risorse | Cerca... ]


[ Data: precedente | successivo | indice ] [ Argomento: precedente | successivo | indice ]


Archivio: Giugno 2004 ml@sikurezza.org
Soggetto: Re: [ml] toth
Mittente: Marco.maccarini
Data: Mon, 28 Jun 2004 16:42:19 +0200 (CEST)
Preambolo per koba: dato che e' l'ultimo post che intendo fare su questo
thread e dato che non sono iscritto a devel@ ti prego di far passare
quest'ultima mia mail, grazie :)

Intanto volevo chiarire che la patch era per far funzionare quell'UNICO
caso, non voleva essere una patch giusta in generale o da applicare
definitivamente. Correggere i bug in modo definitivo e' compito tuo, non
mio.

Detto questo, io non sapro' cos'e' un TOCTOU, ma nemmeno il tuo tool lo
sa a quanto pare, vediamo un po' di esempi:

semplici chdir bypassano toth:

int main()
{
if (!access("filp", W_OK)) {
        chdir("../");
        chdir("toth");
        fopen("filp", "r+");
}
return 0;
}

rinominare il file e usare stat bypassa toth:

int main()
{
        struct stat stats;

        stat("filp", &stats);
        rename("filp", "filp1");
        if (stats.st_uid == getuid())
                fopen("filp1", "r+");

        return 0;
}

per non parlare dei link:
(ho provato solo con quelli simbolici, gli hard non mi ci metto nemmeno :))

int main()
{

        if (!access("READMElink", R_OK))
                fopen("README", "r+");

        return 0;
}

path assoluti e relativi bypassano toth:

        if (!access("/home/user/toth/README", R_OK))
                fopen("README", "r+");

addirittura basta un ./ davanti per mandare in panico toth:

        if (!access("./README", R_OK))
                fopen("README", "r+");

ah, sapete i pthread non piacciono a toth:

void prova() {

        if(!access("README", R_OK))
                open("README", "r+");
}

int main()
{
        pthread_t pt;

        pthread_create(&pt, NULL, (void *)prova, NULL);
        pthread_join(pt, NULL);

        return 0;
}

successivamente volevo provare con delle fork() ma dopo mi sono
chiesto: "perche' perdere tempo se so gia' il risultato?"...
Allora ho lasciato perdere...

E' usanza inoltre lavorare con gli handler, quando si fanno queste cose,
ma siccome ho visto che a te piacciono le cose alternative tipo 
fprintf(stdout, ...); forse forse capisco perche' lavori con i path.

detto questo saluto con affetto snagg :)

ciao
 
 --
 Email.it, the professional e-mail, gratis per te: http://www.email.it/f
 
 Sponsor:
 Smista, incollona e conta le monete Euro.
Indispensabile per il business il nuovo Contamonete Elettronico
 Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=2414&d=20040628






[ Home | Liste | F.A.Q. | Risorse | Cerca... ]

www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005