Azzurra IRC Network Forum

services 2.2.0 patch1

snagg · 04/11/2005 19:24 · #1
Salve oggi sono stati upgradati i servizi con una nuova patch che poneva rimedio a due problemi:
1)Errore di visualizzazione dei cloni v6
2)Alta predicibilità degli auth code generati dai services (Es: il codice di autorizzazione per registrare i nick)

Presto verranno apportate nuove modifiche ai servizi, invito chiunque trovi dei bug (magari fornendo anche delle patch) a segnalarli a devel@azzurra.org

Snagg
Mav · 04/11/2005 19:42 · #2
inc/macros.h:#define getrandom(min, max) ((rand() % (unsigned long int)(((max)+1) - (min))) + (min))
src/nickserv.c:callerUser->ni->auth = callerUser->ni->time_registered + (getrandom(1, 99999) * getrandom(1, 9999));

Confrontiamoci liberamente... è il bello dell'open source...

Uhm... diciamo che uno ha circa 99.999*9.999 = 999.890.001 tentativi... insomma... circa un miliardo di tentativi... provandone uno al secondo fanno grossomodo 31 anni (approssimando per difetto, 31 anni = 31*365*24*60*60 = 977.616.000 secondi) per provarli tutti. Se poi consideriamo che i servizi killano per flood... forse l'unico che poteva guessare gli auth-code era... uhm... Giucas Casella o il mago Silvan?

Insomma... su quale base hai (o avete) ritenuto che gli AUTH code erano facilmente guessabili?

Mi rispondo da solo: sul srand(NOW) che viene usato per seedare il rand().

(Tralasciando le disquisizioni sulla pericolosità di autorizzare un nick con un'email inesistente, che è il massimo danno che è possibile fare guessando un AUTH code...)
snagg · 04/11/2005 20:01 · #3
Ora se il seed e` sempre lo stesso io posso predire sempre e comunque il codice che ne viene fuori. Concordiamo su questo?


Se tu avessi letto la modifica al mio post invece di replare a cannone avresti visto che concordiamo su questo. O no? Se poi vuoi vedere flame ovunque... dimenticavo che sei infallibile, faccio umilmente ammenda. :)
Mav · 04/11/2005 20:17 · #4
Ok... forse oltre al rank di services coder dovevate togliermi anche lo status di moderatore di quest'area... :sospiro:
snagg · 04/11/2005 20:18 · #5
Se tu avessi letto la modifica al mio post invece di replare a cannone avresti visto che concordiamo su questo. O no? Se poi vuoi vedere flame ovunque... dimenticavo che sei infallibile, faccio umilmente ammenda. :)

Se tu evitassi di cambiarmi i post poi te ne sarei tanto grato. Comunque riposto giusto per correttezza:

L'opensource è bello quando si evita di flammare e si sa quello che si dice evitando di sputare sentenze. Comunque:
#include <stdio.h>
#define getrandom(min, max) ((rand() % (unsigned long int)(((max)+1) - (min))) + (min))
int main()
{
int i;

for(i = 0 ;i < 10; i++)
{
srand(i);

printf("%d\n", getrandom(1, 99999) * getrandom(1, 99999));
}

return 0;
}
Ora se il seed e` sempre lo stesso io posso predire sempre e comunque il codice che ne viene fuori. Concordiamo su questo?
hesiod:~ snagg$ ./a.out
990915340
1312267792
1887415020
1725541684
826647784
-995685308
57765892
821071567
670862802
705523334
hesiod:~ snagg$ ./a.out
990915340
1312267792
1887415020
1725541684
826647784
-995685308
57765892
821071567
670862802
705523334
hesiod:~ snagg$
Semplicemente il srand() non e` stato inizializzato con time() ma con una funzione che prende un numero pseudo-random da /dev/urandom

Quanto credi che riuscirà a rimanere così il mio post Mav?
Azzurra · 04/11/2005 20:18 · #6
Leggo sul post di snagg:
Ultima modifica di Mav Oggi alle ore 20:06.

Sarebbe opportuno modificare i propri post e non quelli degli altri utenti sfruttando una dimenticanza dell'admin del forum. La dimenticanza sta appunto nel non aver tolto Mav moderatore di questa sezione.

Errore corretto e thread chiuso.
Saluti.